How to control PlanetCNC TNG from your own software
Command line arguments
PlanetCNC TNG accepts commands from command line. Only one software instance can run at same time. When you run second instance it will simply pass its arguments to running instance. Running instance will process these arguments and execute command.
Here are some examples (Windows, 64bit):
1. Open command prompt.
2. Go to PlanetCNC TNG installation folder. Usually “C:Program Files (x86)PlanetCNC”.
3. Type PlanetCNC64.exe. Software will start.
4. Type PlanetCNC64.exe gcode “G01 X10G01 Y10”. You will notice that two g-code lines are now loaded.
5. Type PlanetCNC64.exe start. Machine will start and g-code will be executed.
Named pipes
More advanced option is to use named pipes. Named pipes is simple cross-platform interprocess communication mechanism. It is possible to use named pipes in almost all programming languages.
PlanetCNC TNG must be running otherwise it will not receive command. If you do not want to show main window you can start software with “hide” command.
Here is source code of an example (Windows, C++):
PipeExample
List of supported commands
Both options described above use same commands. Here is a list and brief explanation.
show Shows main window hide Hides main window exit Exits program estop Toggles EStop start Performs Start stop Performs Stop pause Performs Pause isestop Returns 1 if EStop is active, 0 otherwise ispause Returns 1 if Pause is active, 0 otherwise open "filename" Opens GCode from file gcode "program" Opens GCode from string close Closes opened GCode mdi "command" Executes MDI command param name=value Sets parameter value param name Returns parameter value posabs Returns absolute position for all axes posabsx Returns absolute position for X axis posabsy Returns absolute position for Y axis posabsz Returns absolute position for Z axis posabsa Returns absolute position for A axis posabsb Returns absolute position for B axis posabsc Returns absolute position for C axis posabsu Returns absolute position for U axis posabsv Returns absolute position for V axis posabsw Returns absolute position for W axis pos Returns position for all axes posx Returns position for X axis posy Returns position for Y axis posz Returns position for Z axis posa Returns position for A axis posb Returns position for B axis posc Returns position for C axis posu Returns position for U axis posv Returns position for V axis posw Returns position for W axis speed Returns current speed accel Returns current acceleration spindle Returns current spindle RPM input Returns value of INPUT input1 Returns value of INPUT 1 pin input2 Returns value of INPUT 2 pin input3 Returns value of INPUT 3 pin input4 Returns value of INPUT 4 pin input5 Returns value of INPUT 5 pin input6 Returns value of INPUT 6 pin input7 Returns value of INPUT 7 pin input8 Returns value of INPUT 8 pin jog Returns value of JOG jog1 Returns value of JOG 1 pin jog2 Returns value of JOG 2 pin jog3 Returns value of JOG 3 pin jog4 Returns value of JOG 4 pin jog5 Returns value of JOG 5 pin jog6 Returns value of JOG 6 pin jog7 Returns value of JOG 7 pin jog8 Returns value of JOG 8 pin joga1 Returns value of JOG A1 pin joga2 Returns value of JOG A2 pin jogs Returns value of JOG S pin jogpot Returns value of JOG POT limit Returns value of LIMIT limit1 Returns value of LIMIT 1 pin limit2 Returns value of LIMIT 2 pin limit3 Returns value of LIMIT 3 pin limit4 Returns value of LIMIT 4 pin limit5 Returns value of LIMIT 5 pin limit6 Returns value of LIMIT 6 pin limit7 Returns value of LIMIT 7 pin limit8 Returns value of LIMIT 8 pin limit9 Returns value of LIMIT 9 pin output Returns value of OUTPUT output1 Returns value of OUTPUT 1 pin output2 Returns value of OUTPUT 2 pin output3 Returns value of OUTPUT 3 pin output4 Returns value of OUTPUT 4 pin output5 Returns value of OUTPUT 5 pin output6 Returns value of OUTPUT 6 pin output7 Returns value of OUTPUT 7 pin output8 Returns value of OUTPUT 8 pin aux1 Returns value of AUX 1 pin aux2 Returns value of AUX 2 pin aux3 Returns value of AUX 3 pin aux4 Returns value of AUX 4 pin buffer Returns amount of free buffer bufferpercent Returns percent of buffer utilization linecount Returns number of lines in GCode program line Returns line number currently executing
Starting program from g-code
You can also start your own program from gcode. Optionally you can wait for program to finish before g-code continues or you can pass parameters.
Start myprogram.exe:
(exec,myprogram.exe)
Start myprogram.exe and send current X and Y coordinates:
(exec,myprogram.exe #<_x> #<_y>)
Start myprogram.exe, send current X and Y coordinates and wait for program to finish:
(execwait,myprogram.exe #<_x> #<_y>)
Make sure that myprogram.exe is added to whitelist in settings otherwise TNG will refuse to execute it.
Hint: This external program can use named pipes to set some g-code parameters. TNG will use these parameters when g-code execution will continue.