📄 xemc.cc
字号:
if (done) { XtVaGetValues(toolSetOffsetTool, XtNstring, &str1, NULL); XtVaGetValues(toolSetOffsetLength, XtNstring, &str2, NULL); XtVaGetValues(toolSetOffsetDiameter, XtNstring, &str3, NULL); if (1 == sscanf(str1, "%d", &tool) && 1 == sscanf(str2, "%lf", &length) && 1 == sscanf(str3, "%lf", &diameter)) { sendToolSetOffset(tool, length, diameter); } } XtPopdown(toolSetOffsetShell);}static void toolSetOffsetUpAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ char string[256]; sprintf(string, "%d", emcStatus->io.tool.toolInSpindle); XtVaSetValues(toolSetOffsetTool, XtNstring, string, NULL); sprintf(string, "%f", emcStatus->motion.traj.actualPosition.tran.z - emcStatus->task.origin.tran.z); XtVaSetValues(toolSetOffsetLength, XtNstring, string, NULL); XtVaSetValues(toolSetOffsetDiameter, XtNstring, "0.0", NULL); dialogPopup(NULL, toolSetOffsetShell, NULL); // trap window kill XSetWMProtocols(XtDisplay(topLevel), XtWindow(toolSetOffsetShell), &killAtom, 1);}static Pixel toolSetOffsetFormBorderColor;static int toolSetOffsetReturnIsDone = 1;static void toolSetOffsetReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ if (toolSetOffsetReturnIsDone) { toolSetOffsetDoDone(1); } else { toolSetOffsetDoDone(0); }}static void toolSetOffsetDoneCB(Widget w, XtPointer client_data, XtPointer call_data){ toolSetOffsetDoDone(1);}static void toolSetOffsetCancelCB(Widget w, XtPointer client_data, XtPointer call_data){ toolSetOffsetDoDone(0);}static void toolSetOffsetTabAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ if (toolSetOffsetReturnIsDone) { setBorderColor(toolSetOffsetDone, toolSetOffsetFormBorderColor); setBorderColor(toolSetOffsetCancel, pixelRed); toolSetOffsetReturnIsDone = 0; } else { setBorderColor(toolSetOffsetDone, pixelRed); setBorderColor(toolSetOffsetCancel, toolSetOffsetFormBorderColor); toolSetOffsetReturnIsDone = 1; }}static void doPosOffsetDone(){ String string; char cmd[256]; double val; string = XawDialogGetValueString(posOffsetDialog); if (1 == sscanf(string, "%lf", &val)) { // send MDI command // FIXME-- this RS-274-NGC specific; need to add NML way to do this sprintf(cmd, "G92%s%f\n", activeAxis == 0 ? "X" : activeAxis == 1 ? "Y" : activeAxis == 2 ? "Z" : "X", val); sendMdiCmd(cmd); } XtPopdown(posOffsetShell);}static void posOffsetUpAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ if (w == posLabel[0]) { activeAxis = 0; } else if (w == posLabel[1]) { activeAxis = 1; } else if (w == posLabel[2]) { activeAxis = 2; } XtVaSetValues(posOffsetDialog, XtNvalue, "0.0", NULL); dialogPopup(NULL, posOffsetShell, NULL); // trap window kill XSetWMProtocols(XtDisplay(topLevel), XtWindow(posOffsetShell), &killAtom, 1);}static void posOffsetReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ doPosOffsetDone();}static void doJogSpeedDone(){ String string; int val; char labelString[80]; string = XawDialogGetValueString(jogSpeedDialog); if (1 == sscanf(string, "%d", &val)) { jogSpeed = val; if (jogSpeed > maxJogSpeed) { jogSpeed = maxJogSpeed; } sprintf(labelString, "%d", jogSpeed); setLabel(jogSpeedLabel, labelString); redraw = 1; } XtPopdown(jogSpeedShell);}static void jogSpeedReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ doJogSpeedDone();}static void doFeedOverrideDone(){ String string; double val; string = XawDialogGetValueString(feedOverrideDialog); if (1 == sscanf(string, "%lf", &val)) { sendFeedOverride(val / 100.0); } XtPopdown(feedOverrideShell);}static void feedOverrideReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ doFeedOverrideDone();}static void programRunCB(Widget w, XtPointer client_data, XtPointer call_data){ sendProgramRun(programStartLine);}static void programPauseCB(Widget w, XtPointer client_data, XtPointer call_data){ sendProgramPause();}static void programResumeCB(Widget w, XtPointer client_data, XtPointer call_data){ sendProgramResume();}static void programStepCB(Widget w, XtPointer client_data, XtPointer call_data){ sendProgramStep();}static void programVerifyCB(Widget w, XtPointer client_data, XtPointer call_data){ programStartLine = -1; sendProgramRun(programStartLine);}static void helpXemcReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ XtPopdown(helpXemcShell);}static void helpAboutReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ XtPopdown(helpAboutShell);}static void genericDoneCB(Widget w, XtPointer client_data, XtPointer call_data){ XtPopdown((Widget) client_data);}// button handling codestatic void downAction(Widget w, XEvent *ev, String *params, Cardinal *numParams){ char string[80]; if (w == spindleIncLabel) { sendSpindleIncrease(); } else if (w == spindleDecLabel) { sendSpindleDecrease(); } else if (w == jogMinusLabel) { if (jogIncrement > 0.0) { sendJogIncr(activeAxis, -jogSpeed, jogIncrement); } else { sendJogCont(activeAxis, -jogSpeed); } } else if (w == jogPlusLabel) { if (jogIncrement > 0.0) { sendJogIncr(activeAxis, jogSpeed, jogIncrement); } else { sendJogCont(activeAxis, jogSpeed); } } else if (w == posLabel[0]) { activeAxis = 0; } else if (w == posLabel[1]) { activeAxis = 1; } else if (w == posLabel[2]) { activeAxis = 2; } else if (w == jogSpeedLabel) { // pop up menu to change jog speed XtVaSetValues(jogSpeedDialog, XtNvalue, "", NULL); dialogPopup(NULL, jogSpeedShell, NULL); // trap window kill XSetWMProtocols(XtDisplay(topLevel), XtWindow(jogSpeedShell), &killAtom, 1); } else if (w == jogSpeedDecLabel) { // change it once here and redraw if (--jogSpeed <= 0) { jogSpeed = 1; } sprintf(string, "%d", jogSpeed); setLabel(jogSpeedLabel, string); redraw = 1; // set jogSpeedChange so that timer callback will continue to change // until button up clears it jogSpeedChange = -1; } else if (w == jogSpeedIncLabel) { // change it once here and redraw if (++jogSpeed > maxJogSpeed) { jogSpeed = maxJogSpeed; } sprintf(string, "%d", jogSpeed); setLabel(jogSpeedLabel, string); redraw = 1; // set jogSpeedChange so that timer callback will continue to change // until button up clears it jogSpeedChange = +1; } else if (w == feedOverrideLabel) { // pop up menu to change feed override XtVaSetValues(feedOverrideDialog, XtNvalue, "", NULL); dialogPopup(NULL, feedOverrideShell, NULL); // trap window kill XSetWMProtocols(XtDisplay(topLevel), XtWindow(feedOverrideShell), &killAtom, 1); } else if (w == feedOverrideDecLabel) { // change it once here and redraw if ((feedOverride -= 10) <= 0) { feedOverride = 0; } sprintf(string, "%3d", feedOverride); setLabel(feedOverrideLabel, string); redraw = 1; // set feedOverrideChange so that timer callback will continue to change // until button up clears it feedOverrideChange = -1; } else if (w == feedOverrideIncLabel) { // change it once here and redraw if ((feedOverride += 10) > maxFeedOverride) { feedOverride = maxFeedOverride; } sprintf(string, "%3d", feedOverride); setLabel(feedOverrideLabel, string); redraw = 1; // set feedOverrideChange so that timer callback will continue to change // until button up clears it feedOverrideChange = +1; } else { printf("down\n"); }}static void upAction(Widget w, XEvent *ev, String *params, Cardinal *numParams){ if (w == spindleIncLabel) { sendSpindleConstant(); } else if (w == spindleDecLabel) { sendSpindleConstant(); } else if (w == jogMinusLabel) { // only stop it if it's continuous jogging if (jogIncrement <= 0.0) { sendJogStop(axisJogging); } } else if (w == jogPlusLabel) { // only stop it if it's continuous jogging if (jogIncrement <= 0.0) { sendJogStop(axisJogging); } } else if (w == posLabel[0]) { } else if (w == posLabel[1]) { } else if (w == posLabel[2]) { } else if (w == jogSpeedDecLabel) { jogSpeedChange = 0; } else if (w == jogSpeedIncLabel) { jogSpeedChange = 0; } else if (w == feedOverrideDecLabel) { feedOverrideChange = 0; sendFeedOverride((double) feedOverride / 100.0); } else if (w == feedOverrideIncLabel) { feedOverrideChange = 0; sendFeedOverride((double) feedOverride / 100.0); } else { printf("up\n"); }}static void mdiReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params){ String string; XtVaGetValues(mdiFormText, XtNstring, &string, NULL); sendMdiCmd(string);}// key handling code// FIXME-- better way to get these?#define XEVENT_TYPE_XKEY_KEY_PRESS_EVENT 2#define XEVENT_TYPE_XKEY_KEY_RELEASE_EVENT 3#define XKEY_EVENT_STATE_NONE 0x00#define XKEY_EVENT_STATE_SHIFT 0x01#define XKEY_EVENT_STATE_CONTROL 0x04#define XKEY_EVENT_STATE_ALT 0x08#define KEY_ESC 9#define KEY_F1 67#define KEY_F2 68#define KEY_F3 69#define KEY_F4 70#define KEY_F5 71#define KEY_F6 72#define KEY_F7 73#define KEY_F8 74#define KEY_F9 75#define KEY_F10 76#define KEY_F11 95#define KEY_F12 96#define KEY_PGUP 99#define KEY_PGDN 105#define KEY_LEFT 100#define KEY_RIGHT 102#define KEY_UP 98#define KEY_DOWN 104#define KEY_X 53#define KEY_Y 29#define KEY_Z 52#define KEY_HOME 97#define KEY_END 103#define KEY_1 10#define KEY_2 11#define KEY_3 12#define KEY_4 13#define KEY_5 14#define KEY_6 15#define KEY_7 16#define KEY_8 17#define KEY_9 18#define KEY_0 19#define KEY_O 32#define KEY_E 26#define KEY_R 27#define KEY_T 28#define KEY_P 33#define KEY_V 55#define KEY_A 38#define KEY_S 39#define KEY_L 46#define KEY_B 56#define KEY_F 41#define KEY_COMMA 59#define KEY_PERIOD 60#define KEY_I 31#define KEY_C 54static int keyReleaseOut = 0; // set if we saw a release, cleared right away // if the key repeat kicks back on, else it // goes through as a true key releasestatic double keyReleaseTime = 0.0;static unsigned int keyPressState;static unsigned int keyPressKeycode;static unsigned int keyReleaseState;static unsigned int keyReleaseKeycode;static void keyPressAction(unsigned int state, unsigned int keycode){ char string[256]; static double saveJogIncrement = 0.1000; switch (keycode) { case KEY_ESC: sendAbort(); break; case KEY_F1: // estop toggle if (emcStatus->task.state == EMC_TASK_STATE_ESTOP) { sendEstopReset(); } else { sendEstop(); } break; case KEY_F2: // estop toggle if (emcStatus->task.state == EMC_TASK_STATE_ESTOP_RESET) { sendMachineOn(); } else { sendMachineOff(); } break; case KEY_F3: // manual mode sendManual(); break; case KEY_F4: // auto mode sendAuto(); break; case KEY_F5: // mdi mode sendMdi(); break; case KEY_F6: sendTaskPlanInit(); break; case KEY_F7: // mist toggle if (emcStatus->io.coolant.mist) { sendMistOff(); } else { sendMistOn(); } break; case KEY_F8: // flood toggle if (emcStatus->io.coolant.flood) { sendFloodOff(); } else { sendFloodOn(); } break; case KEY_F9: // spindle fwd/off if (emcStatus->motion.spindle.direction == 0) { // it's off, so turn forward sendSpindleForward(); } else { // it's not off, so turn off sendSpindleOff(); } break; case KEY_F10: // spindle rev/off if (emcStatus->motion.spindle.direction == 0) { // it's off, so turn reverse sendSpindleReverse(); } else { // it's not off, so turn off sendSpindleOff(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -