Program management
Create, delete, rename, run, pause, abort programs and manage their attributes (comment, owner, subtype) via CGTP.
CGTP provides rich program management features: create, delete, rename, run, pause, configure program properties, list programs, and edit source code.
List programs
Retrieve all TP or Karel programs on the controller, filtered by type and sub-type. You can also list all TP programs at once, regardless of their sub-type.
// List all TP programs on the controller (all sub-types)string[] allTpPrograms = robot.Cgtp.ListTpPrograms();foreach (string prog in allTpPrograms){Console.WriteLine(prog);}// List TP programs of a specific sub-typestring[] jobs = robot.Cgtp.ListPrograms(CgtpProgramType.Tp, CgtpProgramSubType.Job);string[] macros = robot.Cgtp.ListPrograms(CgtpProgramType.Tp, CgtpProgramSubType.Macro);// List Karel programsstring[] karelPrograms = robot.Cgtp.ListPrograms(CgtpProgramType.Karel, CgtpProgramSubType.None);
Source code editing
Insert, replace, or delete lines in a TP program directly on the controller. Requires firmware V9.10+.
// Insert a new line before line 3 in program MY_PROGRAMrobot.Cgtp.InsertSourceLine("MY_PROGRAM", "L P[5] 100mm/sec FINE", 3);// Replace the content of line 5robot.Cgtp.ReplaceSourceLine("MY_PROGRAM", "J P[1] 50% FINE", 5);// Delete 2 lines starting at line 4robot.Cgtp.DeleteSourceLines("MY_PROGRAM", 4, 2);// Delete a single linerobot.Cgtp.DeleteSourceLines("MY_PROGRAM", 1);
Run a program
Run a specific program starting from a given line (default: line 1). Requires firmware V9.30+.
// Run program from line 1robot.Cgtp.RunProgram("MY_PROGRAM");// Run from a specific linerobot.Cgtp.RunProgram("MY_PROGRAM", lineNum: 10);// Select a programrobot.Cgtp.SelectProgram("MY_PROGRAM");// Change the currently active programrobot.Cgtp.ChangeActiveProgram("MY_PROGRAM");// Abort a specific taskrobot.Cgtp.AbortTask("MY_PROGRAM");// Pause all running programsrobot.Cgtp.PauseAllPrograms();
Create a program
// Create a programrobot.Cgtp.CreateProgram(progName: "NEW_PROG",owner: "UnderAutomation",comment: "Created via CGTP",defaultGroup: 1,subType: CgtpProgramSubType.Job);// Deleterobot.Cgtp.DeleteProgram("OLD_PROG");// Renamerobot.Cgtp.RenameProgram("OLD_NAME", "NEW_NAME");// Program propertiesstring comment = robot.Cgtp.GetProgramComment("MY_PROGRAM");robot.Cgtp.SetProgramComment("MY_PROGRAM", "Updated comment");string owner = robot.Cgtp.GetProgramOwner("MY_PROGRAM");robot.Cgtp.SetProgramOwner("MY_PROGRAM", "Admin");int stack = robot.Cgtp.GetProgramStackSize("MY_PROGRAM");robot.Cgtp.SetProgramStackSize("MY_PROGRAM", 200);robot.Cgtp.SetProgramIgnorePause("MY_PROGRAM", true);robot.Cgtp.SetProgramWriteProtect("MY_PROGRAM", true);robot.Cgtp.SetProgramSubType("MY_PROGRAM", CgtpProgramSubType.Macro);
Available sub-types: None, Job, Process, Macro, Condition.
Pause, abort, resume, get and set attributes
CGTP allows you to completely manage programs on the robot, including creation, deletion, renaming, and execution control. Here's a complete example demonstrating these features:
// Run a programrobot.Cgtp.RunProgram("MY_PROGRAM");// Run from a specific linerobot.Cgtp.RunProgram("MY_PROGRAM", lineNum: 10);// Select a programrobot.Cgtp.SelectProgram("MY_PROGRAM");// Abort a taskrobot.Cgtp.AbortTask("MY_PROGRAM");// Pause all programsrobot.Cgtp.PauseAllPrograms();// Create a programrobot.Cgtp.CreateProgram(progName: "NEW_PROG",owner: "UnderAutomation",comment: "Created via CGTP",subType: CgtpProgramSubType.Job);// Delete a programrobot.Cgtp.DeleteProgram("OLD_PROG");// Rename a programrobot.Cgtp.RenameProgram("OLD_NAME", "NEW_NAME");// List all TP programsstring[] programs = robot.Cgtp.ListTpPrograms();// Edit source code (firmware V9.10+)robot.Cgtp.InsertSourceLine("MY_PROGRAM", "L P[5] 100mm/sec FINE", 3);robot.Cgtp.ReplaceSourceLine("MY_PROGRAM", "J P[1] 50% FINE", 5);robot.Cgtp.DeleteSourceLines("MY_PROGRAM", 4, 2);// Read program propertiesstring comment = robot.Cgtp.GetProgramComment("MY_PROGRAM");string owner = robot.Cgtp.GetProgramOwner("MY_PROGRAM");bool ignorePause = robot.Cgtp.GetProgramIgnorePause("MY_PROGRAM");// Write program propertiesrobot.Cgtp.SetProgramComment("MY_PROGRAM", "Updated comment");robot.Cgtp.SetProgramSubType("MY_PROGRAM", CgtpProgramSubType.Macro);
API reference
Members of Cgtp.CgtpProgramType :public enum CgtpProgramType {// Karel programKarel = 2// TP programTp = 1}
public enum CgtpProgramSubType {// Condition handler program.Condition = 4// Job program.Job = 1// Macro program.Macro = 3// No specific sub-type.None = 0// Process program.Process = 2}