#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "getinput.h"
#include "rcs.hh"
#include "emc.hh"
#include "canon.hh"
#include "rs274ngc.hh"
#include "nml_mod.hh"
#include "emcglb.h"
Include dependency graph for emcpanel.cc:
Go to the source code of this file.
Defines | |
#define | __attribute__(x) |
#define | AWK_PATH "awk" |
#define | XGRAPH_PATH "xgraph" |
#define | SYSTEM_STRING_LEN 1024 |
#define | INPUTLEN 80 |
#define | SLEEP_SECS 0.100 |
#define | STRLEN 80 |
#define | EMC_COMMAND_TIMEOUT 1.0 |
#define | EMC_COMMAND_DELAY 0.1 |
Enumerations | |
enum | { AXIS_X = 0, AXIS_Y, AXIS_Z } |
enum | { JOG_CONT = 1, JOG_INCR } |
enum | { DISPLAY_ABS = 1, DISPLAY_REL } |
enum | { SELECT_NONE = 1, SELECT_EMC_TASK, SELECT_EMC_IO } |
Functions | |
char | __attribute__ ((unused)) ident[]="$Id |
int | anyprintable (const char *string) |
int | emcTaskNmlGet () |
int | emcErrorNmlGet () |
int | emcIoNmlGet () |
int | emcpanelQuit () |
char * | state_to_string (int state) |
char * | status_to_string (int status) |
int | btostr (char *s, unsigned char b) |
void | showState () |
void | showMode () |
void | showPosition () |
void | showParams () |
void | showProgram () |
void | showEmcTaskExec () |
void | showEmcio () |
void | showTools () |
void | showAxis () |
void | showCodes () |
void | emcpanelShow (int toPrint) |
void | printErrors () |
int | updateStatus () |
int | emcCommandWait (int serial_number) |
int | iniLoad (const char *filename) |
int | main (int argc, char *argv[]) |
Variables | |
int | axisSelect = AXIS_X |
double | speedSelect = 1.0 |
double | jogIncr = 1.0 |
int | jogSelect = JOG_CONT |
int | printPrompt |
enum { ... } | displayMode |
enum { ... } | which |
|
|
|
Definition at line 1019 of file emcpanel.cc. |
|
Definition at line 1018 of file emcpanel.cc. |
|
Definition at line 150 of file emcpanel.cc. |
|
Definition at line 153 of file emcpanel.cc. |
|
Definition at line 320 of file emcpanel.cc. |
|
|
|
|
|
Definition at line 55 of file emcpanel.cc. |
|
Definition at line 133 of file emcpanel.cc. 00133 {AXIS_X = 0, 00134 AXIS_Y, 00135 AXIS_Z}; |
|
Definition at line 138 of file emcpanel.cc. |
|
Definition at line 155 of file emcpanel.cc. 00155 { 00156 DISPLAY_ABS = 1, 00157 DISPLAY_REL 00158 } displayMode = DISPLAY_ABS; |
|
Definition at line 1042 of file emcpanel.cc. 01042 { 01043 SELECT_NONE = 1, 01044 SELECT_EMC_TASK, 01045 SELECT_EMC_IO 01046 } which = SELECT_NONE; |
|
Definition at line 59 of file emcpanel.cc. 00059 : emcpanel.cc,v 1.7 2001/06/29 20:27:29 wshackle Exp $"; 00060 00061 // the NML channels to the EMC task 00062 static RCS_CMD_CHANNEL *emcCommandBuffer = 0; 00063 static RCS_STAT_CHANNEL *emcStatusBuffer = 0; 00064 EMC_STAT *emcStatus = 0; 00065 00066 // the NML channels to the EMCIO controller 00067 static RCS_CMD_CHANNEL *emcIoCommandBuffer = 0; 00068 static RCS_STAT_CHANNEL *emcIoStatusBuffer = 0; 00069 EMC_IO_STAT *emcIoStatus = 0; 00070 00071 // the NML channel for errors 00072 static NML *emcErrorBuffer = 0; 00073 00074 // the current command numbers, set up updateStatus(), used in main() 00075 static int emcCommandSerialNumber = 0; 00076 static int emcIoCommandSerialNumber = 0; 00077 00078 // internal params 00079 00080 // the saved program name 00081 static char programFile[EMC_TASK_FILENAME_LEN] = ""; 00082 static int programOpened = 0; 00083 static FILE * programFp = 0; 00084 static int programFpLine = 0; 00085 static int programActiveLine = 0; 00086 static char programLineText[EMC_TASK_COMMAND_LEN] = ""; 00087 00088 // saved log file params 00089 static char saveLogFile[EMC_LOG_FILENAME_LEN] = "emc.log"; 00090 static int saveLogType = EMC_LOG_TYPE_AXIS_POS; 00091 static int saveLogSize = 1000; 00092 static int saveLogSkip = 0; 00093 static int saveLogAxis = 0; 00094 00095 // paths to awk and xgraph, using to plot logs 00096 // fill these in for your system, if these are not in user's path 00097 #define AWK_PATH "awk" 00098 #define XGRAPH_PATH "xgraph" 00099 #define SYSTEM_STRING_LEN 1024 00100 00101 static int plotLog(const char * logfile, int logtype, int which) 00102 { 00103 char string[SYSTEM_STRING_LEN]; 00104 int retval; 00105 00106 if (logfile == 0) 00107 { 00108 return -1; 00109 } 00110 00111 switch (logtype) 00112 { 00113 case EMC_LOG_TYPE_AXIS_POS: 00114 sprintf(string, "( %s '{print $1 \" \" $2}' < %s ; echo \"\" ; %s '{print $1 \" \" $3}' < %s ) 2> /dev/null | %s -m 1> /dev/null 2> /dev/null", AWK_PATH, logfile, AWK_PATH, logfile, XGRAPH_PATH); 00115 break; 00116 00117 case EMC_LOG_TYPE_AXES_INPOS: 00118 case EMC_LOG_TYPE_AXES_OUTPOS: 00119 sprintf(string, "%s '{print $2 \" \" $3}' < %s 2> /dev/null | %s -m 1> /dev/null 2> /dev/null", AWK_PATH, logfile, XGRAPH_PATH); 00120 break; 00121 00122 default: 00123 return -1; 00124 break; 00125 } 00126 00127 retval = system(string); 00128 00129 return retval; 00130 } |
|
Definition at line 161 of file emcpanel.cc. Referenced by main().
00162 { 00163 int cnt = 0; 00164 char c; 00165 00166 while (0 != (c = string[cnt++])) 00167 { 00168 if (!isspace(c)) 00169 { 00170 return 1; 00171 } 00172 } 00173 00174 return 0; 00175 } |
|
Definition at line 384 of file emcpanel.cc. Referenced by printDioOutputs(), and showEmcio().
|
|
Definition at line 1021 of file emcpanel.cc. 01022 { 01023 double start = etime(); 01024 01025 while (etime() - start < EMC_COMMAND_TIMEOUT) 01026 { 01027 updateStatus(); 01028 01029 if (emcStatus->echo_serial_number == serial_number) 01030 { 01031 return 0; 01032 } 01033 01034 esleep(EMC_COMMAND_DELAY); 01035 } 01036 01037 rcs_print_error("timeout sending command\n"); 01038 01039 return -1; 01040 } |
|
Definition at line 220 of file emcpanel.cc. 00221 { 00222 int retval = 0; 00223 00224 if (emcErrorBuffer == 0) 00225 { 00226 printf("trying emcError..."); 00227 emcErrorBuffer = new NML(nmlErrorFormat, "emcError", "emcpanel", EMC_NMLFILE); 00228 if (! emcErrorBuffer->valid()) 00229 { 00230 rcs_print_error("emcError channel not available\n"); 00231 delete emcErrorBuffer; 00232 emcErrorBuffer = 0; 00233 retval = -1; 00234 printf("failed\n"); 00235 } 00236 printf("got it\n"); 00237 } 00238 00239 return retval; 00240 } |
|
Definition at line 242 of file emcpanel.cc. 00243 { 00244 int retval = 0; 00245 00246 if (emcIoCommandBuffer == 0) 00247 { 00248 printf("trying toolCmd..."); 00249 emcIoCommandBuffer = new RCS_CMD_CHANNEL(emcFormat, "toolCmd", "emcpanel", EMC_NMLFILE); 00250 if (! emcIoCommandBuffer->valid()) 00251 { 00252 delete emcIoCommandBuffer; 00253 emcIoCommandBuffer = 0; 00254 retval = -1; 00255 printf("failed\n"); 00256 } 00257 printf("got it\n"); 00258 } 00259 00260 if (emcIoStatusBuffer == 0) 00261 { 00262 printf("tring toolSts..."); 00263 emcIoStatusBuffer = new RCS_STAT_CHANNEL(emcFormat, "toolSts", "emcpanel", EMC_NMLFILE); 00264 if (! emcIoStatusBuffer->valid() || 00265 EMC_IO_STAT_TYPE != emcIoStatusBuffer->peek()) 00266 { 00267 delete emcIoStatusBuffer; 00268 emcIoStatusBuffer = 0; 00269 emcIoStatus = 0; 00270 retval = -1; 00271 printf("failed\n"); 00272 } 00273 else 00274 { 00275 emcIoStatus = (EMC_IO_STAT *) emcIoStatusBuffer->get_address(); 00276 printf("got it\n"); 00277 } 00278 } 00279 00280 return retval; 00281 } |
|
Definition at line 177 of file emcpanel.cc. Referenced by main(), and tryNml().
00178 { 00179 int retval = 0; 00180 00181 // try to connect to NC cmd 00182 if (emcCommandBuffer == 0) 00183 { 00184 printf("trying emcCommand..."); 00185 emcCommandBuffer = new RCS_CMD_CHANNEL(emcFormat, "emcCommand", "emcpanel", EMC_NMLFILE); 00186 if (! emcCommandBuffer->valid()) 00187 { 00188 delete emcCommandBuffer; 00189 emcCommandBuffer = 0; 00190 retval = -1; 00191 printf("failed\n"); 00192 } 00193 printf("got it\n"); 00194 } 00195 00196 // try to connect to NC status 00197 if (emcStatusBuffer == 0) 00198 { 00199 printf("trying emcStatus..."); 00200 emcStatusBuffer = new RCS_STAT_CHANNEL(emcFormat, "emcStatus", "emcpanel", EMC_NMLFILE); 00201 if (! emcStatusBuffer->valid() || 00202 EMC_STAT_TYPE != emcStatusBuffer->peek()) 00203 { 00204 delete emcStatusBuffer; 00205 emcStatusBuffer = 0; 00206 emcStatus = 0; 00207 retval = -1; 00208 printf("failed\n"); 00209 } 00210 else 00211 { 00212 emcStatus = (EMC_STAT *) emcStatusBuffer->get_address(); 00213 printf("got it\n"); 00214 } 00215 } 00216 00217 return retval; 00218 } |
|
Definition at line 283 of file emcpanel.cc. Referenced by main().
00284 { 00285 if (emcIoStatusBuffer != 0) 00286 { 00287 delete emcIoStatusBuffer; 00288 emcIoStatusBuffer = 0; 00289 emcIoStatus = 0; 00290 } 00291 00292 if (emcIoCommandBuffer != 0) 00293 { 00294 delete emcIoCommandBuffer; 00295 emcIoCommandBuffer = 0; 00296 } 00297 00298 if (emcErrorBuffer != 0) 00299 { 00300 delete emcErrorBuffer; 00301 emcErrorBuffer = 0; 00302 } 00303 00304 if (emcStatusBuffer != 0) 00305 { 00306 delete emcStatusBuffer; 00307 emcStatusBuffer = 0; 00308 emcStatus = 0; 00309 } 00310 00311 if (emcCommandBuffer != 0) 00312 { 00313 delete emcCommandBuffer; 00314 emcCommandBuffer = 0; 00315 } 00316 00317 return 0; 00318 } |
|
Definition at line 806 of file emcpanel.cc. Referenced by main().
00807 { 00808 switch (toPrint) 00809 { 00810 case 0: 00811 // show default stuff 00812 showState(); 00813 showMode(); 00814 showPosition(); 00815 showProgram(); 00816 showEmcTaskExec(); 00817 break; 00818 00819 case 1: 00820 // show state 00821 showState(); 00822 break; 00823 00824 case 2: 00825 // show mode 00826 showMode(); 00827 break; 00828 00829 case 3: 00830 // show position 00831 showPosition(); 00832 break; 00833 00834 case 4: 00835 // show internal params 00836 showParams(); 00837 break; 00838 00839 case 5: 00840 // show interpreter 00841 showProgram(); 00842 break; 00843 00844 case 6: 00845 // show EMC TASK 00846 showEmcTaskExec(); 00847 break; 00848 00849 case 8: 00850 // show EMC IO 00851 showEmcio(); 00852 break; 00853 00854 case 9: 00855 // show tool table 00856 showTools(); 00857 break; 00858 00859 case 10: 00860 // show axis info 00861 showAxis(); 00862 break; 00863 00864 case 11: 00865 // show active g codes 00866 showCodes(); 00867 break; 00868 00869 default: 00870 // huh? 00871 printf("invalid request to show: %d\n", toPrint); 00872 break; 00873 } 00874 } |
|
Definition at line 1048 of file emcpanel.cc. 01049 { 01050 INIFILE inifile; 01051 const char *inistring; 01052 01053 // open it 01054 if (-1 == inifile.open(filename)) { 01055 return -1; 01056 } 01057 01058 if (NULL != (inistring = inifile.find("NML_FILE", "EMC"))) { 01059 // copy to global 01060 strcpy(EMC_NMLFILE, inistring); 01061 } 01062 else { 01063 // not found, use default 01064 } 01065 01066 // close it 01067 inifile.close(); 01068 01069 return 0; 01070 } |
|
Definition at line 1072 of file emcpanel.cc. 01073 { 01074 char input[INPUTLEN]; 01075 char cmd[INPUTLEN]; 01076 int nchars; // how many read from getinput() 01077 double delay; // secs until next read 01078 int done; 01079 int lastPrint = 0; // flag for which status subset to print 01080 int inhibitPrompt = 0; // flag for inhibiting prompt printing 01081 int valid; 01082 int t; 01083 int catchErrors = 1; // flag for reading error buffer 01084 01085 // messages sent out 01086 EMC_AXIS_SET_FERROR emc_axis_set_ferror_msg; 01087 EMC_AXIS_SET_MIN_FERROR emc_axis_set_min_ferror_msg; 01088 EMC_AXIS_JOG emc_axis_jog_msg; 01089 EMC_AXIS_INCR_JOG emc_axis_incr_jog_msg; 01090 EMC_AXIS_ABS_JOG emc_axis_abs_jog_msg; 01091 EMC_AXIS_HOME emc_axis_home_msg; 01092 EMC_AXIS_ABORT emc_axis_abort_msg; 01093 EMC_AXIS_SET_OUTPUT emc_axis_set_output_msg; 01094 EMC_TRAJ_SET_SCALE emc_traj_set_scale_msg; 01095 EMC_TRAJ_ABORT emc_traj_abort_msg; 01096 EMC_TASK_SET_MODE mode_msg; 01097 EMC_TASK_SET_STATE state_msg; 01098 EMC_TASK_ABORT task_abort_msg; 01099 EMC_TASK_PLAN_OPEN task_plan_open_msg; 01100 EMC_TASK_PLAN_RUN task_plan_run_msg; 01101 EMC_TASK_PLAN_EXECUTE task_plan_execute_msg; 01102 EMC_TASK_PLAN_PAUSE task_plan_pause_msg; 01103 EMC_TASK_PLAN_RESUME task_plan_resume_msg; 01104 EMC_TOOL_INIT emc_tool_init_msg; 01105 EMC_TOOL_HALT emc_tool_halt_msg; 01106 EMC_TOOL_PREPARE emc_tool_prepare_msg; 01107 EMC_TOOL_LOAD emc_tool_load_msg; 01108 EMC_TOOL_UNLOAD emc_tool_unload_msg; 01109 EMC_TOOL_LOAD_TOOL_TABLE emc_tool_load_tool_table_msg; 01110 EMC_SPINDLE_ON emc_spindle_on_msg; 01111 EMC_SPINDLE_OFF emc_spindle_off_msg; 01112 EMC_SPINDLE_INCREASE emc_spindle_increase_msg; 01113 EMC_SPINDLE_DECREASE emc_spindle_decrease_msg; 01114 EMC_SPINDLE_CONSTANT emc_spindle_constant_msg; 01115 EMC_SPINDLE_BRAKE_RELEASE emc_spindle_brake_release_msg; 01116 EMC_SPINDLE_BRAKE_ENGAGE emc_spindle_brake_engage_msg; 01117 EMC_COOLANT_MIST_ON emc_coolant_mist_on_msg; 01118 EMC_COOLANT_MIST_OFF emc_coolant_mist_off_msg; 01119 EMC_COOLANT_FLOOD_ON emc_coolant_flood_on_msg; 01120 EMC_COOLANT_FLOOD_OFF emc_coolant_flood_off_msg; 01121 EMC_AUX_DIO_WRITE emc_aux_dio_write_msg; 01122 EMC_AUX_AIO_WRITE emc_aux_aio_write_msg; 01123 EMC_AUX_ESTOP_ON emc_aux_estop_on_msg; 01124 EMC_AUX_ESTOP_OFF emc_aux_estop_off_msg; 01125 EMC_LOG_OPEN emc_log_open_msg; 01126 EMC_LOG_START emc_log_start_msg; 01127 EMC_LOG_STOP emc_log_stop_msg; 01128 EMC_LOG_CLOSE emc_log_close_msg; 01129 01130 // blank out the annoying RCS version message 01131 rcs_version_printed = 1; 01132 01133 // process usual command line args 01134 if (0 != emcGetArgs(argc, argv)) { 01135 rcs_print_error("error in argument list\n"); 01136 exit(1); 01137 } 01138 01139 // process our command line args 01140 for (t = 1; t < argc; t++) 01141 { 01142 // try -noerror 01143 if (!strcmp(argv[t], "-noerror")) 01144 { 01145 catchErrors = 0; 01146 continue; 01147 } 01148 } 01149 01150 // initialize globals 01151 emcInitGlobals(); 01152 01153 // get configuration information 01154 iniLoad(EMC_INIFILE); 01155 01156 // init NML 01157 emcErrorNmlGet(); 01158 if (0 == emcIoNmlGet()) 01159 { 01160 which = SELECT_EMC_IO; 01161 lastPrint = 8; 01162 } 01163 if (0 == emcTaskNmlGet()) 01164 { 01165 which = SELECT_EMC_TASK; 01166 lastPrint = 0; 01167 } 01168 01169 // loop on input 01170 done = 0; 01171 printPrompt = 1; 01172 while (! feof(stdin) && 01173 ! done) 01174 { 01175 // print errors 01176 if (catchErrors) 01177 { 01178 printErrors(); 01179 } 01180 01181 // update status 01182 updateStatus(); 01183 01184 // check if we need to print a prompt 01185 if (printPrompt) 01186 { 01187 if (! inhibitPrompt) 01188 { 01189 if (which == SELECT_EMC_TASK) 01190 { 01191 printf("emctask> "); 01192 } 01193 else if (which == SELECT_EMC_IO) 01194 { 01195 printf("emcio> "); 01196 } 01197 else 01198 { 01199 printf("none> "); 01200 } 01201 fflush(stdout); 01202 } 01203 printPrompt = 0; 01204 } 01205 01206 // get the next input line 01207 nchars = getinput(input, INPUTLEN); 01208 if (nchars > 0) 01209 { 01210 // got some input-- flag that we'll need to print prompt again 01211 printPrompt = 1; 01212 } 01213 else if (nchars == -1) 01214 { 01215 // no new input-- cycle and try again 01216 esleep(SLEEP_SECS); 01217 continue; // the while(!feof(stdin)) loop 01218 } 01219 else 01220 { 01221 // nchars == 0, it's EOF 01222 done = 1; 01223 break; 01224 } 01225 01226 // got input-- process it 01227 01228 // read first arg in 01229 cmd[0] = 0; 01230 sscanf(input, "%s", cmd); 01231 01232 // match it in the big if loop 01233 // first handle commands for any selected controller 01234 // then handle emctask, emcio 01235 01236 // commands for any controller 01237 if (! strcmp(cmd, "help") || 01238 ! strcmp(cmd, "?")) 01239 { 01240 printf("? or help -- print help\n"); 01241 printf("delay <secs> -- delay reading next line\n"); 01242 printf("< or > -- turn prompt off or on\n"); 01243 printf("; -- comment follows\n"); 01244 printf("quit -- quit\n"); 01245 printf("show {params} {state} {mode} {pos} -- show status\n"); 01246 printf("emctask | emcio -- select emctask or emcio\n"); 01247 01248 switch (which) 01249 { 01250 case SELECT_EMC_TASK: 01251 printf("estop on | off -- go into/out of estop\n"); 01252 printf("machine on | off -- enable/disable control\n"); 01253 printf("mode manual | auto | mdi -- set program mode\n"); 01254 printf("axis x | y | z -- select axis\n"); 01255 printf("speed <pos value> -- set jog speed\n"); 01256 printf("abs | rel -- set display to abs or rel\n"); 01257 printf("cont -- set continuous jog mode\n"); 01258 printf("incr {<pos value>} -- set incremental jog mode\n"); 01259 printf("jog {<abs> | + | -} -- jog absolute, or +/- in cont/incr\n"); 01260 printf("home -- home selected axis\n"); 01261 printf("a -- abort everything\n"); 01262 printf("/ -- abort selected axis\n"); 01263 printf("// -- abort traj\n"); 01264 printf("feed <0.100> -- set feed override\n"); 01265 printf("open <prog name> -- open NC program\n"); 01266 printf("run -- run opened NC program\n"); 01267 printf("mdi <NC statement> -- send manual data input\n"); 01268 printf("pause -- pause motion\n"); 01269 printf("resume -- resume motion\n"); 01270 printf("tools {<file>} -- load tool file\n"); 01271 printf("brake on | off -- turn spindle brake on or off\n"); 01272 printf("maxfe <axis> <value> -- set axis following error\n"); 01273 printf("minfe <axis> <value> -- set axis following error\n"); 01274 printf("out <axis> <value> -- set axis output\n"); 01275 break; 01276 01277 case SELECT_EMC_IO: 01278 printf("init -- initialize emcio\n"); 01279 printf("halt -- reset emcio\n"); 01280 printf("dout <bit> 0 | 1 -- set digital out point\n"); 01281 printf("aout <bit> <volts> -- set analog out point\n"); 01282 printf("estop on | off -- go into/out of estop\n"); 01283 printf("prep <tool> -- prepare tool for loading\n"); 01284 printf("load -- load prepped tool\n"); 01285 printf("unload -- unload tool\n"); 01286 printf("spindle <rpm> | off -- set spindle speed\n"); 01287 printf("incr -- increase spindle speed\n"); 01288 printf("decr -- decrease spindle speed\n"); 01289 printf("brake on | off -- turn spindle brake on or off\n"); 01290 printf("mist on | off -- mist coolant\n"); 01291 printf("flood on | off -- flood coolant\n"); 01292 break; 01293 01294 default: 01295 // nothing selected 01296 break; 01297 } 01298 } 01299 else if (! strcmp(cmd, "quit")) 01300 { 01301 done = 1; 01302 } 01303 else if (! strcmp(cmd, "<")) 01304 { 01305 inhibitPrompt = 1; 01306 } 01307 else if (! strcmp(cmd, ">")) 01308 { 01309 inhibitPrompt = 0; 01310 } 01311 else if (! strcmp(cmd, ";")) 01312 { 01313 // comment-- ignore 01314 } 01315 else if (! strcmp(cmd, "delay")) 01316 { 01317 if (1 == sscanf(input, "%*s %lf", &delay)) 01318 { 01319 esleep((unsigned int) (delay * 1000000.0)); 01320 } 01321 else 01322 { 01323 printf("syntax: delay <secs>\n"); 01324 } 01325 } 01326 else if (! strcmp(cmd, "show")) 01327 { 01328 if (1 == sscanf(input, "%*s %s", cmd)) 01329 { 01330 if (! strcmp(cmd, "state")) 01331 { 01332 lastPrint = 1; 01333 emcpanelShow(lastPrint); 01334 } 01335 else if (! strcmp(cmd, "mode")) 01336 { 01337 lastPrint = 2; 01338 emcpanelShow(lastPrint); 01339 } 01340 else if (! strcmp(cmd, "pos")) 01341 { 01342 lastPrint = 3; 01343 emcpanelShow(lastPrint); 01344 } 01345 else if (! strcmp(cmd, "params")) 01346 { 01347 lastPrint = 4; 01348 emcpanelShow(lastPrint); 01349 } 01350 else if (! strcmp(cmd, "program")) 01351 { 01352 lastPrint = 5; 01353 emcpanelShow(lastPrint); 01354 } 01355 else if (! strcmp(cmd, "exec")) 01356 { 01357 lastPrint = 6; 01358 emcpanelShow(lastPrint); 01359 } 01360 else if (! strcmp(cmd, "emcio")) 01361 { 01362 lastPrint = 8; 01363 emcpanelShow(lastPrint); 01364 } 01365 else if (! strcmp(cmd, "tools")) 01366 { 01367 lastPrint = 9; 01368 emcpanelShow(lastPrint); 01369 } 01370 else if (! strcmp(cmd, "axis")) 01371 { 01372 lastPrint = 10; 01373 emcpanelShow(lastPrint); 01374 } 01375 else if (! strcmp(cmd, "codes")) 01376 { 01377 lastPrint = 11; 01378 emcpanelShow(lastPrint); 01379 } 01380 else 01381 { 01382 // invalid parameter 01383 printf("syntax: show {state} {mode} {pos} {params} {program} {exec} {emcio} {tools} {axis} {codes}\n"); 01384 } 01385 } 01386 else 01387 { 01388 // blank "show" typed 01389 if (which == SELECT_EMC_TASK) 01390 { 01391 lastPrint = 0; 01392 } 01393 else if (which == SELECT_EMC_IO) 01394 { 01395 lastPrint = 8; 01396 } 01397 01398 emcpanelShow(lastPrint); 01399 } 01400 } 01401 else if (!strcmp(cmd, "emctask")) 01402 { 01403 if (0 == emcTaskNmlGet()) 01404 { 01405 which = SELECT_EMC_TASK; 01406 lastPrint = 0; 01407 } 01408 } 01409 else if (!strcmp(cmd, "emcio")) 01410 { 01411 if (0 == emcIoNmlGet()) 01412 { 01413 which = SELECT_EMC_IO; 01414 lastPrint = 8; 01415 } 01416 } // end of general matches; now handle controller specific ones 01417 else if (which == SELECT_EMC_TASK) 01418 { 01419 if (!strcmp(cmd, "estop")) 01420 { 01421 valid = 0; 01422 if (1 == sscanf(input, "%*s %s", cmd)) 01423 { 01424 valid = 1; 01425 if (!strcmp(cmd, "off")) 01426 { 01427 // come out of estop 01428 state_msg.state = EMC_TASK_STATE_ESTOP_RESET; 01429 state_msg.serial_number = ++emcCommandSerialNumber; 01430 emcCommandBuffer->write(state_msg); 01431 } 01432 else if (!strcmp(cmd, "on")) 01433 { 01434 // go into estop 01435 state_msg.state = EMC_TASK_STATE_ESTOP; 01436 state_msg.serial_number = ++emcCommandSerialNumber; 01437 emcCommandBuffer->write(state_msg); 01438 } 01439 } 01440 if (!valid) 01441 { 01442 printf("syntax: estop off | on\n"); 01443 } 01444 } 01445 else if (!strcmp(cmd, "machine")) 01446 { 01447 valid = 0; 01448 if (1 == sscanf(input, "%*s %s", cmd)) 01449 { 01450 valid = 1; 01451 if (!strcmp(cmd, "off")) 01452 { 01453 // turn it off 01454 state_msg.state = EMC_TASK_STATE_OFF; 01455 state_msg.serial_number = ++emcCommandSerialNumber; 01456 emcCommandBuffer->write(state_msg); 01457 } 01458 else if (!strcmp(cmd, "on")) 01459 { 01460 // turn the machine on 01461 state_msg.state = EMC_TASK_STATE_ON; 01462 state_msg.serial_number = ++emcCommandSerialNumber; 01463 emcCommandBuffer->write(state_msg); 01464 } 01465 } 01466 if (!valid) 01467 { 01468 printf("syntax: machine on | off\n"); 01469 } 01470 } 01471 else if (!strcmp(cmd, "mode")) 01472 { 01473 // a request to change mode 01474 valid = 0; 01475 if (1 == sscanf(input, "%*s %s", cmd)) 01476 { 01477 if (!strcmp(cmd, "auto")) 01478 { 01479 mode_msg.mode = EMC_TASK_MODE_AUTO; 01480 mode_msg.serial_number = ++emcCommandSerialNumber; 01481 emcCommandBuffer->write(mode_msg); 01482 valid = 1; 01483 } 01484 else if (!strcmp(cmd, "mdi")) 01485 { 01486 mode_msg.mode = EMC_TASK_MODE_MDI; 01487 mode_msg.serial_number = ++emcCommandSerialNumber; 01488 emcCommandBuffer->write(mode_msg); 01489 valid = 1; 01490 } 01491 else if (!strcmp(cmd, "manual")) 01492 { 01493 mode_msg.mode = EMC_TASK_MODE_MANUAL; 01494 mode_msg.serial_number = ++emcCommandSerialNumber; 01495 emcCommandBuffer->write(mode_msg); 01496 valid = 1; 01497 } 01498 else 01499 { 01500 valid = 0; 01501 } 01502 } 01503 if (!valid) 01504 { 01505 printf("syntax: mode auto | mdi | manual\n"); 01506 } 01507 } 01508 else if (!strcmp(cmd, "axis")) 01509 { 01510 valid = 0; 01511 if (1 == sscanf(input, "%*s %s", cmd)) 01512 { 01513 if (!strcmp(cmd, "x")) 01514 { 01515 valid = 1; 01516 axisSelect = AXIS_X; 01517 } 01518 else if (!strcmp(cmd, "y")) 01519 { 01520 valid = 1; 01521 axisSelect = AXIS_Y; 01522 } 01523 else if (!strcmp(cmd, "z")) 01524 { 01525 valid = 1; 01526 axisSelect = AXIS_Z; 01527 } 01528 } 01529 if (!valid) 01530 { 01531 printf("syntax: axis x | y | z\n"); 01532 } 01533 } 01534 else if (!strcmp(cmd, "speed")) 01535 { 01536 double speed; 01537 valid = 0; 01538 if (1 == sscanf(input, "%*s %lf", &speed) && 01539 speed > 0.0) 01540 { 01541 speedSelect = speed; 01542 valid = 1; 01543 } 01544 if (!valid) 01545 { 01546 printf("syntax: speed <pos value>\n"); 01547 } 01548 } 01549 else if (!strcmp(cmd, "abs")) 01550 { 01551 displayMode = DISPLAY_ABS; 01552 } 01553 else if (!strcmp(cmd, "rel")) 01554 { 01555 displayMode = DISPLAY_REL; 01556 } 01557 else if (!strcmp(cmd, "cont")) 01558 { 01559 jogSelect = JOG_CONT; 01560 } 01561 else if (!strcmp(cmd, "incr")) 01562 { 01563 double incr; 01564 valid = 0; 01565 // check for optional incr arg 01566 if (1 == sscanf(input, "%*s %s", cmd)) 01567 { 01568 if (1 == sscanf(cmd, "%lf", &incr) && 01569 incr > 0.0) 01570 { 01571 jogIncr = incr; 01572 jogSelect = JOG_INCR; 01573 valid = 1; 01574 } 01575 else 01576 { 01577 // arg there, but invalid 01578 valid = 0; 01579 } 01580 } 01581 else 01582 { 01583 // no arg 01584 jogSelect = JOG_INCR; 01585 valid = 1; 01586 } 01587 if (!valid) 01588 { 01589 printf("syntax: axis x | y | z\n"); 01590 } 01591 } 01592 else if (!strcmp(cmd, "jog")) 01593 { 01594 valid = 0; 01595 // we can have "jog <abs> | + | -" 01596 // check for arg there first 01597 if (1 == sscanf(input, "%*s %s", cmd)) 01598 { 01599 // there's an arg there 01600 // check for abs value 01601 if (1 == sscanf(cmd, "%lf", &emc_axis_abs_jog_msg.pos)) 01602 { 01603 // got an abs jog value 01604 emc_axis_abs_jog_msg.serial_number = ++emcCommandSerialNumber; 01605 emc_axis_abs_jog_msg.axis = axisSelect; 01606 emc_axis_abs_jog_msg.vel = speedSelect; 01607 emcCommandBuffer->write(emc_axis_abs_jog_msg); 01608 valid = 1; 01609 } 01610 // else check for + 01611 else if (cmd[0] == '+') 01612 { 01613 // check for cont or incr jog 01614 if (JOG_CONT == jogSelect) 01615 { 01616 emc_axis_jog_msg.serial_number = ++emcCommandSerialNumber; 01617 emc_axis_jog_msg.axis = axisSelect; 01618 emc_axis_jog_msg.vel = speedSelect; 01619 emcCommandBuffer->write(emc_axis_jog_msg); 01620 valid = 1; 01621 } 01622 else if (JOG_INCR == jogSelect) 01623 { 01624 emc_axis_incr_jog_msg.serial_number = 01625 ++emcCommandSerialNumber; 01626 emc_axis_incr_jog_msg.axis = axisSelect; 01627 emc_axis_incr_jog_msg.vel = speedSelect; 01628 emc_axis_incr_jog_msg.incr = jogIncr; 01629 emcCommandBuffer->write(emc_axis_incr_jog_msg); 01630 valid = 1; 01631 } 01632 else 01633 { 01634 // coding error 01635 printf("bad value for jog select: %d\n", jogSelect); 01636 valid = 1; // suppress syntax error, since it's not 01637 } 01638 } 01639 // else check for - 01640 else if (cmd[0] == '-') 01641 { 01642 // check for cont or incr jog 01643 if (JOG_CONT == jogSelect) 01644 { 01645 emc_axis_jog_msg.serial_number = ++emcCommandSerialNumber; 01646 emc_axis_jog_msg.axis = axisSelect; 01647 emc_axis_jog_msg.vel = - speedSelect; 01648 emcCommandBuffer->write(emc_axis_jog_msg); 01649 valid = 1; 01650 } 01651 else if (JOG_INCR == jogSelect) 01652 { 01653 emc_axis_incr_jog_msg.serial_number = 01654 ++emcCommandSerialNumber; 01655 emc_axis_incr_jog_msg.axis = axisSelect; 01656 emc_axis_incr_jog_msg.vel = - speedSelect; 01657 emc_axis_incr_jog_msg.incr = jogIncr; 01658 emcCommandBuffer->write(emc_axis_incr_jog_msg); 01659 valid = 1; 01660 } 01661 else 01662 { 01663 // coding error 01664 printf("bad value for jog select: %d\n", jogSelect); 01665 valid = 1; // suppress syntax error, since it's not 01666 } 01667 } 01668 else 01669 { 01670 // bad arg 01671 valid = 0; 01672 } 01673 } 01674 else 01675 { 01676 // no arg there at all 01677 valid = 0; 01678 } 01679 if (!valid) 01680 { 01681 printf("syntax: jog <abs> | + | -\n"); 01682 } 01683 } 01684 else if (!strcmp(cmd, "home")) 01685 { 01686 emc_axis_home_msg.serial_number = ++emcCommandSerialNumber; 01687 emc_axis_home_msg.axis = axisSelect; 01688 emcCommandBuffer->write(emc_axis_home_msg); 01689 } 01690 else if (!strcmp(cmd, "a")) 01691 { 01692 // do a task abort (abort everything) 01693 task_abort_msg.serial_number = ++emcCommandSerialNumber; 01694 emcCommandBuffer->write(task_abort_msg); 01695 } 01696 else if (!strcmp(cmd, "/")) 01697 { 01698 // do an axis abort 01699 emc_axis_abort_msg.serial_number = ++emcCommandSerialNumber; 01700 emc_axis_abort_msg.axis = axisSelect; 01701 emcCommandBuffer->write(emc_axis_abort_msg); 01702 } 01703 else if (!strcmp(cmd, "//")) 01704 { 01705 // do a traj abort 01706 emc_traj_abort_msg.serial_number = ++emcCommandSerialNumber; 01707 emcCommandBuffer->write(emc_traj_abort_msg); 01708 } 01709 else if (!strcmp(cmd, "feed")) 01710 { 01711 int valid = 0; 01712 if (1 == sscanf(input, "%*s %lf", &emc_traj_set_scale_msg.scale)) 01713 { 01714 valid = 1; 01715 emc_traj_set_scale_msg.scale = emc_traj_set_scale_msg.scale / 100.0; // turn percent into a fraction 01716 emc_traj_set_scale_msg.serial_number = ++emcCommandSerialNumber; 01717 emcCommandBuffer->write(emc_traj_set_scale_msg); 01718 } 01719 if (! valid) 01720 { 01721 printf("syntax: feed <0..100>\n"); 01722 } 01723 } 01724 else if (!strcmp(cmd, "open")) 01725 { 01726 int valid = 0; 01727 if (1 == sscanf(input, "%*s %s", task_plan_open_msg.file)) 01728 { 01729 valid = 1; 01730 task_plan_open_msg.serial_number = ++emcCommandSerialNumber; 01731 emcCommandBuffer->write(task_plan_open_msg); 01732 strcpy(programFile, task_plan_open_msg.file); 01733 programOpened = 1; 01734 if (programFp != 0) 01735 { 01736 fclose(programFp); 01737 } 01738 programFp = fopen(programFile, "r"); 01739 programLineText[0] = 0; 01740 programFpLine = 0; 01741 } 01742 if (! valid) 01743 { 01744 printf("syntax: open <part program>\n"); 01745 } 01746 } 01747 else if (!strcmp(cmd, "run")) 01748 { 01749 if (! programOpened) 01750 { 01751 // send a request to open the last one 01752 strcpy(task_plan_open_msg.file, programFile); 01753 task_plan_open_msg.serial_number = ++emcCommandSerialNumber; 01754 emcCommandBuffer->write(task_plan_open_msg); 01755 emcCommandWait(task_plan_open_msg.serial_number); 01756 } 01757 task_plan_run_msg.serial_number = ++emcCommandSerialNumber; 01758 task_plan_run_msg.line = 0; 01759 emcCommandBuffer->write(task_plan_run_msg); 01760 programOpened = 0; 01761 } 01762 else if (!strcmp(cmd, "mdi")) 01763 { 01764 int valid = 0; 01765 // check for at least one thing on the line 01766 if (1 == sscanf(input, "%*s %s", cmd)) 01767 { 01768 valid = 1; 01769 // copy rest of line after "mdi " 01770 strcpy(task_plan_execute_msg.command, &input[4]); 01771 task_plan_execute_msg.serial_number = ++emcCommandSerialNumber; 01772 emcCommandBuffer->write(task_plan_execute_msg); 01773 } 01774 if (! valid) 01775 { 01776 printf("syntax: mdi <NC statement>\n"); 01777 } 01778 } 01779 else if (!strcmp(cmd, "pause")) 01780 { 01781 task_plan_pause_msg.serial_number = ++emcCommandSerialNumber; 01782 emcCommandBuffer->write(task_plan_pause_msg); 01783 } 01784 else if (!strcmp(cmd, "resume")) 01785 { 01786 task_plan_resume_msg.serial_number = ++emcCommandSerialNumber; 01787 emcCommandBuffer->write(task_plan_resume_msg); 01788 } 01789 else if (!strcmp(cmd, "tools")) 01790 { 01791 // get tool file, if provided 01792 if (1 != sscanf(input, "%*s %s", emc_tool_load_tool_table_msg.file)) 01793 { 01794 emc_tool_load_tool_table_msg.file[0] = 0; 01795 } 01796 emc_tool_load_tool_table_msg.serial_number = ++emcCommandSerialNumber; 01797 emcCommandBuffer->write(emc_tool_load_tool_table_msg); 01798 } 01799 else if (!strcmp(cmd, "brake")) 01800 { 01801 valid = 0; 01802 if (1 == sscanf(input, "%*s %s", cmd)) 01803 { 01804 valid = 1; 01805 if (!strcmp(cmd, "off")) 01806 { 01807 // take brake off 01808 emc_spindle_brake_release_msg.serial_number = ++emcCommandSerialNumber; 01809 emcCommandBuffer->write(emc_spindle_brake_release_msg); 01810 } 01811 else if (!strcmp(cmd, "on")) 01812 { 01813 // go into estop 01814 emc_spindle_brake_engage_msg.serial_number = ++emcCommandSerialNumber; 01815 emcCommandBuffer->write(emc_spindle_brake_engage_msg); 01816 } 01817 } 01818 if (!valid) 01819 { 01820 printf("syntax: brake off | on\n"); 01821 } 01822 } 01823 else if (!strcmp(cmd, "maxfe")) 01824 { 01825 int valid = 0; 01826 if (2 == sscanf(input, "%*s %d %lf", 01827 &emc_axis_set_ferror_msg.axis, 01828 &emc_axis_set_ferror_msg.ferror)) 01829 { 01830 valid = 1; 01831 emc_axis_set_ferror_msg.serial_number = ++emcCommandSerialNumber; 01832 emcCommandBuffer->write(emc_axis_set_ferror_msg); 01833 } 01834 if (! valid) 01835 { 01836 printf("syntax: maxfe <axis> <ferror>\n"); 01837 } 01838 } 01839 else if (!strcmp(cmd, "minfe")) 01840 { 01841 int valid = 0; 01842 if (2 == sscanf(input, "%*s %d %lf", 01843 &emc_axis_set_min_ferror_msg.axis, 01844 &emc_axis_set_min_ferror_msg.ferror)) 01845 { 01846 valid = 1; 01847 emc_axis_set_min_ferror_msg.serial_number = ++emcCommandSerialNumber; 01848 emcCommandBuffer->write(emc_axis_set_min_ferror_msg); 01849 } 01850 if (! valid) 01851 { 01852 printf("syntax: minfe <axis> <ferror>\n"); 01853 } 01854 } 01855 else if (!strcmp(cmd, "out")) 01856 { 01857 int valid = 0; 01858 if (2 == sscanf(input, "%*s %d %lf", 01859 &emc_axis_set_output_msg.axis, 01860 &emc_axis_set_output_msg.output)) 01861 { 01862 valid = 1; 01863 emc_axis_set_output_msg.serial_number = ++emcCommandSerialNumber; 01864 emcCommandBuffer->write(emc_axis_set_output_msg); 01865 } 01866 if (! valid) 01867 { 01868 printf("syntax: minfe <axis> <ferror>\n"); 01869 } 01870 } 01871 else if (!strcmp(cmd, "log")) 01872 { 01873 valid = 0; 01874 if (1 == sscanf(input, "%*s %s", cmd)) 01875 { 01876 if (!strcmp(cmd, "open")) 01877 { 01878 valid = 1; 01879 if (1 == sscanf(input, "%*s %*s %s", saveLogFile)) 01880 { 01881 strcpy(emc_log_open_msg.file, saveLogFile); 01882 emc_log_open_msg.type = saveLogType; 01883 emc_log_open_msg.size = saveLogSize; 01884 emc_log_open_msg.skip = saveLogSkip; 01885 emc_log_open_msg.which = saveLogAxis; 01886 emc_log_open_msg.serial_number = ++emcCommandSerialNumber; 01887 emcCommandBuffer->write(emc_log_open_msg); 01888 emcCommandWait(emcCommandSerialNumber); 01889 } 01890 } 01891 else if (!strcmp(cmd, "start")) 01892 { 01893 valid = 1; 01894 // check for open log file first; if not, and old one saved, 01895 // open old one 01896 if (! emcStatus->logOpen) 01897 { 01898 if (saveLogFile[0] != 0) 01899 { 01900 strcpy(emc_log_open_msg.file, saveLogFile); 01901 emc_log_open_msg.type = saveLogType; 01902 emc_log_open_msg.size = saveLogSize; 01903 emc_log_open_msg.skip = saveLogSkip; 01904 emc_log_open_msg.which = saveLogAxis; 01905 emc_log_open_msg.serial_number = ++emcCommandSerialNumber; 01906 emcCommandBuffer->write(emc_log_open_msg); 01907 emcCommandWait(emcCommandSerialNumber); 01908 } 01909 else 01910 { 01911 // log is not opened, and no name saved, so ignore 01912 break; 01913 } 01914 } 01915 01916 emc_log_start_msg.serial_number = ++emcCommandSerialNumber; 01917 emcCommandBuffer->write(emc_log_start_msg); 01918 emcCommandWait(emcCommandSerialNumber); 01919 } 01920 else if (!strcmp(cmd, "stop")) 01921 { 01922 valid = 1; 01923 emc_log_stop_msg.serial_number = ++emcCommandSerialNumber; 01924 emcCommandBuffer->write(emc_log_stop_msg); 01925 emcCommandWait(emcCommandSerialNumber); 01926 } 01927 else if (!strcmp(cmd, "save")) 01928 { 01929 valid = 1; 01930 emc_log_close_msg.serial_number = ++emcCommandSerialNumber; 01931 emcCommandBuffer->write(emc_log_close_msg); 01932 emcCommandWait(emcCommandSerialNumber); 01933 } 01934 else if (!strcmp(cmd, "plot")) 01935 { 01936 valid = 1; 01937 if (0 != plotLog(saveLogFile, saveLogType, saveLogAxis)) 01938 { 01939 printf("can't print log-- check log file manually"); 01940 } 01941 } 01942 } 01943 if (!valid) 01944 { 01945 printf("syntax: log open <file> | start | stop | save | plot\n"); 01946 } 01947 } 01948 else if (anyprintable(input)) 01949 { 01950 printf("?\n"); 01951 } 01952 else 01953 { 01954 // blank line was typed 01955 emcpanelShow(lastPrint); 01956 } 01957 } // if (which == SELECT_EMC_TASK) 01958 else // default matches SELECT_EMC_IO 01959 { 01960 if (!strcmp(cmd, "init")) 01961 { 01962 emc_tool_init_msg.serial_number = ++emcIoCommandSerialNumber; 01963 emcIoCommandBuffer->write(emc_tool_init_msg); 01964 } 01965 else if (!strcmp(cmd, "halt")) 01966 { 01967 emc_tool_halt_msg.serial_number = ++emcIoCommandSerialNumber; 01968 emcIoCommandBuffer->write(emc_tool_halt_msg); 01969 } 01970 else if (!strcmp(cmd, "dout")) 01971 { 01972 valid = 0; 01973 01974 if (2 == sscanf(input, "%*s %d %d", 01975 &emc_aux_dio_write_msg.index, 01976 &emc_aux_dio_write_msg.value)) 01977 { 01978 valid = 1; 01979 emc_aux_dio_write_msg.serial_number = ++emcIoCommandSerialNumber; 01980 emcIoCommandBuffer->write(emc_aux_dio_write_msg); 01981 } 01982 01983 if (!valid) 01984 { 01985 printf("syntax: set <bit> 0 | 1\n"); 01986 } 01987 } 01988 else if (!strcmp(cmd, "aout")) 01989 { 01990 valid = 0; 01991 01992 if (2 == sscanf(input, "%*s %d %lf", 01993 &emc_aux_aio_write_msg.index, 01994 &emc_aux_aio_write_msg.value)) 01995 { 01996 valid = 1; 01997 emc_aux_aio_write_msg.serial_number = ++emcIoCommandSerialNumber; 01998 emcIoCommandBuffer->write(emc_aux_aio_write_msg); 01999 } 02000 02001 if (!valid) 02002 { 02003 printf("syntax: set <bit> 0 | 1\n"); 02004 } 02005 } 02006 else if (!strcmp(cmd, "prep")) 02007 { 02008 valid = 0; 02009 02010 if (1 == sscanf(input, "%*s %d", 02011 &emc_tool_prepare_msg.tool)) 02012 { 02013 valid = 1; 02014 emc_tool_prepare_msg.serial_number = ++emcIoCommandSerialNumber; 02015 emcIoCommandBuffer->write(emc_tool_prepare_msg); 02016 } 02017 02018 if (!valid) 02019 { 02020 printf("syntax: prep <tool>\n"); 02021 } 02022 } 02023 else if (!strcmp(cmd, "load")) 02024 { 02025 emc_tool_load_msg.serial_number = ++emcIoCommandSerialNumber; 02026 emcIoCommandBuffer->write(emc_tool_load_msg); 02027 } 02028 else if (!strcmp(cmd, "unload")) 02029 { 02030 emc_tool_unload_msg.serial_number = ++emcIoCommandSerialNumber; 02031 emcIoCommandBuffer->write(emc_tool_unload_msg); 02032 } 02033 else if (!strcmp(cmd, "spindle")) 02034 { 02035 valid = 0; 02036 02037 if (1 == sscanf(input, "%*s %s", cmd)) 02038 { 02039 if (!strcmp(cmd, "off")) 02040 { 02041 valid = 1; 02042 emc_spindle_off_msg.serial_number = ++emcIoCommandSerialNumber; 02043 emcIoCommandBuffer->write(emc_spindle_off_msg); 02044 } 02045 else if (1 == sscanf(cmd, "%lf", &emc_spindle_on_msg.speed)) 02046 { 02047 valid = 1; 02048 emc_spindle_on_msg.serial_number = ++emcIoCommandSerialNumber; 02049 emcIoCommandBuffer->write(emc_spindle_on_msg); 02050 } 02051 } 02052 02053 if (!valid) 02054 { 02055 printf("syntax: spindle <rpm> | off\n"); 02056 } 02057 } 02058 else if (!strcmp(cmd, "incr")) 02059 { 02060 emc_spindle_increase_msg.serial_number = ++emcIoCommandSerialNumber; 02061 emcIoCommandBuffer->write(emc_spindle_increase_msg); 02062 } 02063 else if (!strcmp(cmd, "decr")) 02064 { 02065 emc_spindle_decrease_msg.serial_number = ++emcIoCommandSerialNumber; 02066 emcIoCommandBuffer->write(emc_spindle_decrease_msg); 02067 } 02068 else if (!strcmp(cmd, "c")) 02069 { 02070 // make spindle constant 02071 emc_spindle_constant_msg.serial_number = ++emcIoCommandSerialNumber; 02072 emcIoCommandBuffer->write(emc_spindle_constant_msg); 02073 } 02074 else if (!strcmp(cmd, "brake")) 02075 { 02076 valid = 0; 02077 02078 if (1 == sscanf(input, "%*s %s", cmd)) 02079 { 02080 if (!strcmp(cmd, "off")) 02081 { 02082 valid = 1; 02083 emc_spindle_brake_release_msg.serial_number = ++emcIoCommandSerialNumber; 02084 emcIoCommandBuffer->write(emc_spindle_brake_release_msg); 02085 } 02086 else if (!strcmp(cmd, "on")) 02087 { 02088 valid = 1; 02089 emc_spindle_brake_engage_msg.serial_number = ++emcIoCommandSerialNumber; 02090 emcIoCommandBuffer->write(emc_spindle_brake_engage_msg); 02091 } 02092 } 02093 if (!valid) 02094 { 02095 printf("syntax: brake on | off\n"); 02096 } 02097 } 02098 else if (!strcmp(cmd, "estop")) 02099 { 02100 valid = 0; 02101 02102 if (1 == sscanf(input, "%*s %s", cmd)) 02103 { 02104 if (!strcmp(cmd, "off")) 02105 { 02106 valid = 1; 02107 emc_aux_estop_off_msg.serial_number = ++emcIoCommandSerialNumber; 02108 emcIoCommandBuffer->write(emc_aux_estop_off_msg); 02109 } 02110 else if (!strcmp(cmd, "on")) 02111 { 02112 valid = 1; 02113 emc_aux_estop_on_msg.serial_number = ++emcIoCommandSerialNumber; 02114 emcIoCommandBuffer->write(emc_aux_estop_on_msg); 02115 } 02116 } 02117 02118 if (!valid) 02119 { 02120 printf("syntax: estop off | on\n"); 02121 } 02122 } 02123 else if (!strcmp(cmd, "mist")) 02124 { 02125 valid = 0; 02126 02127 if (1 == sscanf(input, "%*s %s", cmd)) 02128 { 02129 if (!strcmp(cmd, "off")) 02130 { 02131 valid = 1; 02132 emc_coolant_mist_off_msg.serial_number = ++emcIoCommandSerialNumber; 02133 emcIoCommandBuffer->write(emc_coolant_mist_off_msg); 02134 } 02135 else if (!strcmp(cmd, "on")) 02136 { 02137 valid = 1; 02138 emc_coolant_mist_on_msg.serial_number = ++emcIoCommandSerialNumber; 02139 emcIoCommandBuffer->write(emc_coolant_mist_on_msg); 02140 } 02141 } 02142 02143 if (!valid) 02144 { 02145 printf("syntax: mist on | off"); 02146 } 02147 } 02148 else if (!strcmp(cmd, "flood")) 02149 { 02150 valid = 0; 02151 02152 if (1 == sscanf(input, "%*s %s", cmd)) 02153 { 02154 if (!strcmp(cmd, "off")) 02155 { 02156 valid = 1; 02157 emc_coolant_flood_off_msg.serial_number = ++emcIoCommandSerialNumber; 02158 emcIoCommandBuffer->write(emc_coolant_flood_off_msg); 02159 } 02160 else if (!strcmp(cmd, "on")) 02161 { 02162 valid = 1; 02163 emc_coolant_flood_on_msg.serial_number = ++emcIoCommandSerialNumber; 02164 emcIoCommandBuffer->write(emc_coolant_flood_on_msg); 02165 } 02166 } 02167 02168 if (!valid) 02169 { 02170 printf("syntax: flood on | off\n"); 02171 } 02172 } 02173 else if (anyprintable(input)) 02174 { 02175 printf("?\n"); 02176 } 02177 else 02178 { 02179 // blank line was typed 02180 emcpanelShow(lastPrint); 02181 } 02182 } // end else which == SELECT_EMC_IO 02183 } // end of while stdin 02184 02185 emcpanelQuit(); 02186 02187 exit(0); 02188 } |
|
Definition at line 876 of file emcpanel.cc. Referenced by main().
00877 { 00878 NMLTYPE type; 00879 00880 if (0 == emcErrorBuffer || 00881 ! emcErrorBuffer->valid()) 00882 { 00883 return; 00884 } 00885 00886 switch (type = emcErrorBuffer->read()) 00887 { 00888 case 0: 00889 // nothing new 00890 break; 00891 00892 case -1: 00893 // error reading channel 00894 break; 00895 00896 case EMC_OPERATOR_ERROR_TYPE: 00897 printf("\nerror: [%d] %s\n", 00898 ((EMC_OPERATOR_ERROR *) (emcErrorBuffer->get_address()))->id, 00899 ((EMC_OPERATOR_ERROR *) (emcErrorBuffer->get_address()))->error); 00900 printPrompt = 1; 00901 break; 00902 00903 case EMC_OPERATOR_TEXT_TYPE: 00904 printf("\ntext: [%d] %s\n", 00905 ((EMC_OPERATOR_TEXT *) (emcErrorBuffer->get_address()))->id, 00906 ((EMC_OPERATOR_TEXT *) (emcErrorBuffer->get_address()))->text); 00907 printPrompt = 1; 00908 break; 00909 00910 case EMC_OPERATOR_DISPLAY_TYPE: 00911 printf("\ndisplay: [%d] %s\n", 00912 ((EMC_OPERATOR_DISPLAY *) (emcErrorBuffer->get_address()))->id, 00913 ((EMC_OPERATOR_DISPLAY *) (emcErrorBuffer->get_address()))->display); 00914 printPrompt = 1; 00915 break; 00916 00917 case NML_ERROR_TYPE: 00918 printf("\nerror: %s\n", 00919 ((NML_ERROR *) (emcErrorBuffer->get_address()))->error); 00920 printPrompt = 1; 00921 break; 00922 00923 case NML_TEXT_TYPE: 00924 printf("\ntext: %s\n", 00925 ((NML_TEXT *) (emcErrorBuffer->get_address()))->text); 00926 printPrompt = 1; 00927 break; 00928 00929 case NML_DISPLAY_TYPE: 00930 printf("\ndisplay: %s\n", 00931 ((NML_DISPLAY *) (emcErrorBuffer->get_address()))->display); 00932 printPrompt = 1; 00933 break; 00934 00935 default: 00936 // unrecognized message 00937 printf("\nunrecognized message in error channel: %ld\n", type); 00938 printPrompt = 1; 00939 break; 00940 } 00941 } |
|
Definition at line 720 of file emcpanel.cc. Referenced by emcpanelShow().
00721 { 00722 int axis; 00723 00724 axis = axisSelect; 00725 00726 printf("axis:\t\t\t%d\n", emcStatus->motion.axis[axis].axis); 00727 00728 printf("type:\t\t\t%s\n", 00729 emcStatus->motion.axis[axis].axisType == EMC_AXIS_LINEAR ? "LINEAR" : 00730 emcStatus->motion.axis[axis].axisType == EMC_AXIS_ANGULAR ? "ANGULAR" : 00731 "?"); 00732 printf("units:\t\t\t%f\n", emcStatus->motion.axis[axis].units); 00733 00734 printf("P I D FF0 FF1 FF2:\t%.3f %.3f %.3f %.3f %.3f %.3f\n", 00735 emcStatus->motion.axis[axis].p, 00736 emcStatus->motion.axis[axis].i, 00737 emcStatus->motion.axis[axis].d, 00738 emcStatus->motion.axis[axis].ff0, 00739 emcStatus->motion.axis[axis].ff1, 00740 emcStatus->motion.axis[axis].ff2); 00741 printf("cycle time:\t\t%f\n", emcStatus->motion.axis[axis].cycleTime); 00742 00743 printf("input scale:\t\t%f %f\n", 00744 emcStatus->motion.axis[axis].inputScale, 00745 emcStatus->motion.axis[axis].inputOffset); 00746 00747 printf("output scale:\t\t%f %f\n", 00748 emcStatus->motion.axis[axis].outputScale, 00749 emcStatus->motion.axis[axis].outputOffset); 00750 00751 printf("pos limits:\t\t%f %f\n", 00752 emcStatus->motion.axis[axis].minPositionLimit, 00753 emcStatus->motion.axis[axis].maxPositionLimit); 00754 00755 printf("output limits:\t\t%f %f\n", 00756 emcStatus->motion.axis[axis].minOutputLimit, 00757 emcStatus->motion.axis[axis].maxOutputLimit); 00758 00759 printf("max ferror:\t\t%f\n", emcStatus->motion.axis[axis].maxFerror); 00760 00761 printf("polarity:\t\tEN\tLS-\tLS+\tHS\tH\tF\n"); 00762 printf("\t\t\t%d\t %d\t %d\t%d\t%d\t%d\n", 00763 (int) emcStatus->motion.axis[axis].enablePolarity, 00764 (int) emcStatus->motion.axis[axis].minLimitSwitchPolarity, 00765 (int) emcStatus->motion.axis[axis].maxLimitSwitchPolarity, 00766 (int) emcStatus->motion.axis[axis].homeSwitchPolarity, 00767 (int) emcStatus->motion.axis[axis].homingPolarity, 00768 (int) emcStatus->motion.axis[axis].faultPolarity); 00769 00770 printf("setpoint: \t\t%f\n", emcStatus->motion.axis[axis].setpoint); 00771 printf("ferror: \t\t%f\n", emcStatus->motion.axis[axis].ferrorCurrent); 00772 printf("ferrorHighMark: \t\t%f\n", emcStatus->motion.axis[axis].ferrorHighMark); 00773 printf("output: \t\t%f\n", emcStatus->motion.axis[axis].output); 00774 printf("input: \t\t%f\n", emcStatus->motion.axis[axis].input); 00775 printf("homing: \t\t%s\n", 00776 emcStatus->motion.axis[axis].homing == 1 ? "homing" : "done"); 00777 printf("homed: \t\t%s\n", 00778 emcStatus->motion.axis[axis].homed == 1 ? "home" : "not yet"); 00779 printf("enabled: \t\t%s\n", 00780 emcStatus->motion.axis[axis].enabled == 1 ? "ON" : "OFF"); 00781 } |
|
Definition at line 783 of file emcpanel.cc. Referenced by emcpanelShow().
00784 { 00785 int t; 00786 int code; 00787 00788 if (0 == emcStatus) 00789 { 00790 return; 00791 } 00792 00793 for (t = 1; t < EMC_TASK_ACTIVE_G_CODES; t++) 00794 { 00795 code = emcStatus->task.activeGCodes[t]; 00796 if (code == -1) 00797 continue; 00798 if (code % 10) 00799 printf("G%.1f ", (double) code / 10.0); 00800 else 00801 printf("G%d ", code / 10); 00802 } 00803 printf("\n"); 00804 } |
|
Definition at line 583 of file emcpanel.cc. Referenced by emcpanelShow().
00584 { 00585 if (0 == emcStatus) 00586 { 00587 return; 00588 } 00589 00590 printf("NML: \tcmd\tser #\tstatus\n"); 00591 printf(" \t%ld\t%d\t%s\n", 00592 emcStatus->command_type, emcStatus->echo_serial_number, 00593 emcStatus->status == RCS_DONE ? "DONE" : 00594 emcStatus->status == RCS_EXEC ? "EXEC" : 00595 emcStatus->status == RCS_ERROR ? "ERROR" : "(?)"); 00596 00597 printf("Exec: \t%s\n", 00598 emcStatus->task.execState == EMC_TASK_EXEC_ERROR ? "ERROR" : 00599 emcStatus->task.execState == EMC_TASK_EXEC_DONE ? "DONE" : 00600 emcStatus->task.execState == EMC_TASK_EXEC_WAITING_FOR_MOTION ? "MOTION WAIT" : 00601 emcStatus->task.execState == EMC_TASK_EXEC_WAITING_FOR_IO ? "IO WAIT" : 00602 emcStatus->task.execState == EMC_TASK_EXEC_WAITING_FOR_MOTION_QUEUE ? "QUEUE WAIT" : 00603 emcStatus->task.execState == EMC_TASK_EXEC_WAITING_FOR_PAUSE ? "PAUSE WAIT" : 00604 emcStatus->task.execState == EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO ? "MOTION AND IO WAIT" : 00605 "?"); 00606 00607 printf("Interp: \t%s\n", 00608 emcStatus->task.interpState == EMC_TASK_INTERP_IDLE ? "IDLE" : 00609 emcStatus->task.interpState == EMC_TASK_INTERP_READING ? "READING" : 00610 emcStatus->task.interpState == EMC_TASK_INTERP_PAUSED ? "PAUSED" : 00611 emcStatus->task.interpState == EMC_TASK_INTERP_WAITING ? "WAITING" : 00612 "?"); 00613 00614 printf("Motion line: \t%d\n", emcStatus->task.motionLine); 00615 printf("Current line: \t%d\n", emcStatus->task.currentLine); 00616 printf("Read line: \t%d\n", emcStatus->task.readLine); 00617 } |
|
Definition at line 619 of file emcpanel.cc. Referenced by emcpanelShow().
00620 { 00621 int t; 00622 char bits[9]; // for "11011001\0" bits string 00623 00624 if (0 == emcIoStatus) 00625 { 00626 return; 00627 } 00628 00629 printf("emcio status: %ld %d %s %s %d %d %s\n", 00630 emcIoStatus->command_type, 00631 emcIoStatus->echo_serial_number, 00632 status_to_string(emcIoStatus->status), 00633 state_to_string(emcIoStatus->state), 00634 emcIoStatus->line, 00635 emcIoStatus->source_line, 00636 emcIoStatus->source_file); 00637 00638 printf("heartbeat: %lu\n", emcIoStatus->heartbeat); 00639 00640 printf("debug level: %d\n", emcIoStatus->debug); 00641 00642 printf("tools: pocket\ttool\tlength\t\tdiameter\n"); 00643 printf(" ------\t----\t------\t\t--------\n"); 00644 for (t = 0; t < CANON_TOOL_MAX; t++) 00645 { 00646 if (emcIoStatus->tool.toolTable[t].id != 0) 00647 { 00648 printf(" %d\t%d\t%10.4f\t%10.4f\n", 00649 t, 00650 emcIoStatus->tool.toolTable[t].id, 00651 emcIoStatus->tool.toolTable[t].length, 00652 emcIoStatus->tool.toolTable[t].diameter); 00653 } 00654 } 00655 00656 printf("tool prepped: %d\n", 00657 emcIoStatus->tool.toolPrepped); 00658 printf("tool in spindle: %d\n", 00659 emcIoStatus->tool.toolInSpindle); 00660 00661 printf("spindle: %.0f RPM, %s\n", 00662 emcIoStatus->spindle.speed, 00663 emcIoStatus->spindle.brake == 0 ? "free" : "braked"); 00664 00665 printf("mist: %s\n", 00666 emcIoStatus->coolant.mist == 0 ? "OFF" : "ON"); 00667 printf("flood: %s\n", 00668 emcIoStatus->coolant.flood == 0 ? "OFF" : "ON"); 00669 00670 printf("estop: %s\n", 00671 emcIoStatus->aux.estop == 0 ? "OFF" : "ESTOPPED"); 00672 00673 printf("lube: %s\n", 00674 emcIoStatus->lube.on == 0 ? "OFF" : "ON"); 00675 00676 printf("lube level: %s\n", 00677 emcIoStatus->lube.level == 0 ? "LOW" : "OK"); 00678 00679 printf("digital ins: "); 00680 for (t = EMC_AUX_MAX_DIN - 1; t >= 0; t--) 00681 { 00682 btostr(bits, emcIoStatus->aux.din[t]); 00683 printf("%s ", bits); 00684 } 00685 printf("\n"); 00686 00687 printf("digital outs: "); 00688 for (t = EMC_AUX_MAX_DOUT - 1; t >= 0; t--) 00689 { 00690 btostr(bits, emcIoStatus->aux.dout[t]); 00691 printf("%s ", bits); 00692 } 00693 printf("\n"); 00694 } |
|
Definition at line 428 of file emcpanel.cc. Referenced by emcpanelShow().
00429 { 00430 if (0 == emcStatus) 00431 { 00432 return; 00433 } 00434 00435 printf("Mode:\t\t"); 00436 switch (emcStatus->task.mode) 00437 { 00438 case EMC_TASK_MODE_AUTO: 00439 printf("AUTO\n"); 00440 break; 00441 case EMC_TASK_MODE_MDI: 00442 printf("MDI\n"); 00443 break; 00444 case EMC_TASK_MODE_MANUAL: 00445 printf("MANUAL\n"); 00446 break; 00447 default: 00448 printf("%d (?)\n", emcStatus->task.mode); 00449 break; 00450 } 00451 } |
|
Definition at line 510 of file emcpanel.cc. Referenced by emcpanelShow().
00511 { 00512 printf("Axis: \t%s\n", 00513 axisSelect == AXIS_X ? "X" : 00514 axisSelect == AXIS_Y ? "Y" : 00515 axisSelect == AXIS_Z ? "Z" : "?"); 00516 printf("Speed: \t%f\n", speedSelect); 00517 printf("Jog Type:\t%s\n", 00518 jogSelect == JOG_CONT ? "CONT" : 00519 jogSelect == JOG_INCR ? "INCR" : "?"); 00520 printf("Jog Incr:\t%f\n", jogIncr); 00521 } |
|
Definition at line 453 of file emcpanel.cc. Referenced by emcpanelShow().
00454 { 00455 int axis; 00456 00457 if (0 == emcStatus) 00458 { 00459 return; 00460 } 00461 00462 if (displayMode == DISPLAY_ABS) 00463 { 00464 printf("Cmd Pos: \t%f\t%f\t%f\n", 00465 emcStatus->motion.traj.position.tran.x, 00466 emcStatus->motion.traj.position.tran.y, 00467 emcStatus->motion.traj.position.tran.z); 00468 printf("Act Pos: \t%f\t%f\t%f\n", 00469 emcStatus->motion.traj.actualPosition.tran.x, 00470 emcStatus->motion.traj.actualPosition.tran.y, 00471 emcStatus->motion.traj.actualPosition.tran.z); 00472 } 00473 else if (displayMode == DISPLAY_REL) 00474 { 00475 printf("Cmd Pos: \t%f\t%f\t%f\n", 00476 emcStatus->motion.traj.position.tran.x - 00477 emcStatus->task.origin.tran.x, 00478 emcStatus->motion.traj.position.tran.y - 00479 emcStatus->task.origin.tran.y, 00480 emcStatus->motion.traj.position.tran.z - 00481 emcStatus->task.origin.tran.z); 00482 printf("Act Pos: \t%f\t%f\t%f\n", 00483 emcStatus->motion.traj.actualPosition.tran.x - 00484 emcStatus->task.origin.tran.x, 00485 emcStatus->motion.traj.actualPosition.tran.y - 00486 emcStatus->task.origin.tran.y, 00487 emcStatus->motion.traj.actualPosition.tran.z - 00488 emcStatus->task.origin.tran.z); 00489 } 00490 else 00491 { 00492 printf("Position:\t(display mode not abs or rel: %d)\n", 00493 displayMode); 00494 } 00495 00496 printf("Axes: "); 00497 for (axis = 0; axis < EMC_AXIS_MAX; axis++) { 00498 printf("\t%f", emcStatus->motion.axis[axis].setpoint); 00499 } 00500 printf("\n"); 00501 00502 printf("Queue: \t%d\n", 00503 emcStatus->motion.traj.queue); 00504 printf("Inpos: \t%d\n", 00505 emcStatus->motion.traj.inpos); 00506 printf("V Scale: \t%.2f\n", 00507 emcStatus->motion.traj.scale); 00508 } |
|
Definition at line 523 of file emcpanel.cc. Referenced by emcpanelShow().
00524 { 00525 if (0 == emcStatus) { 00526 return; 00527 } 00528 00529 if (! programOpened) { 00530 // print the last one opened, since we'll send this by default 00531 printf("Program: \t%s\n", programFile); 00532 } 00533 else { 00534 // print the one the controller knows about 00535 printf("Program: \t%s\n", emcStatus->task.file); 00536 } 00537 00538 if (emcStatus->task.currentLine > 0) { 00539 if (emcStatus->task.motionLine > 0 && 00540 emcStatus->task.motionLine < emcStatus->task.currentLine) { 00541 programActiveLine = emcStatus->task.motionLine; 00542 } 00543 else { 00544 programActiveLine = emcStatus->task.currentLine; 00545 } 00546 00547 if (programFp != 0) { 00548 if (programFpLine > programActiveLine) { 00549 rewind(programFp); 00550 programFpLine = 0; 00551 programLineText[0] = 0; 00552 } 00553 else { 00554 while (programFpLine < programActiveLine) { 00555 fgets(programLineText, EMC_TASK_COMMAND_LEN, programFp); 00556 programFpLine++; 00557 } 00558 } 00559 } 00560 else { 00561 programLineText[0] = 0; 00562 } 00563 } 00564 else { 00565 programActiveLine = 0; 00566 programLineText[0] = 0; 00567 } 00568 00569 printf("Units: \t%s\n", 00570 emcStatus->task.programUnits == CANON_UNITS_INCHES ? "inches" : 00571 emcStatus->task.programUnits == CANON_UNITS_MM ? "mm" : 00572 emcStatus->task.programUnits == CANON_UNITS_CM ? "cm" : "?"); 00573 00574 printf("Line: \t%d\n", programActiveLine); 00575 printf("Command: \t%s\n", programLineText); 00576 00577 printf("Origin: \t%f\t%f\t%f\n", 00578 emcStatus->task.origin.tran.x, 00579 emcStatus->task.origin.tran.y, 00580 emcStatus->task.origin.tran.z); 00581 } |
|
Definition at line 398 of file emcpanel.cc. Referenced by emcpanelShow().
00399 { 00400 if (0 == emcStatus) 00401 { 00402 return; 00403 } 00404 00405 printf("Heartbeat: \t%lu\n", emcStatus->task.heartbeat); 00406 printf("Debug: \t%d\n", emcStatus->debug); 00407 printf("State: \t"); 00408 switch (emcStatus->task.state) 00409 { 00410 case EMC_TASK_STATE_OFF: 00411 printf("OFF\n"); 00412 break; 00413 case EMC_TASK_STATE_ON: 00414 printf("ON\n"); 00415 break; 00416 case EMC_TASK_STATE_ESTOP: 00417 printf("ESTOP\n"); 00418 break; 00419 case EMC_TASK_STATE_ESTOP_RESET: 00420 printf("ESTOP RESET\n"); 00421 break; 00422 default: 00423 printf("%d (?)\n", emcStatus->task.state); 00424 break; 00425 } 00426 } |
|
Definition at line 696 of file emcpanel.cc. Referenced by emcpanelShow().
00697 { 00698 int t; 00699 00700 if (0 == emcStatus) 00701 { 00702 return; 00703 } 00704 00705 printf("pocket\ttool\tlength\tdiameter\n"); 00706 printf("------\t----\t------\t--------\n"); 00707 for (t = 0; t < CANON_TOOL_MAX; t++) 00708 { 00709 if (emcStatus->io.tool.toolTable[t].id != 0) 00710 { 00711 printf("%d\t%d\t%f\t%f\n", 00712 t, 00713 emcStatus->io.tool.toolTable[t].id, 00714 emcStatus->io.tool.toolTable[t].length, 00715 emcStatus->io.tool.toolTable[t].diameter); 00716 } 00717 } 00718 } |
|
Definition at line 321 of file emcpanel.cc. 00322 { 00323 static char scratch[STRLEN]; 00324 00325 switch (state) 00326 { 00327 case NEW_COMMAND: 00328 return "NEW_COMMAND"; 00329 case S0: 00330 return "S0"; 00331 case S1: 00332 return "S1"; 00333 case S2: 00334 return "S2"; 00335 case S3: 00336 return "S3"; 00337 case S4: 00338 return "S4"; 00339 case S5: 00340 return "S5"; 00341 case S6: 00342 return "S6"; 00343 case S7: 00344 return "S7"; 00345 case S8: 00346 return "S8"; 00347 case S9: 00348 return "S9"; 00349 case S10: 00350 return "S10"; 00351 case S11: 00352 return "S11"; 00353 case S12: 00354 return "S12"; 00355 default: 00356 sprintf(scratch, "%d", state); 00357 return scratch; 00358 } 00359 } |
|
Definition at line 361 of file emcpanel.cc. 00362 { 00363 static char scratch[STRLEN]; 00364 00365 switch (status) 00366 { 00367 case RCS_DONE: 00368 return "DONE"; 00369 case RCS_EXEC: 00370 return "EXEC"; 00371 case RCS_ERROR: 00372 return "ERROR"; 00373 default: 00374 sprintf(scratch, "%d", status); 00375 return scratch; 00376 } 00377 } |
|
Definition at line 944 of file emcpanel.cc. Referenced by alarmHandler(), emcCommandWait(), emcCommandWaitDone(), emcCommandWaitReceived(), emc_abs_act_pos(), emc_abs_cmd_pos(), emc_axis_alter(), emc_axis_enable(), emc_axis_gains(), emc_brake(), emc_debug(), emc_display_angular_units(), emc_display_linear_units(), emc_estop(), emc_estop_in(), emc_feed_override(), emc_flood(), emc_io_command(), emc_io_command_number(), emc_io_command_status(), emc_io_heartbeat(), emc_joint_fault(), emc_joint_homed(), emc_joint_limit(), emc_joint_pos(), emc_joint_type(), emc_joint_units(), emc_kinematics_type(), emc_log_islogging(), emc_log_isopen(), emc_log_numpoints(), emc_lube(), emc_lube_level(), emc_machine(), emc_mist(), emc_mode(), emc_motion_command(), emc_motion_command_number(), emc_motion_command_status(), emc_motion_heartbeat(), emc_override_limit(), emc_pos_offset(), emc_probe_clear(), emc_probe_index(), emc_probe_polarity(), emc_probe_tripped(), emc_probe_value(), emc_probed_pos(), emc_program(), emc_program_angular_units(), emc_program_codes(), emc_program_line(), emc_program_linear_units(), emc_program_status(), emc_rel_act_pos(), emc_rel_cmd_pos(), emc_spindle(), emc_task_command(), emc_task_command_number(), emc_task_command_status(), emc_task_heartbeat(), emc_teleop_enable(), emc_tool(), emc_tool_offset(), emc_update(), emc_user_angular_units(), emc_user_linear_units(), main(), sendProgramRun(), and timeoutCB().
00945 { 00946 int r1 = 0, r2 = 0; 00947 NMLTYPE type; 00948 00949 // update EMC TASK 00950 if (0 == emcStatus) 00951 { 00952 // not connected 00953 r1 = -1; 00954 } 00955 else 00956 { 00957 switch (type = emcStatusBuffer->peek()) 00958 { 00959 case -1: 00960 // error on CMS channel 00961 printf("error reading emcStatus channel\n"); 00962 r1 = -1; 00963 break; 00964 00965 case 0: // no new data 00966 case EMC_STAT_TYPE: // new data 00967 // new data 00968 // get command serial number 00969 emcCommandSerialNumber = emcStatus->echo_serial_number; 00970 break; 00971 00972 default: 00973 printf("bad id in emcStatusBuffer: %ld\n", type); 00974 r1 = -1; 00975 break; 00976 } 00977 } 00978 00979 // update EMCIO 00980 if (0 == emcIoStatus) 00981 { 00982 // not connected 00983 r2 = -1; 00984 } 00985 else 00986 { 00987 switch (type = emcIoStatusBuffer->peek()) 00988 { 00989 case -1: 00990 // error on CMS channel 00991 printf("error reading emcioStatus channel\n"); 00992 r2 = -1; 00993 break; 00994 00995 case 0: // no new data 00996 case EMC_IO_STAT_TYPE: // new data 00997 // new data 00998 // get command serial number 00999 emcIoCommandSerialNumber = emcIoStatus->echo_serial_number; 01000 break; 01001 01002 default: 01003 printf("bad id in emcIoStatusBuffer: %ld\n", type); 01004 r2 = -1; 01005 break; 01006 } 01007 } 01008 01009 return (r1 != 0 || 01010 r2 != 0) ? -1 : 0; 01011 } |
|
Definition at line 141 of file emcpanel.cc. |
|
|
|
Definition at line 143 of file emcpanel.cc. |
|
Definition at line 144 of file emcpanel.cc. |
|
Definition at line 147 of file emcpanel.cc. |
|
Definition at line 142 of file emcpanel.cc. |
|
|