#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#include <values.h>#include <limits.h>#include <stdarg.h>#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>#include "rcs.hh"#include "emc.hh"#include "emcglb.h"#include "emccfg.h"#include "inifile.h"#include "posemath.h"#include "emcpos.h"#include <X11/Intrinsic.h>#include <X11/StringDefs.h>#include <X11/Xaw/Form.h>#include <X11/Xaw/Box.h>#include <X11/Xaw/Command.h>#include <X11/Xaw/Label.h>#include <X11/Xaw/AsciiText.h>#include <X11/Xaw/MenuButton.h>#include <X11/Xaw/SimpleMenu.h>#include <X11/Xaw/SmeBSB.h>#include <X11/Xaw/SmeLine.h>#include <X11/Xaw/Dialog.h>Include dependency graph for yemc.cc:

Go to the source code of this file.
Data Structures | |
| struct | FILE_WINDOW |
Defines | |
| #define | UPDATE_MSECS 100 |
| #define | EMC_COMMAND_TIMEOUT 1.0 |
| #define | EMC_COMMAND_DELAY 0.1 |
| #define | LF 10 |
| #define | CR 13 |
| #define | PROGRAM_FW_NUM_LINES 10 |
| #define | PROGRAM_FW_LEN_LINES 80 |
| #define | XEMC_NUM_AXES 6 |
| #define | MDI_LINELEN 80 |
| #define | FEED_OVERRIDE_DELAY_COUNT 1 |
| #define | AWK_PATH "awk" |
| #define | XGRAPH_PATH "xgraph" |
| #define | SYSTEM_STRING_LEN 1024 |
| #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_Q 24 |
| #define | KEY_W 25 |
| #define | KEY_E 26 |
| #define | KEY_R 27 |
| #define | KEY_T 28 |
| #define | KEY_Y 29 |
| #define | KEY_I 31 |
| #define | KEY_O 32 |
| #define | KEY_P 33 |
| #define | KEY_A 38 |
| #define | KEY_S 39 |
| #define | KEY_D 40 |
| #define | KEY_F 41 |
| #define | KEY_G 42 |
| #define | KEY_H 43 |
| #define | KEY_V 55 |
| #define | KEY_B 56 |
| #define | KEY_COMMA 59 |
| #define | KEY_PERIOD 60 |
| #define | KEY_C 54 |
| #define | RETRY_TIME 10.0 |
| #define | RETRY_INTERVAL 1.0 |
Enumerations | |
| enum | KINEMATICS_TYPE { KINEMATICS_IDENTITY = 1, KINEMATICS_SERIAL, KINEMATICS_PARALLEL } |
| enum | COORD_TYPE { COORD_RELATIVE = 1, COORD_MACHINE } |
| enum | POS_DISPLAY_TYPE { POS_DISPLAY_ACT = 1, POS_DISPLAY_CMD } |
| enum | POS_FRAME_TYPE { POS_FRAME_WORLD = 1, POS_FRAME_JOINT } |
Functions | |
| void | errorReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | errorDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| int | createErrorShell () |
| int | destroyErrorShell () |
| void | popupError (const char *fmt,...) |
| void | quit () |
| int | emcTaskNmlGet () |
| int | emcErrorNmlGet () |
| void | printError (char *error) |
| int | updateStatus () |
| int | updateError () |
| int | emcCommandWaitReceived (int serial_number) |
| int | emcCommandWaitDone (int serial_number) |
| int | fwClear (FILE_WINDOW *fw) |
| int | fwInit (FILE_WINDOW *fw, int _maxWindowLines, int _maxLineLen) |
| int | fwOpen (FILE_WINDOW *fw, const char *file) |
| int | fwClose (FILE_WINDOW *fw) |
| int | fwAddLine (FILE_WINDOW *fw, const char *line) |
| int | fwSyncLine (FILE_WINDOW *fw, int syncLine) |
| int | fwString (FILE_WINDOW *fw, char *string) |
| int | sendEstop () |
| int | sendEstopReset () |
| int | sendMachineOn () |
| int | sendMachineOff () |
| int | sendManual () |
| int | sendAuto () |
| int | sendMdi () |
| int | sendToolSetOffset (int tool, double length, double diameter) |
| int | sendMistOn () |
| int | sendMistOff () |
| int | sendFloodOn () |
| int | sendFloodOff () |
| int | sendSpindleForward () |
| int | sendSpindleReverse () |
| int | sendSpindleOff () |
| int | sendSpindleIncrease () |
| int | sendSpindleDecrease () |
| int | sendSpindleConstant () |
| int | sendBrakeEngage () |
| int | sendBrakeRelease () |
| int | sendAbort () |
| int | sendJogStop (int axis) |
| int | sendJogCont (int axis, double speed) |
| int | sendJogIncr (int axis, double speed, double incr) |
| int | sendHome (int axis) |
| int | sendFeedOverride (double override) |
| int | sendTaskPlanInit () |
| int | sendProgramOpen (char *program) |
| int | sendProgramRun (int line) |
| int | sendProgramPause () |
| int | sendProgramResume () |
| int | sendProgramStep () |
| int | sendMdiCmd (char *mdi) |
| int | sendLoadToolTable (const char *file) |
| int | sendAxisCycleTime (int axis, double cycleTime) |
| int | sendAxisSetGains (int axis, double p, double i, double d, double ff0, double ff1, double ff2, double backlash, double bias, double maxError) |
| int | sendAxisSetOutputScale (int axis, double scale, double offset) |
| int | sendAxisSetFerror (int axis, double ferror) |
| int | plotLog (const char *logfile, int logtype) |
| int | sendLogStart () |
| int | sendLogStop () |
| int | sendLogClose () |
| int | getColor (Widget w, Pixel *pixel, int foreground) |
| int | setColor (Widget w, Pixel pixel, int foreground) |
| int | stringToPixel (Widget w, String string, Pixel *pixel) |
| int | getBorderColor (Widget w, Pixel *pixel) |
| int | setBorderColor (Widget w, Pixel pixel) |
| int | setLabel (Widget w, char *label) |
| int | setProgramText (char *text) |
| int | highlightProgramText (char *text, int index) |
| void | dialogPopup (Widget w, XtPointer client_data, XtPointer call_data) |
| void | abortCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | homeCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | fileEditorDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | fileEditorCancelCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | fileEditorMarkCB (Widget w, XtPointer client_data, XtPointer call_data) |
| int | createFileEditorShell (int writeable) |
| int | destroyFileEditorShell () |
| void | doFileEditorDone (int get) |
| void | toolTableDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | toolTableCancelCB (Widget w, XtPointer client_data, XtPointer call_data) |
| int | createToolTableShell () |
| int | destroyToolTableShell () |
| void | doToolTableDone (int get) |
| void | varFileDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | varFileCancelCB (Widget w, XtPointer client_data, XtPointer call_data) |
| int | createVarFileShell () |
| int | destroyVarFileShell () |
| void | doVarFileDone (int get) |
| void | diagnosticsDoDone () |
| void | diagnosticsDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | diagnosticsReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | doFileOpenDone () |
| void | fileOpenDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | fileOpenReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | fileOpenTabAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | doFileQuitDone () |
| void | fileQuitDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | fileQuitReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | fileQuitTabAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | doFileEditDone () |
| void | fileEditDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | fileEditReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | fileEditTabAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | toolSetOffsetDoDone (int done) |
| void | toolSetOffsetUpAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | toolSetOffsetReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | toolSetOffsetDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | toolSetOffsetCancelCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | toolSetOffsetTabAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | doPosOffsetDone () |
| void | posOffsetUpAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | posOffsetReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | doJogSpeedDone () |
| void | jogSpeedReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | doFeedOverrideDone () |
| void | feedOverrideReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | programRunCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | programPauseCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | programResumeCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | programStepCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | programVerifyCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | helpXemcReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | helpAboutReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | genericDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | downAction (Widget w, XEvent *ev, String *params, Cardinal *numParams) |
| void | upAction (Widget w, XEvent *ev, String *params, Cardinal *numParams) |
| void | mdiReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | keyPressAction (unsigned int state, unsigned int keycode) |
| void | keyReleaseAction (unsigned int state, unsigned int keycode) |
| void | keyAction (Widget w, XEvent *ev, String *params, Cardinal *numParams) |
| void | fileMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | viewMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | calibDoDone (int done) |
| void | calibDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | calibCancelCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | calibReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | calibTabAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| int | loggingGetStrings () |
| void | loggingDoDone (int done) |
| void | loggingStartCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | loggingStopCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | loggingSaveCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | loggingPlotCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | loggingDoneCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | loggingCancelCB (Widget w, XtPointer client_data, XtPointer call_data) |
| void | loggingReturnAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | loggingTabAction (Widget w, XEvent *event, String *params, Cardinal *num_params) |
| void | settingsMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | helpMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | stateMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | modeMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | mistMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | floodMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | spindleMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | brakeMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | jogIncrementMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | loggingTypeMenuSelect (Widget w, XtPointer client_data, XtPointer call_data) |
| void | enableAuxMenus (Boolean torf) |
| void | enableManualMenus (Boolean torf) |
| void | enableAutoMenus (Boolean torf) |
| void | enableMdiMenus (Boolean torf) |
| void | mapPoseToLabels (EmcPose pose) |
| void | timeoutCB (XtPointer clientdata, XtIntervalId *id) |
| void | topLevelProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | fileOpenShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | fileQuitShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | fileEditShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | fileEditorShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | toolTableShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | toolSetOffsetShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | posOffsetShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | jogSpeedShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | feedOverrideShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | varFileShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | diagnosticsShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | calibShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | loggingShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | helpXemcProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | helpAboutProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| void | errorShellProtocols (Widget w, XEvent *event, String *string, Cardinal *c) |
| typedef | void (MenuSelectFunc)(Widget w, XtPointer client_data, XtPointer call_data) |
| int | setupMenu (Widget *menu, char *label, char **labels, Widget which, Widget horiz, Widget vert, MenuSelectFunc *func) |
| char * | upcase (char *string) |
| int | iniLoad (const char *filename) |
| int | main (int argc, char **argv) |
Variables | |
| RCS_CMD_CHANNEL * | emcCommandBuffer = 0 |
| RCS_STAT_CHANNEL * | emcStatusBuffer = 0 |
| EMC_STAT * | emcStatus = 0 |
| NML * | emcErrorBuffer = 0 |
| char | error_string [EMC_OPERATOR_ERROR_LEN] = "" |
| int | emcCommandSerialNumber = 0 |
| int | coordNum [6] = { 0, 1, 2, 3, 4, 5} |
| char * | programFwString = NULL |
| FILE_WINDOW | programFw |
| int | numJoints = 3 |
| int | numCoords = 3 |
| int | numPosLabels = 3 |
| char | version_string [INIFILE_MAX_LINELEN] = "" |
| char | PARAMETER_FILE [EMC_TASK_FILENAME_LEN] = "" |
| char | programPrefix [EMC_TASK_FILENAME_LEN] = "" |
| char | programFile [EMC_TASK_FILENAME_LEN] = "*" |
| char | lastProgramFile [EMC_TASK_FILENAME_LEN] = "*" |
| int | maxFeedOverride = 100 |
| char | active_g_codes_string [MDI_LINELEN] = "" |
| char | active_m_codes_string [MDI_LINELEN] = "" |
| KINEMATICS_TYPE | kinematicsType = KINEMATICS_IDENTITY |
| unsigned char | coordinateMark [6] = {1, 1, 1, 0, 0, 0} |
| COORD_TYPE | coords = COORD_RELATIVE |
| POS_DISPLAY_TYPE | posDisplay = POS_DISPLAY_ACT |
| POS_FRAME_TYPE | posFrame = POS_FRAME_WORLD |
| int | activeJoint = 0 |
| int | oldActiveJoint = -1 |
| int | activeCoord = 0 |
| int | oldActiveCoord = -1 |
| int | axisJogging = -1 |
| int | jogSpeed = 1 |
| int | maxJogSpeed = 1 |
| int | jogSpeedChange = 0 |
| double | jogIncrement = 0.0 |
| int | jogPol [XEMC_NUM_AXES] |
| int | oldFeedOverride = -1 |
| int | feedOverride |
| int | feedOverrideChange = 0 |
| int | feedOverrideDelayCount = FEED_OVERRIDE_DELAY_COUNT |
| int | programStartLine = 0 |
| int | programStartLineLast = 0 |
| char | saveLogFile [EMC_LOG_FILENAME_LEN] = "/tmp/emc.plot.sh" |
| int | saveLogType = EMC_LOG_TYPE_AXES_FERROR |
| int | saveLogSize = 1000 |
| int | saveLogSkip = 0 |
| int | redraw = 1 |
| XtAppContext | app_context |
| Atom | killAtom |
| Widget | topLevel |
| Widget | topForm |
| Widget | barMenuForm |
| Widget | abortCommand |
| Widget | fileMenu |
| Widget | viewMenu |
| Widget | settingsMenu |
| Widget | helpMenu |
| Widget | commandMenuForm |
| Widget | stateMenu |
| Widget | modeMenu |
| Widget | mistMenu |
| Widget | floodMenu |
| Widget | spindleMenu |
| Widget | spindleIncLabel |
| Widget | spindleDecLabel |
| Widget | brakeMenu |
| Widget | toolTableShell = NULL |
| Widget | toolTableForm |
| Widget | toolTableLabel |
| Widget | toolTableText |
| Widget | toolTableDone |
| Widget | toolTableCancel |
| Widget | varFileShell = NULL |
| Widget | varFileForm |
| Widget | varFileLabel |
| Widget | varFileText |
| Widget | varFileDone |
| Widget | varFileCancel |
| Widget | toolNumberForm |
| Widget | toolNumberFormTitle |
| Widget | toolNumberFormName |
| Widget | toolOffsetForm |
| Widget | toolOffsetFormTitle |
| Widget | toolOffsetFormName |
| Widget | toolSetOffsetShell |
| Widget | toolSetOffsetForm |
| Widget | toolSetOffsetToolLabel |
| Widget | toolSetOffsetTool |
| Widget | toolSetOffsetLengthLabel |
| Widget | toolSetOffsetLength |
| Widget | toolSetOffsetDiameterLabel |
| Widget | toolSetOffsetDiameter |
| Widget | toolSetOffsetDone |
| Widget | toolSetOffsetCancel |
| Widget | positionTypeForm |
| Widget | positionTypeFormTitle |
| Widget | positionTypeFormName |
| Widget | workOffsetForm |
| Widget | workOffsetFormTitle |
| Widget | workOffsetFormName |
| Widget | posLabel [XEMC_NUM_AXES] |
| Widget | posOffsetShell |
| Widget | posOffsetDialog |
| Widget | jogSpeedForm |
| Widget | jogSpeedTitleLabel |
| Widget | jogSpeedLabel |
| Widget | jogSpeedIncLabel |
| Widget | jogSpeedDecLabel |
| Widget | jogSpeedShell |
| Widget | jogSpeedDialog |
| Widget | jogIncrementForm |
| Widget | jogIncrementTitleLabel |
| Widget | jogIncrementMenu |
| Widget | jogForm |
| Widget | jogTitleLabel |
| Widget | jogMinusLabel |
| Widget | homeCommand |
| Widget | jogPlusLabel |
| Widget | feedOverrideForm |
| Widget | feedOverrideTitleLabel |
| Widget | feedOverrideLabel |
| Widget | feedOverrideIncLabel |
| Widget | feedOverrideDecLabel |
| Widget | feedOverrideShell |
| Widget | feedOverrideDialog |
| Widget | loggingStatusForm |
| Widget | loggingStatusTitleLabel |
| Widget | loggingStatusOpenLabel |
| Widget | loggingStatusStartedLabel |
| Widget | loggingStatusPointsLabel |
| Widget | mdiForm |
| Widget | mdiFormTitle |
| Widget | mdiFormText |
| Widget | mdiCodesLabel |
| Widget | programForm |
| Widget | programFormTitle |
| Widget | programFormName |
| Widget | programFormStateTitle |
| Widget | programFormState |
| Widget | programOpenCommand |
| Widget | programRunCommand |
| Widget | programPauseCommand |
| Widget | programResumeCommand |
| Widget | programStepCommand |
| Widget | programVerifyCommand |
| Widget | programText |
| Widget | fileOpenShell |
| Widget | fileOpenDialog |
| Widget | fileOpenDone |
| Widget | fileOpenCancel |
| char | EDITOR_FILE [256] = "" |
| Widget | fileEditShell |
| Widget | fileEditDialog |
| Widget | fileEditDone |
| Widget | fileEditCancel |
| Widget | fileEditorShell = NULL |
| Widget | fileEditorForm |
| Widget | fileEditorLabel |
| Widget | fileEditorText |
| Widget | fileEditorDone |
| Widget | fileEditorCancel |
| Widget | fileEditorMark |
| Widget | fileQuitShell |
| Widget | fileQuitDialog |
| Widget | fileQuitDone |
| Widget | fileQuitCancel |
| Widget | helpXemcShell = NULL |
| Widget | helpXemcForm |
| Widget | helpXemcLabel |
| Widget | helpXemcText |
| Widget | helpXemcDone |
| Widget | helpAboutShell |
| Widget | helpAboutDialog |
| Widget | helpAboutDone |
| Widget | errorShell = 0 |
| Widget | errorDialog = 0 |
| Widget | errorDone = 0 |
| Pixel | pixelBlack |
| Pixel | pixelRed |
| Pixel | pixelYellow |
| Pixel | pixelGreen |
| Pixel | posLabelBackground [XEMC_NUM_AXES] |
| Pixel | posLabelBorderColor [XEMC_NUM_AXES] |
| int | errorIsPopped = 0 |
| Widget | diagnosticsShell = NULL |
| Widget | diagnosticsForm = NULL |
| Widget | diagnosticsLabel = NULL |
| Widget | diagnosticsTaskHBLabel = NULL |
| Widget | diagnosticsTaskHB = NULL |
| Widget | diagnosticsIoHBLabel = NULL |
| Widget | diagnosticsIoHB = NULL |
| Widget | diagnosticsMotionHBLabel = NULL |
| Widget | diagnosticsMotionHB = NULL |
| Widget | diagnosticsFerrorLabel = NULL |
| Widget | diagnosticsFerror = NULL |
| Widget | diagnosticsDone = NULL |
| int | diagnosticsIsPopped = 0 |
| Pixel | fileOpenBorderColor |
| int | fileOpenDoDone = 1 |
| Pixel | fileQuitBorderColor |
| int | fileQuitDoDone = 1 |
| Pixel | fileEditBorderColor |
| int | fileEditDoDone = 1 |
| Pixel | toolSetOffsetFormBorderColor |
| int | toolSetOffsetReturnIsDone = 1 |
| int | keyReleaseOut = 0 |
| double | keyReleaseTime = 0.0 |
| unsigned int | keyPressState |
| unsigned int | keyPressKeycode |
| unsigned int | keyReleaseState |
| unsigned int | keyReleaseKeycode |
| String | fileMenuEntryNames [] |
| String | viewMenuEntryNames [] |
| String | settingsMenuEntryNames [] |
| String | helpMenuEntryNames [] |
| String | stateMenuEntryNames [] |
| String | modeMenuEntryNames [] |
| String | mistMenuEntryNames [] |
| String | floodMenuEntryNames [] |
| String | spindleMenuEntryNames [] |
| String | brakeMenuEntryNames [] |
| String | jogIncrementMenuEntryNames [] |
| String | loggingTypeMenuEntryNames [] |
| Widget | calibShell = NULL |
| Widget | calibForm = NULL |
| Widget | calibLabel = NULL |
| Widget | calibCycleTimeLabel = NULL |
| Widget | calibCycleTime = NULL |
| Widget | calibPGainLabel = NULL |
| Widget | calibPGain = NULL |
| Widget | calibIGainLabel = NULL |
| Widget | calibIGain = NULL |
| Widget | calibDGainLabel = NULL |
| Widget | calibDGain = NULL |
| Widget | calibFF0GainLabel = NULL |
| Widget | calibFF0Gain = NULL |
| Widget | calibFF1GainLabel = NULL |
| Widget | calibFF1Gain = NULL |
| Widget | calibFF2GainLabel = NULL |
| Widget | calibFF2Gain = NULL |
| Widget | calibBacklashLabel = NULL |
| Widget | calibBacklash = NULL |
| Widget | calibBiasLabel = NULL |
| Widget | calibBias = NULL |
| Widget | calibMaxErrorLabel = NULL |
| Widget | calibMaxError = NULL |
| Widget | calibOutputScaleLabel = NULL |
| Widget | calibOutputScale = NULL |
| Widget | calibOutputOffsetLabel = NULL |
| Widget | calibOutputOffset = NULL |
| Widget | calibFerrorLabel = NULL |
| Widget | calibFerror = NULL |
| Widget | calibDone = NULL |
| Widget | calibCancel = NULL |
| int | calibReturnIsDone = 1 |
| Pixel | calibFormBorderColor |
| Widget | loggingShell = NULL |
| Widget | loggingForm = NULL |
| Widget | loggingLabel = NULL |
| Widget | loggingFileLabel = NULL |
| Widget | loggingFile = NULL |
| Widget | loggingTypeLabel = NULL |
| Widget | loggingTypeMenu = NULL |
| Widget | loggingSizeLabel = NULL |
| Widget | loggingSize = NULL |
| Widget | loggingSkipLabel = NULL |
| Widget | loggingSkip = NULL |
| Widget | loggingStart = NULL |
| Widget | loggingStop = NULL |
| Widget | loggingSave = NULL |
| Widget | loggingPlot = NULL |
| Widget | loggingDone = NULL |
| Widget | loggingCancel = NULL |
| int | loggingReturnIsDone = 1 |
| Pixel | loggingFormBorderColor |
| unsigned long int | oldTaskHeartbeat = 0 |
| unsigned long int | oldIoHeartbeat = 0 |
| unsigned long int | oldMotionHeartbeat = 0 |
| double | oldAxisFerror [XEMC_NUM_AXES] |
| int | oldState = -1 |
| int | oldMode = -1 |
| int | oldMist = -1 |
| int | oldFlood = -1 |
| int | oldSpindleIncreasing = -1 |
| int | oldSpindleDirection = -2 |
| int | oldBrake = -1 |
| int | oldTool = -1 |
| double | oldToolOffset = DBL_MAX |
| EmcPose | oldOrigin |
| double | newPosLabelValue [XEMC_NUM_AXES] |
| double | oldPosLabelValue [XEMC_NUM_AXES] |
| char | posLabelWorld [XEMC_NUM_AXES] = {'X', 'Y', 'Z', 'R', 'P', 'W'} |
| char | posLabelJoint [XEMC_NUM_AXES] = {'1', '2', '3', '4', '5', '6'} |
| int | oldCoords = 0 |
| int | oldPosDisplay = 0 |
| int | oldPosFrame = 0 |
| double | oldJogIncrement = -1.0 |
| Pixel | posColor [XEMC_NUM_AXES] |
| int | oldLogOpen = -1 |
| int | oldLogStarted = -1 |
| int | oldLogPoints = -1 |
| char | oldMdiCodes [256] = "" |
| int | oldProgramActiveLine = -1 |
| char | oldProgramString [256] = "" |
| XtActionsRec | actionsTable [] |
| String | fallbackResources [] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 675 of file yemc.cc. 00675 {
00676 COORD_RELATIVE = 1,
00677 COORD_MACHINE
00678 } COORD_TYPE;
|
|
|
Definition at line 662 of file yemc.cc. 00662 {
00663 KINEMATICS_IDENTITY = 1,
00664 KINEMATICS_SERIAL,
00665 KINEMATICS_PARALLEL
00666 } KINEMATICS_TYPE;
|
|
|
Definition at line 683 of file yemc.cc. 00683 {
00684 POS_DISPLAY_ACT = 1,
00685 POS_DISPLAY_CMD
00686 } POS_DISPLAY_TYPE;
|
|
|
Definition at line 691 of file yemc.cc. 00691 {
00692 POS_FRAME_WORLD = 1,
00693 POS_FRAME_JOINT
00694 } POS_FRAME_TYPE;
|
|
||||||||||||||||
|
Definition at line 1604 of file yemc.cc. 01605 {
01606 sendAbort();
01607 }
|
|
||||||||||||||||
|
Definition at line 4247 of file yemc.cc. 04248 {
04249 switch ((int) client_data) {
04250 case 0:
04251 sendBrakeEngage();
04252 break;
04253
04254 case 1:
04255 sendBrakeRelease();
04256 break;
04257
04258 default:
04259 break;
04260 }
04261 }
|
|
||||||||||||||||
|
Definition at line 3857 of file yemc.cc. 03858 {
03859 calibDoDone(0);
03860 }
|
|
|
Definition at line 3771 of file yemc.cc. Referenced by calibCancelCB(), calibDoneCB(), and calibReturnAction().
03772 {
03773 int iserror = 0;
03774 String str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, str12, str13;
03775 double cycleTime;
03776 double p;
03777 double i;
03778 double d;
03779 double ff0;
03780 double ff1;
03781 double ff2;
03782 double bias;
03783 double backlash;
03784 double maxError;
03785 double outputScale;
03786 double outputOffset;
03787 double ferror;
03788
03789 if (done) {
03790 // get current values for rest of gains
03791 cycleTime = emcStatus->motion.axis[activeJoint].cycleTime;
03792 p = emcStatus->motion.axis[activeJoint].p;
03793 i = emcStatus->motion.axis[activeJoint].i;
03794 d = emcStatus->motion.axis[activeJoint].d;
03795 ff0 = emcStatus->motion.axis[activeJoint].ff0;
03796 ff1 = emcStatus->motion.axis[activeJoint].ff1;
03797 ff2 = emcStatus->motion.axis[activeJoint].ff2;
03798 backlash = emcStatus->motion.axis[activeJoint].backlash;
03799 bias = emcStatus->motion.axis[activeJoint].bias;
03800 maxError = emcStatus->motion.axis[activeJoint].maxError;
03801 outputScale = emcStatus->motion.axis[activeJoint].outputScale;
03802 outputOffset = emcStatus->motion.axis[activeJoint].outputOffset;
03803
03804 XtVaGetValues(calibCycleTime, XtNstring, &str1, NULL);
03805 XtVaGetValues(calibPGain, XtNstring, &str2, NULL);
03806 XtVaGetValues(calibIGain, XtNstring, &str3, NULL);
03807 XtVaGetValues(calibDGain, XtNstring, &str4, NULL);
03808 XtVaGetValues(calibFF0Gain, XtNstring, &str5, NULL);
03809 XtVaGetValues(calibFF1Gain, XtNstring, &str6, NULL);
03810 XtVaGetValues(calibFF2Gain, XtNstring, &str7, NULL);
03811 XtVaGetValues(calibBacklash, XtNstring, &str8, NULL);
03812 XtVaGetValues(calibBias, XtNstring, &str9, NULL);
03813 XtVaGetValues(calibMaxError, XtNstring, &str10, NULL);
03814 XtVaGetValues(calibOutputScale, XtNstring, &str11, NULL);
03815 XtVaGetValues(calibOutputOffset, XtNstring, &str12, NULL);
03816 XtVaGetValues(calibFerror, XtNstring, &str13, NULL);
03817
03818 if (1 == sscanf(str1, "%lf", &cycleTime) &&
03819 1 == sscanf(str2, "%lf", &p) &&
03820 1 == sscanf(str3, "%lf", &i) &&
03821 1 == sscanf(str4, "%lf", &d) &&
03822 1 == sscanf(str5, "%lf", &ff0) &&
03823 1 == sscanf(str6, "%lf", &ff1) &&
03824 1 == sscanf(str7, "%lf", &ff2) &&
03825 1 == sscanf(str8, "%lf", &backlash) &&
03826 1 == sscanf(str9, "%lf", &bias) &&
03827 1 == sscanf(str10, "%lf", &maxError) &&
03828 1 == sscanf(str11, "%lf", &outputScale) &&
03829 1 == sscanf(str12, "%lf", &outputOffset) &&
03830 1 == sscanf(str13, "%lf", &ferror)) {
03831 sendAxisCycleTime(activeJoint, cycleTime);
03832 emcCommandWaitDone(emcCommandSerialNumber);
03833 sendAxisSetGains(activeJoint, p, i, d, ff0, ff1, ff2, backlash, bias, maxError);
03834 emcCommandWaitDone(emcCommandSerialNumber);
03835 sendAxisSetOutputScale(activeJoint, outputScale, outputOffset);
03836 emcCommandWaitDone(emcCommandSerialNumber);
03837 sendAxisSetFerror(activeJoint, ferror);
03838 }
03839 else {
03840 iserror = 1;
03841 }
03842 }
03843
03844 calibReturnIsDone = 1;
03845 XtPopdown(calibShell);
03846
03847 if (iserror) {
03848 popupError("Bad gain values");
03849 }
03850 }
|
|
||||||||||||||||
|
Definition at line 3852 of file yemc.cc. 03853 {
03854 calibDoDone(1);
03855 }
|
|
||||||||||||||||||||
|
Definition at line 3862 of file yemc.cc. 03863 {
03864 if (calibReturnIsDone) {
03865 calibDoDone(1);
03866 }
03867 else {
03868 calibDoDone(0);
03869 }
03870 }
|
|
||||||||||||||||||||
|
Definition at line 5290 of file yemc.cc. 05291 {
05292 XtPopdown(calibShell);
05293 }
|
|
||||||||||||||||||||
|
Definition at line 3872 of file yemc.cc. 03873 {
03874 if (calibReturnIsDone) {
03875 setBorderColor(calibDone, calibFormBorderColor);
03876 setBorderColor(calibCancel, pixelRed);
03877 calibReturnIsDone = 0;
03878 }
03879 else {
03880 setBorderColor(calibDone, pixelRed);
03881 setBorderColor(calibCancel, calibFormBorderColor);
03882 calibReturnIsDone = 1;
03883 }
03884 }
|
|
|
Definition at line 1636 of file yemc.cc. 01637 {
01638 if (NULL != errorShell) {
01639 return 0;
01640 }
01641
01642 errorShell =
01643 XtVaCreatePopupShell("errorShell",
01644 transientShellWidgetClass,
01645 topLevel,
01646 NULL);
01647
01648 errorDialog =
01649 XtVaCreateManagedWidget("errorDialog",
01650 dialogWidgetClass,
01651 errorShell,
01652 NULL);
01653
01654 errorDone =
01655 XtVaCreateManagedWidget("errorDone",
01656 commandWidgetClass,
01657 errorDialog,
01658 NULL);
01659
01660 XtAddCallback(errorDone, XtNcallback, errorDoneCB, errorShell);
01661
01662 return 0;
01663 }
|
|
|
Definition at line 1768 of file yemc.cc. Referenced by doFileEditDone().
01769 {
01770 char label[256]; // FIXME-- hardcoded
01771
01772 if (NULL != fileEditorShell) {
01773 return 0;
01774 }
01775
01776 strcpy(label, EDITOR_FILE);
01777 if (! writeable) {
01778 strcat(label, " (read only)");
01779 }
01780
01781 fileEditorShell =
01782 XtVaCreatePopupShell("fileEditorShell",
01783 topLevelShellWidgetClass,
01784 topLevel,
01785 XtNallowShellResize, True,
01786 NULL);
01787
01788 fileEditorForm =
01789 XtVaCreateManagedWidget("fileEditorForm",
01790 formWidgetClass,
01791 fileEditorShell,
01792 NULL);
01793
01794 fileEditorLabel =
01795 XtVaCreateManagedWidget("fileEditorLabel",
01796 labelWidgetClass,
01797 fileEditorForm,
01798 XtNlabel, label,
01799 NULL);
01800
01801 fileEditorText =
01802 XtVaCreateManagedWidget("fileEditorText",
01803 asciiTextWidgetClass,
01804 fileEditorForm,
01805 XtNfromVert, fileEditorLabel,
01806 XtNeditType, (writeable ? XawtextEdit :
01807 XawtextRead),
01808 XtNtype, XawAsciiFile,
01809 XtNstring, EDITOR_FILE,
01810 XtNscrollVertical, XawtextScrollWhenNeeded,
01811 NULL);
01812
01813 fileEditorDone =
01814 XtVaCreateManagedWidget("fileEditorDone",
01815 commandWidgetClass,
01816 fileEditorForm,
01817 XtNfromVert, fileEditorText,
01818 NULL);
01819
01820 XtAddCallback(fileEditorDone, XtNcallback, fileEditorDoneCB, fileEditorShell);
01821
01822 if (writeable) {
01823 XtSetSensitive(fileEditorDone, True);
01824 }
01825 else {
01826 XtSetSensitive(fileEditorDone, False);
01827 }
01828
01829 fileEditorCancel =
01830 XtVaCreateManagedWidget("fileEditorCancel",
01831 commandWidgetClass,
01832 fileEditorForm,
01833 XtNfromVert, fileEditorText,
01834 XtNfromHoriz, fileEditorDone,
01835 NULL);
01836
01837 XtAddCallback(fileEditorCancel, XtNcallback, fileEditorCancelCB, fileEditorShell);
01838
01839 fileEditorMark =
01840 XtVaCreateManagedWidget("fileEditorMark",
01841 commandWidgetClass,
01842 fileEditorForm,
01843 XtNfromVert, fileEditorText,
01844 XtNfromHoriz, fileEditorCancel,
01845 NULL);
01846
01847 XtAddCallback(fileEditorMark, XtNcallback, fileEditorMarkCB, fileEditorShell);
01848
01849 return 0;
01850 }
|
|
|
Definition at line 1928 of file yemc.cc. 01929 {
01930 if (NULL != toolTableShell) {
01931 return 0;
01932 }
01933
01934 toolTableShell =
01935 XtVaCreatePopupShell("toolTableShell",
01936 topLevelShellWidgetClass,
01937 topLevel,
01938 XtNallowShellResize, True,
01939 NULL);
01940
01941 toolTableForm =
01942 XtVaCreateManagedWidget("toolTableForm",
01943 formWidgetClass,
01944 toolTableShell,
01945 NULL);
01946
01947 toolTableLabel =
01948 XtVaCreateManagedWidget("toolTableLabel",
01949 labelWidgetClass,
01950 toolTableForm,
01951 XtNlabel, TOOL_TABLE_FILE,
01952 NULL);
01953
01954 toolTableText =
01955 XtVaCreateManagedWidget("toolTableText",
01956 asciiTextWidgetClass,
01957 toolTableForm,
01958 XtNfromVert, toolTableLabel,
01959 XtNeditType, XawtextEdit,
01960 XtNtype, XawAsciiFile,
01961 XtNstring, TOOL_TABLE_FILE,
01962 XtNscrollVertical, XawtextScrollWhenNeeded,
01963 NULL);
01964
01965 toolTableDone =
01966 XtVaCreateManagedWidget("toolTableDone",
01967 commandWidgetClass,
01968 toolTableForm,
01969 XtNfromVert, toolTableText,
01970 NULL);
01971
01972 XtAddCallback(toolTableDone, XtNcallback, toolTableDoneCB, toolTableShell);
01973
01974 toolTableCancel =
01975 XtVaCreateManagedWidget("toolTableCancel",
01976 commandWidgetClass,
01977 toolTableForm,
01978 XtNfromVert, toolTableText,
01979 XtNfromHoriz, toolTableDone,
01980 NULL);
01981
01982 XtAddCallback(toolTableCancel, XtNcallback, toolTableCancelCB, toolTableShell);
01983
01984 return 0;
01985 }
|
|
|
Definition at line 2060 of file yemc.cc. 02061 {
02062 if (NULL != varFileShell) {
02063 return 0;
02064 }
02065
02066 varFileShell =
02067 XtVaCreatePopupShell("varFileShell",
02068 topLevelShellWidgetClass,
02069 topLevel,
02070 XtNallowShellResize, True,
02071 NULL);
02072
02073 varFileForm =
02074 XtVaCreateManagedWidget("varFileForm",
02075 formWidgetClass,
02076 varFileShell,
02077 NULL);
02078
02079 varFileLabel =
02080 XtVaCreateManagedWidget("varFileLabel",
02081 labelWidgetClass,
02082 varFileForm,
02083 XtNlabel, PARAMETER_FILE,
02084 NULL);
02085
02086 varFileText =
02087 XtVaCreateManagedWidget("varFileText",
02088 asciiTextWidgetClass,
02089 varFileForm,
02090 XtNfromVert, varFileLabel,
02091 XtNeditType, XawtextEdit,
02092 XtNtype, XawAsciiFile,
02093 XtNstring, PARAMETER_FILE,
02094 XtNscrollVertical, XawtextScrollWhenNeeded,
02095 NULL);
02096
02097 varFileDone =
02098 XtVaCreateManagedWidget("varFileDone",
02099 commandWidgetClass,
02100 varFileForm,
02101 XtNfromVert, varFileText,
02102 NULL);
02103
02104 XtAddCallback(varFileDone, XtNcallback, varFileDoneCB, varFileShell);
02105
02106 varFileCancel =
02107 XtVaCreateManagedWidget("varFileCancel",
02108 commandWidgetClass,
02109 varFileForm,
02110 XtNfromVert, varFileText,
02111 XtNfromHoriz, varFileDone,
02112 NULL);
02113
02114 XtAddCallback(varFileCancel, XtNcallback, varFileCancelCB, varFileShell);
02115
02116 return 0;
02117 }
|
|
|
Definition at line 1665 of file yemc.cc. 01666 {
01667 if (0 != errorDone)
01668 {
01669 XtDestroyWidget(errorDone);
01670 errorDone = 0;
01671 }
01672
01673 if (0 != errorDialog)
01674 {
01675 XtDestroyWidget(errorDialog);
01676 errorDialog = 0;
01677 }
01678
01679 if (0 != errorShell)
01680 {
01681 XtDestroyWidget(errorShell);
01682 errorShell = 0;
01683 }
01684
01685 return 0;
01686 }
|
|
|
Definition at line 1852 of file yemc.cc. 01853 {
01854 if (fileEditorMark != NULL) {
01855 XtDestroyWidget(fileEditorMark);
01856 fileEditorMark = NULL;
01857 }
01858
01859 if (fileEditorCancel != NULL) {
01860 XtDestroyWidget(fileEditorCancel);
01861 fileEditorCancel = NULL;
01862 }
01863
01864 if (fileEditorDone != NULL) {
01865 XtDestroyWidget(fileEditorDone);
01866 fileEditorDone = NULL;
01867 }
01868
01869 if (fileEditorText != NULL) {
01870 XtDestroyWidget(fileEditorText);
01871 fileEditorText = NULL;
01872 }
01873
01874 if (fileEditorLabel != NULL) {
01875 XtDestroyWidget(fileEditorLabel);
01876 fileEditorLabel = NULL;
01877 }
01878
01879 if (fileEditorForm != NULL) {
01880 XtDestroyWidget(fileEditorForm);
01881 fileEditorForm = NULL;
01882 }
01883
01884 if (fileEditorShell != NULL) {
01885 XtDestroyWidget(fileEditorShell);
01886 fileEditorShell = NULL;
01887 }
01888
01889 return 0;
01890 }
|
|
|
Definition at line 1987 of file yemc.cc. 01988 {
01989 if (toolTableCancel != NULL) {
01990 XtDestroyWidget(toolTableCancel);
01991 toolTableCancel = NULL;
01992 }
01993
01994 if (toolTableDone != NULL) {
01995 XtDestroyWidget(toolTableDone);
01996 toolTableDone = NULL;
01997 }
01998
01999 if (toolTableText != NULL) {
02000 XtDestroyWidget(toolTableText);
02001 toolTableText = NULL;
02002 }
02003
02004 if (toolTableLabel != NULL) {
02005 XtDestroyWidget(toolTableLabel);
02006 toolTableLabel = NULL;
02007 }
02008
02009 if (toolTableForm != NULL) {
02010 XtDestroyWidget(toolTableForm);
02011 toolTableForm = NULL;
02012 }
02013
02014 if (toolTableShell != NULL) {
02015 XtDestroyWidget(toolTableShell);
02016 toolTableShell = NULL;
02017 }
02018
02019 return 0;
02020 }
|
|
|
Definition at line 2119 of file yemc.cc. 02120 {
02121 if (varFileCancel != NULL) {
02122 XtDestroyWidget(varFileCancel);
02123 varFileCancel = NULL;
02124 }
02125
02126 if (varFileDone != NULL) {
02127 XtDestroyWidget(varFileDone);
02128 varFileDone = NULL;
02129 }
02130
02131 if (varFileText != NULL) {
02132 XtDestroyWidget(varFileText);
02133 varFileText = NULL;
02134 }
02135
02136 if (varFileLabel != NULL) {
02137 XtDestroyWidget(varFileLabel);
02138 varFileLabel = NULL;
02139 }
02140
02141 if (varFileForm != NULL) {
02142 XtDestroyWidget(varFileForm);
02143 varFileForm = NULL;
02144 }
02145
02146 if (varFileShell != NULL) {
02147 XtDestroyWidget(varFileShell);
02148 varFileShell = NULL;
02149 }
02150
02151 return 0;
02152 }
|
|
|
Definition at line 2192 of file yemc.cc. 02193 {
02194 diagnosticsIsPopped = 0;
02195 XtPopdown(diagnosticsShell);
02196 }
|
|
||||||||||||||||
|
Definition at line 2198 of file yemc.cc. 02199 {
02200 diagnosticsDoDone();
02201 }
|
|
||||||||||||||||||||
|
Definition at line 2203 of file yemc.cc. 02204 {
02205 diagnosticsDoDone();
02206 }
|
|
||||||||||||||||||||
|
Definition at line 5284 of file yemc.cc. 05285 {
05286 diagnosticsIsPopped = 0;
05287 XtPopdown(diagnosticsShell);
05288 }
|
|
||||||||||||||||
|
Definition at line 1575 of file yemc.cc. Referenced by doFileEditDone(), downAction(), fileMenuSelect(), helpMenuSelect(), keyPressAction(), popupError(), posOffsetUpAction(), settingsMenuSelect(), toolSetOffsetUpAction(), and viewMenuSelect().
01576 {
01577 Position x, y;
01578 Dimension width, height;
01579
01580 // get the coordinates of the middle of topLevel widget
01581 XtVaGetValues(topForm,
01582 XtNwidth, &width,
01583 XtNheight, &height,
01584 NULL);
01585
01586 // translate coordinates in application top-level window
01587 // into coordinates from root window origin
01588 XtTranslateCoords(topForm,
01589 (Position) 100,
01590 (Position) 100,
01591 &x, &y);
01592
01593 // move popup shell to this position (it's not visible yet)
01594 XtVaSetValues((Widget) client_data,
01595 XtNx, x,
01596 XtNy, y,
01597 NULL);
01598
01599 XtPopup((Widget) client_data, XtGrabNone);
01600 }
|
|
|
Definition at line 2529 of file yemc.cc. 02530 {
02531 String string;
02532 double val;
02533
02534 string = XawDialogGetValueString(feedOverrideDialog);
02535
02536 if (1 == sscanf(string, "%lf", &val)) {
02537 sendFeedOverride(val / 100.0);
02538 }
02539
02540 XtPopdown(feedOverrideShell);
02541 }
|
|
|
Definition at line 2300 of file yemc.cc. 02301 {
02302 String string;
02303 struct stat buf;
02304 int fd;
02305
02306 if (fileEditDoDone) {
02307 string = XawDialogGetValueString(fileEditDialog);
02308 // set value to be the same in file open dialog
02309 strcpy(EDITOR_FILE, string);
02310 XtVaSetValues(fileOpenDialog, XtNvalue, EDITOR_FILE, NULL);
02311 }
02312
02313 XtPopdown(fileEditShell);
02314
02315 if (fileEditDoDone) {
02316 if (-1 == stat(EDITOR_FILE, &buf)) {
02317 // file not found-- it's a new one. Touch it so that it
02318 // exists and the text widget won't barf
02319 fd = open(EDITOR_FILE, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
02320 close(fd);
02321 createFileEditorShell(1);
02322 dialogPopup(NULL, fileEditorShell, NULL);
02323 // trap window kill
02324 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileEditorShell), &killAtom, 1);
02325 }
02326 else {
02327 // file is there-- check type and permissions
02328 if (! S_ISREG(buf.st_mode)) {
02329 // file is not a regular file
02330 popupError("Can't edit %S: not a text file", EDITOR_FILE);
02331 }
02332 else if ((S_IWUSR & buf.st_mode)) {
02333 // file is writeable
02334 createFileEditorShell(1);
02335 dialogPopup(NULL, fileEditorShell, NULL);
02336 // trap window kill
02337 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileEditorShell), &killAtom, 1);
02338 }
02339 else {
02340 // file is read-only
02341 createFileEditorShell(0);
02342 dialogPopup(NULL, fileEditorShell, NULL);
02343 // trap window kill
02344 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileEditorShell), &killAtom, 1);
02345 }
02346 }
02347 }
02348
02349 setBorderColor(fileEditDone, pixelRed);
02350 setBorderColor(fileEditCancel, fileEditBorderColor);
02351 fileEditDoDone = 1;
02352 }
|
|
|
Definition at line 1892 of file yemc.cc. Referenced by fileEditorCancelCB(), and fileEditorDoneCB().
01893 {
01894 Widget source;
01895 String string;
01896
01897 if (get) {
01898 XtVaGetValues(fileEditorText,
01899 XtNtextSource, &source,
01900 XtNstring, &string,
01901 NULL);
01902
01903 XawAsciiSave(source);
01904 }
01905
01906 XtPopdown(fileEditorShell);
01907
01908 destroyFileEditorShell();
01909 }
|
|
|
Definition at line 2211 of file yemc.cc. 02212 {
02213 String string;
02214
02215 if (fileOpenDoDone) {
02216 // note: "*value: " must be set in resources for input box
02217 // to appear, and for this to be valid (and not dump core)
02218 string = XawDialogGetValueString(fileOpenDialog);
02219 // set value to be the same in file edit dialog
02220 strcpy(EDITOR_FILE, string);
02221 XtVaSetValues(fileEditDialog, XtNvalue, EDITOR_FILE, NULL);
02222 sendProgramOpen(string);
02223 }
02224
02225 setBorderColor(fileOpenDone, pixelRed);
02226 setBorderColor(fileOpenCancel, fileOpenBorderColor);
02227 fileOpenDoDone = 1;
02228
02229 XtPopdown(fileOpenShell);
02230 }
|
|
|
Definition at line 2259 of file yemc.cc. 02260 {
02261 XtPopdown(fileQuitShell);
02262
02263 if (fileQuitDoDone) {
02264 quit();
02265 }
02266 else {
02267 setBorderColor(fileQuitDone, pixelRed);
02268 setBorderColor(fileQuitCancel, fileQuitBorderColor);
02269 fileQuitDoDone = 1;
02270 }
02271 }
|
|
|
Definition at line 2503 of file yemc.cc. 02504 {
02505 String string;
02506 int val;
02507 char labelString[80];
02508
02509 string = XawDialogGetValueString(jogSpeedDialog);
02510
02511 if (1 == sscanf(string, "%d", &val)) {
02512 jogSpeed = val;
02513 if (jogSpeed > maxJogSpeed) {
02514 jogSpeed = maxJogSpeed;
02515 }
02516 sprintf(labelString, "%d", jogSpeed);
02517 setLabel(jogSpeedLabel, labelString);
02518 redraw = 1;
02519 }
02520
02521 XtPopdown(jogSpeedShell);
02522 }
|
|
|
Definition at line 2454 of file yemc.cc. 02455 {
02456 String string;
02457 char cmd[256];
02458 double val;
02459
02460 string = XawDialogGetValueString(posOffsetDialog);
02461
02462 if (1 == sscanf(string, "%lf", &val)) {
02463 // send MDI command
02464 // FIXME-- this RS-274-NGC specific; need to add NML way to do this
02465 sprintf(cmd, "G92%s%f\n",
02466 activeCoord == 0 ? "X" :
02467 activeCoord == 1 ? "Y" :
02468 activeCoord == 2 ? "Z" : "X",
02469 val);
02470 sendMdiCmd(cmd);
02471 }
02472
02473 XtPopdown(posOffsetShell);
02474 }
|
|
|
Definition at line 2022 of file yemc.cc. Referenced by toolTableCancelCB(), and toolTableDoneCB().
02023 {
02024 Widget source;
02025 String string;
02026
02027 if (get) {
02028 XtVaGetValues(toolTableText,
02029 XtNtextSource, &source,
02030 XtNstring, &string,
02031 NULL);
02032
02033 XawAsciiSave(source);
02034 sendLoadToolTable(string);
02035 }
02036
02037 XtPopdown(toolTableShell);
02038
02039 destroyToolTableShell();
02040 }
|
|
|
Definition at line 2154 of file yemc.cc. Referenced by varFileCancelCB(), and varFileDoneCB().
02155 {
02156 Widget source;
02157 String string;
02158
02159 if (get) {
02160 XtVaGetValues(varFileText,
02161 XtNtextSource, &source,
02162 XtNstring, &string,
02163 NULL);
02164
02165 XawAsciiSave(source);
02166 sendTaskPlanInit();
02167 }
02168
02169 XtPopdown(varFileShell);
02170
02171 destroyVarFileShell();
02172 }
|
|
||||||||||||||||||||
|
Definition at line 2591 of file yemc.cc. 02595 {
02596 int axis;
02597 char string[80];
02598
02599 for (axis = 0; axis < numPosLabels; axis++) {
02600 if (w == posLabel[axis]) {
02601 activeJoint = axis;
02602 activeCoord = axis;
02603 return;
02604 }
02605 }
02606
02607 if (w == spindleIncLabel) {
02608 sendSpindleIncrease();
02609 }
02610 else if (w == spindleDecLabel) {
02611 sendSpindleDecrease();
02612 }
02613 else if (w == jogMinusLabel) {
02614 if (jogIncrement > 0.0) {
02615 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
02616 }
02617 else {
02618 if (posFrame == POS_FRAME_JOINT)
02619 {
02620 sendJogCont(activeJoint, -jogSpeed);
02621 }
02622 else
02623 {
02624 sendJogCont(coordNum[activeCoord], -jogSpeed);
02625 }
02626 }
02627 }
02628 else if (w == jogPlusLabel) {
02629 if (jogIncrement > 0.0) {
02630 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
02631 }
02632 else {
02633 if (posFrame == POS_FRAME_JOINT)
02634 {
02635 sendJogCont(activeJoint, -jogSpeed);
02636 }
02637 else
02638 {
02639 sendJogCont(coordNum[activeCoord], -jogSpeed);
02640 }
02641 }
02642 }
02643 else if (w == jogSpeedLabel) {
02644 // pop up menu to change jog speed
02645 XtVaSetValues(jogSpeedDialog,
02646 XtNvalue, "",
02647 NULL);
02648 dialogPopup(NULL, jogSpeedShell, NULL);
02649 // trap window kill
02650 XSetWMProtocols(XtDisplay(topLevel), XtWindow(jogSpeedShell), &killAtom, 1);
02651 }
02652 else if (w == jogSpeedDecLabel) {
02653 // change it once here and redraw
02654 if (--jogSpeed <= 0) {
02655 jogSpeed = 1;
02656 }
02657 sprintf(string, "%d", jogSpeed);
02658 setLabel(jogSpeedLabel, string);
02659 redraw = 1;
02660
02661 // set jogSpeedChange so that timer callback will continue to change
02662 // until button up clears it
02663 jogSpeedChange = -1;
02664 }
02665 else if (w == jogSpeedIncLabel) {
02666 // change it once here and redraw
02667 if (++jogSpeed > maxJogSpeed) {
02668 jogSpeed = maxJogSpeed;
02669 }
02670 sprintf(string, "%d", jogSpeed);
02671 setLabel(jogSpeedLabel, string);
02672 redraw = 1;
02673
02674 // set jogSpeedChange so that timer callback will continue to change
02675 // until button up clears it
02676 jogSpeedChange = +1;
02677 }
02678 else if (w == feedOverrideLabel) {
02679 // pop up menu to change feed override
02680 XtVaSetValues(feedOverrideDialog,
02681 XtNvalue, "",
02682 NULL);
02683 dialogPopup(NULL, feedOverrideShell, NULL);
02684 // trap window kill
02685 XSetWMProtocols(XtDisplay(topLevel), XtWindow(feedOverrideShell), &killAtom, 1);
02686 }
02687 else if (w == feedOverrideDecLabel) {
02688 // change it once here and redraw
02689 if ((feedOverride -= 10) <= 0) {
02690 feedOverride = 0;
02691 }
02692 sprintf(string, "%3d", feedOverride);
02693 setLabel(feedOverrideLabel, string);
02694 redraw = 1;
02695
02696 // set feedOverrideChange so that timer callback will continue to change
02697 // until button up clears it
02698 feedOverrideChange = -1;
02699 }
02700 else if (w == feedOverrideIncLabel) {
02701 // change it once here and redraw
02702 if ((feedOverride += 10) > maxFeedOverride) {
02703 feedOverride = maxFeedOverride;
02704 }
02705 sprintf(string, "%3d", feedOverride);
02706 setLabel(feedOverrideLabel, string);
02707 redraw = 1;
02708
02709 // set feedOverrideChange so that timer callback will continue to change
02710 // until button up clears it
02711 feedOverrideChange = +1;
02712 }
02713 else {
02714 printf("down\n");
02715 }
02716 }
|
|
|
|
|
Definition at line 122 of file yemc.cc. 00123 {
00124 int retval = 0;
00125
00126 if (emcErrorBuffer == 0)
00127 {
00128 emcErrorBuffer = new NML(nmlErrorFormat, "emcError", "xemc", EMC_NMLFILE);
00129 if (! emcErrorBuffer->valid())
00130 {
00131 delete emcErrorBuffer;
00132 emcErrorBuffer = 0;
00133 retval = -1;
00134 }
00135 }
00136
00137 return retval;
00138 }
|
|
|
Definition at line 85 of file yemc.cc. 00086 {
00087 int retval = 0;
00088
00089 // try to connect to EMC cmd
00090 if (emcCommandBuffer == 0)
00091 {
00092 emcCommandBuffer = new RCS_CMD_CHANNEL(emcFormat, "emcCommand", "xemc", EMC_NMLFILE);
00093 if (! emcCommandBuffer->valid())
00094 {
00095 delete emcCommandBuffer;
00096 emcCommandBuffer = 0;
00097 retval = -1;
00098 }
00099 }
00100
00101 // try to connect to EMC status
00102 if (emcStatusBuffer == 0)
00103 {
00104 emcStatusBuffer = new RCS_STAT_CHANNEL(emcFormat, "emcStatus", "xemc", EMC_NMLFILE);
00105 if (! emcStatusBuffer->valid() ||
00106 EMC_STAT_TYPE != emcStatusBuffer->peek())
00107 {
00108 delete emcStatusBuffer;
00109 emcStatusBuffer = 0;
00110 emcStatus = 0;
00111 retval = -1;
00112 }
00113 else
00114 {
00115 emcStatus = (EMC_STAT *) emcStatusBuffer->get_address();
00116 }
00117 }
00118
00119 return retval;
00120 }
|
|
|
Definition at line 4376 of file yemc.cc. Referenced by timeoutCB().
04377 {
04378 static Boolean autoMenusEnabled = True;
04379
04380 if (autoMenusEnabled != torf) {
04381 XtSetSensitive(programOpenCommand, torf);
04382 XtSetSensitive(programRunCommand, torf);
04383 XtSetSensitive(programPauseCommand, torf);
04384 XtSetSensitive(programResumeCommand, torf);
04385 XtSetSensitive(programStepCommand, torf);
04386 XtSetSensitive(programVerifyCommand, torf);
04387 autoMenusEnabled = torf;
04388 }
04389 }
|
|
|
Definition at line 4349 of file yemc.cc. Referenced by timeoutCB().
04350 {
04351 static Boolean auxMenusEnabled = True;
04352
04353 if (auxMenusEnabled != torf) {
04354 XtSetSensitive(mistMenu, torf);
04355 XtSetSensitive(floodMenu, torf);
04356 XtSetSensitive(spindleMenu, torf);
04357 XtSetSensitive(brakeMenu, torf);
04358 auxMenusEnabled = torf;
04359 }
04360 }
|
|
|
Definition at line 4362 of file yemc.cc. Referenced by timeoutCB().
04363 {
04364 static Boolean manualMenusEnabled = True;
04365
04366 if (manualMenusEnabled != torf) {
04367 XtSetSensitive(jogMinusLabel, torf);
04368 XtSetSensitive(homeCommand, torf);
04369 XtSetSensitive(jogPlusLabel, torf);
04370 XtSetSensitive(programPauseCommand, torf);
04371 XtSetSensitive(programResumeCommand, torf);
04372 manualMenusEnabled = torf;
04373 }
04374 }
|
|
|
Definition at line 4391 of file yemc.cc. Referenced by timeoutCB().
04392 {
04393 static Boolean mdiMenusEnabled = True;
04394
04395 if (mdiMenusEnabled != torf) {
04396 //FIXME XtSetSensitive(mdiFormText, torf);
04397 XtSetSensitive(programPauseCommand, torf);
04398 XtSetSensitive(programResumeCommand, torf);
04399 mdiMenusEnabled = torf;
04400 }
04401
04402 if (torf) {
04403 /* set focus to mdi window */
04404 XtSetKeyboardFocus(topForm, mdiFormText);
04405 }
04406 else {
04407 XtSetKeyboardFocus(topForm, None);
04408 }
04409 }
|
|
||||||||||||||||
|
Definition at line 1624 of file yemc.cc. 01625 {
01626 XtPopdown(errorShell);
01627 errorIsPopped = 0;
01628 destroyErrorShell();
01629 }
|
|
||||||||||||||||||||
|
Definition at line 1617 of file yemc.cc. 01618 {
01619 XtPopdown(errorShell);
01620 errorIsPopped = 0;
01621 destroyErrorShell();
01622 }
|
|
||||||||||||||||||||
|
Definition at line 5310 of file yemc.cc. 05311 {
05312 XtPopdown(errorShell);
05313 errorIsPopped = 0;
05314 destroyErrorShell();
05315 }
|
|
||||||||||||||||||||
|
Definition at line 2543 of file yemc.cc. 02544 {
02545 doFeedOverrideDone();
02546 }
|
|
||||||||||||||||||||
|
Definition at line 5273 of file yemc.cc. 05274 {
05275 XtPopdown(feedOverrideShell);
05276 }
|
|
||||||||||||||||
|
Definition at line 2354 of file yemc.cc. 02355 {
02356 doFileEditDone();
02357 }
|
|
||||||||||||||||||||
|
Definition at line 2359 of file yemc.cc. 02360 {
02361 doFileEditDone();
02362 }
|
|
||||||||||||||||||||
|
Definition at line 5241 of file yemc.cc. 05242 {
05243 XtPopdown(fileEditShell);
05244 }
|
|
||||||||||||||||||||
|
Definition at line 2364 of file yemc.cc. 02365 {
02366 if (fileEditDoDone) {
02367 setBorderColor(fileEditDone, fileEditBorderColor);
02368 setBorderColor(fileEditCancel, pixelRed);
02369 fileEditDoDone = 0;
02370 }
02371 else {
02372 setBorderColor(fileEditDone, pixelRed);
02373 setBorderColor(fileEditCancel, fileEditBorderColor);
02374 fileEditDoDone = 1;
02375 }
02376 }
|
|
||||||||||||||||
|
Definition at line 1726 of file yemc.cc. 01727 {
01728 doFileEditorDone(0);
01729 }
|
|
||||||||||||||||
|
Definition at line 1721 of file yemc.cc. 01722 {
01723 doFileEditorDone(1);
01724 }
|
|
||||||||||||||||
|
Definition at line 1731 of file yemc.cc. 01732 {
01733 FILE *fp;
01734 XawTextPosition pos;
01735 int charcount = 0;
01736 int line = 1;
01737 char buffer[256]; // FIXME-- hardcoded
01738
01739 if (NULL == (fp = fopen(EDITOR_FILE, "r"))) {
01740 return;
01741 }
01742
01743 programStartLine = 0;
01744 pos = XawTextGetInsertionPoint(fileEditorText);
01745
01746 while (! feof(fp)) {
01747 if (NULL == fgets(buffer, 256, fp)) {
01748 // hmmm... never found line
01749 popupError("Can't mark line-- character position\n%d outside range of file", pos);
01750 break;
01751 }
01752
01753 charcount += strlen(buffer);
01754 if (charcount > pos) {
01755 // found it
01756 sendProgramOpen(EDITOR_FILE);
01757 popupError("Marking program to start here:\n%s", buffer);
01758 programStartLine = line;
01759 break;
01760 }
01761
01762 line++;
01763 }
01764
01765 fclose(fp);
01766 }
|
|
||||||||||||||||||||
|
Definition at line 5246 of file yemc.cc. 05247 {
05248 XtPopdown(fileEditorShell);
05249 destroyFileEditorShell();
05250 }
|
|
||||||||||||||||
|
Definition at line 3664 of file yemc.cc. 03665 {
03666 switch ((int) client_data) {
03667 case 0: // Open...
03668 dialogPopup(NULL, fileOpenShell, NULL);
03669 // trap window kill
03670 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileOpenShell), &killAtom, 1);
03671 break;
03672
03673 case 1: // Edit...
03674 dialogPopup(NULL, fileEditShell, NULL);
03675 // trap window kill
03676 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileEditShell), &killAtom, 1);
03677 break;
03678
03679 case 2: // Reset
03680 sendTaskPlanInit();
03681 break;
03682
03683 // case 3 is separator
03684
03685 case 4: // Quit
03686 dialogPopup(NULL, fileQuitShell, NULL);
03687 // trap window kill
03688 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileQuitShell), &killAtom, 1);
03689 break;
03690
03691 default:
03692 break;
03693 }
03694 }
|
|
||||||||||||||||
|
Definition at line 2232 of file yemc.cc. 02233 {
02234 doFileOpenDone();
02235 }
|
|
||||||||||||||||||||
|
Definition at line 2237 of file yemc.cc. 02238 {
02239 doFileOpenDone();
02240 }
|
|
||||||||||||||||||||
|
Definition at line 5231 of file yemc.cc. 05232 {
05233 XtPopdown(fileOpenShell);
05234 }
|
|
||||||||||||||||||||
|
Definition at line 2242 of file yemc.cc. 02243 {
02244 if (fileOpenDoDone) {
02245 setBorderColor(fileOpenDone, fileOpenBorderColor);
02246 setBorderColor(fileOpenCancel, pixelRed);
02247 fileOpenDoDone = 0;
02248 }
02249 else {
02250 setBorderColor(fileOpenDone, pixelRed);
02251 setBorderColor(fileOpenCancel, fileOpenBorderColor);
02252 fileOpenDoDone = 1;
02253 }
02254 }
|
|
||||||||||||||||
|
Definition at line 2273 of file yemc.cc. 02274 {
02275 doFileQuitDone();
02276 }
|
|
||||||||||||||||||||
|
Definition at line 2278 of file yemc.cc. 02279 {
02280 doFileQuitDone();
02281 }
|
|
||||||||||||||||||||
|
Definition at line 5236 of file yemc.cc. 05237 {
05238 XtPopdown(fileQuitShell);
05239 }
|
|
||||||||||||||||||||
|
Definition at line 2283 of file yemc.cc. 02284 {
02285 if (fileQuitDoDone) {
02286 setBorderColor(fileQuitDone, fileQuitBorderColor);
02287 setBorderColor(fileQuitCancel, pixelRed);
02288 fileQuitDoDone = 0;
02289 }
02290 else {
02291 setBorderColor(fileQuitDone, pixelRed);
02292 setBorderColor(fileQuitCancel, fileQuitBorderColor);
02293 fileQuitDoDone = 1;
02294 }
02295 }
|
|
||||||||||||||||
|
Definition at line 4211 of file yemc.cc. 04212 {
04213 switch ((int) client_data) {
04214 case 0:
04215 sendFloodOn();
04216 break;
04217
04218 case 1:
04219 sendFloodOff();
04220 break;
04221
04222 default:
04223 break;
04224 }
04225 }
|
|
||||||||||||
|
Definition at line 470 of file yemc.cc. Referenced by fwSyncLine().
00471 {
00472 if (NULL == fw) {
00473 return -1;
00474 }
00475
00476 strncpy(&fw->fileWindow[fw->windowEnd * fw->maxLineLen], line, fw->maxLineLen - 1);
00477 fw->fileWindow[fw->windowEnd * fw->maxLineLen + fw->maxLineLen - 1] = 0;
00478
00479 if (fw->windowEnd == fw->windowStart &&
00480 0 != fw->windowCount) {
00481 /* we're full, so move fw->windowStart up */
00482 /* and don't increment fw->windowCount */
00483 if (++fw->windowStart >= fw->maxWindowLines) {
00484 fw->windowStart = 0;
00485 }
00486 }
00487 else {
00488 /* we're not full, so no need to move fw->windowStart up */
00489 /* but do increment fw->windowCount */
00490 ++fw->windowCount;
00491 }
00492
00493 /* now increment fw->windowEnd to point to next slot */
00494 if (++fw->windowEnd >= fw->maxWindowLines) {
00495 fw->windowEnd = 0;
00496 }
00497
00498 return 0;
00499 }
|
|
|
Definition at line 338 of file yemc.cc. Referenced by fwClose(), fwInit(), and fwSyncLine().
00339 {
00340 int t;
00341
00342 if (NULL == fw) {
00343 return -1;
00344 }
00345
00346 for (t = 0; t < fw->maxWindowLines; t++) {
00347 fw->fileWindow[t * fw->maxLineLen] = 0;
00348 }
00349
00350 fw->windowStart = 0;
00351 fw->windowEnd = 0;
00352 fw->windowCount = 0;
00353
00354 fw->fileFpLine = 0;
00355
00356 fw->keepNextLine = 1;
00357
00358 return 0;
00359 }
|
|
|
Definition at line 404 of file yemc.cc. Referenced by timeoutCB().
00405 {
00406 int retval = 0;
00407
00408 if (NULL == fw) {
00409 return -1;
00410 }
00411
00412 /* first clear out the window */
00413 if (0 != fwClear(fw)) {
00414 retval = -1;
00415 }
00416
00417 if (NULL != fw->fileFp) {
00418 fclose(fw->fileFp);
00419 }
00420 fw->fileFp = NULL;
00421
00422 return retval;
00423 }
|
|
||||||||||||||||
|
Definition at line 361 of file yemc.cc. Referenced by main().
00362 {
00363 if (NULL == fw) {
00364 return -1;
00365 }
00366
00367 fw->fileWindow = (char *) malloc(_maxLineLen * _maxWindowLines);
00368
00369 fw->maxWindowLines = _maxWindowLines;
00370 fw->maxLineLen = _maxLineLen;
00371
00372 /* clear out the remaining vars */
00373 if (0 != fwClear(fw)) {
00374 return -1;
00375 }
00376
00377 /* mark the file closed */
00378 fw->fileFp = NULL;
00379
00380 return 0;
00381 }
|
|
||||||||||||
|
Definition at line 383 of file yemc.cc. Referenced by timeoutCB().
00384 {
00385 if (NULL == fw) {
00386 return -1;
00387 }
00388
00389 /* close any open file */
00390 if (NULL != fw->fileFp) {
00391 fclose(fw->fileFp);
00392 fw->fileFp = NULL;
00393 }
00394
00395 if (NULL == (fw->fileFp = fopen(file, "r"))) {
00396 return -1;
00397 }
00398
00399 fw->keepNextLine = 1;
00400
00401 return 0;
00402 }
|
|
||||||||||||
|
Definition at line 593 of file yemc.cc. Referenced by timeoutCB().
00594 {
00595 int start;
00596
00597 if (NULL == fw) {
00598 return -1;
00599 }
00600
00601 start = fw->windowStart;
00602 string[0] = 0;
00603
00604 if (0 == fw->windowCount) {
00605 return 0;
00606 }
00607
00608 do {
00609 strncat(string, &(fw->fileWindow[start * fw->maxLineLen]),
00610 fw->maxLineLen - 2);
00611 strcat(string, "\n");
00612 if (++start >= fw->maxWindowLines) {
00613 start = 0;
00614 }
00615 } while (start != fw->windowEnd);
00616
00617 return 0;
00618 }
|
|
||||||||||||
|
Definition at line 524 of file yemc.cc. Referenced by timeoutCB().
00525 {
00526 char line[256]; // FIXME-- hardcoded
00527 int pad;
00528 int len;
00529 int sawEol;
00530
00531 if (NULL == fw) {
00532 return -1;
00533 }
00534
00535 if (NULL == fw->fileFp) {
00536 return -1;
00537 }
00538
00539 /* if syncLine is <= 0, make it 1 */
00540 if (syncLine <= 0) {
00541 syncLine = 1;
00542 }
00543
00544 /* reset syncLine so that it means the first line is synched */
00545 syncLine += fw->maxWindowLines - 1;
00546
00547 /* check if our window is ahead of file, and rewind if so */
00548 if (syncLine < fw->fileFpLine) {
00549 /* we're ahead of program, so rewind */
00550 rewind(fw->fileFp);
00551 /* and clear out fw->fileWindow */
00552 fwClear(fw);
00553 }
00554
00555 /* now the window is at or behind the file */
00556 /* so fill it up */
00557 while (fw->fileFpLine < syncLine) {
00558 if (NULL == fgets(line, fw->maxLineLen, fw->fileFp)) {
00559 /* end file */
00560 /* pad remainder if any */
00561 pad = syncLine - fw->fileFpLine;
00562 while (pad-- > 0) {
00563 fwAddLine(fw, "");
00564 }
00565 fw->fileFpLine = syncLine;
00566 break;
00567 }
00568
00569 sawEol = 0;
00570 len = strlen(line);
00571 while (--len >= 0) {
00572 if (CR == line[len] ||
00573 LF == line[len]) {
00574 line[len] = 0;
00575 sawEol = 1;
00576 }
00577 else {
00578 break;
00579 }
00580 }
00581
00582 if (fw->keepNextLine) {
00583 fwAddLine(fw, line);
00584 ++fw->fileFpLine;
00585 }
00586
00587 fw->keepNextLine = sawEol;
00588 }
00589
00590 return 0;
00591 }
|
|
||||||||||||||||
|
Definition at line 2584 of file yemc.cc. 02585 {
02586 XtPopdown((Widget) client_data);
02587 }
|
|
||||||||||||
|
Definition at line 1509 of file yemc.cc. Referenced by main().
01510 {
01511 Arg args;
01512
01513 XtSetArg(args, XtNborderColor, pixel);
01514 XtGetValues(w, &args, 1);
01515
01516 return 0;
01517 }
|
|
||||||||||||||||
|
Definition at line 1472 of file yemc.cc. Referenced by main().
01473 {
01474 Arg args;
01475
01476 if (foreground)
01477 XtSetArg(args, XtNforeground, pixel);
01478 else
01479 XtSetArg(args, XtNbackground, pixel);
01480 XtGetValues(w, &args, 1);
01481
01482 return 0;
01483 }
|
|
||||||||||||||||||||
|
Definition at line 5305 of file yemc.cc. 05306 {
05307 XtPopdown(helpAboutShell);
05308 }
|
|
||||||||||||||||||||
|
Definition at line 2579 of file yemc.cc. 02580 {
02581 XtPopdown(helpAboutShell);
02582 }
|
|
||||||||||||||||
|
Definition at line 4128 of file yemc.cc. 04129 {
04130 switch ((int) client_data) {
04131 case 0: // Help...
04132 dialogPopup(w, helpXemcShell, NULL);
04133 // trap window kill
04134 XSetWMProtocols(XtDisplay(topLevel), XtWindow(helpXemcShell), &killAtom, 1);
04135 break;
04136
04137 // case 1 is separator
04138
04139 case 2: // About...
04140 dialogPopup(NULL, helpAboutShell, NULL);
04141 XSetWMProtocols(XtDisplay(topLevel), XtWindow(helpAboutShell), &killAtom, 1);
04142 break;
04143
04144 default:
04145 break;
04146 }
04147 }
|
|
||||||||||||||||||||
|
Definition at line 5300 of file yemc.cc. 05301 {
05302 XtPopdown(helpXemcShell);
05303 }
|
|
||||||||||||||||||||
|
Definition at line 2574 of file yemc.cc. 02575 {
02576 XtPopdown(helpXemcShell);
02577 }
|
|
||||||||||||
|
Definition at line 1545 of file yemc.cc. Referenced by timeoutCB().
01546 {
01547 int start, end;
01548
01549 // position 'start' to first char on index line
01550 for (start = 0; ; start++) {
01551 if (index <= 0) {
01552 break;
01553 }
01554 if (text[start] == 0 || text[start] == '\n') {
01555 index--;
01556 }
01557 }
01558
01559 // position 'end' to last char on index line
01560 for (end = start; ; end++) {
01561 if (text[end] == 0 || text[end] == '\n') {
01562 break;
01563 }
01564 }
01565
01566 XawTextSetSelection(programText, start, end);
01567 return(0);
01568 }
|
|
||||||||||||||||
|
Definition at line 1609 of file yemc.cc. 01610 {
01611 sendHome(activeJoint);
01612 }
|
|
|
Definition at line 5500 of file yemc.cc. Referenced by main().
05501 {
05502 INIFILE inifile;
05503 const char *inistring;
05504 char machine[INIFILE_MAX_LINELEN] = "";
05505 char version[INIFILE_MAX_LINELEN] = "";
05506 char displayString[INIFILE_MAX_LINELEN] = "";
05507 int t;
05508 int i;
05509 double d;
05510 int len;
05511
05512 // open it
05513 if (-1 == inifile.open(filename)) {
05514 return -1;
05515 }
05516
05517 if (NULL != (inistring = inifile.find("NML_FILE", "EMC"))) {
05518 // copy to global
05519 strcpy(EMC_NMLFILE, inistring);
05520 }
05521 else {
05522 // not found, use default
05523 }
05524
05525 if (NULL != (inistring = inifile.find("DEBUG", "EMC"))) {
05526 // copy to global
05527 if (1 != sscanf(inistring, "%i", &EMC_DEBUG)) {
05528 EMC_DEBUG = 0;
05529 }
05530 }
05531 else {
05532 // not found, use default
05533 EMC_DEBUG = 0;
05534 }
05535
05536
05537 if (NULL != (inistring = inifile.find("AXES", "TRAJ"))) {
05538 if (1 == sscanf(inistring, "%d", &numJoints)) {
05539 // compare against XEMC_NUM_AXES, if larger then clip and warn
05540 if (numJoints > XEMC_NUM_AXES) {
05541 numJoints = XEMC_NUM_AXES;
05542 }
05543 }
05544 else {
05545 // there, but invalid
05546 numJoints = 3;
05547 }
05548 }
05549 else {
05550 // not there, use default
05551 numJoints = 3;
05552 }
05553
05554 if (NULL != (inistring = inifile.find("KINEMATICS", "TRAJ"))) {
05555 if (! strcmp(inistring, "IDENTITY")) {
05556 kinematicsType = KINEMATICS_IDENTITY;
05557 }
05558 else if (! strcmp(inistring, "SERIAL")) {
05559 kinematicsType = KINEMATICS_SERIAL;
05560 }
05561 else if (! strcmp(inistring, "PARALLEL")) {
05562 kinematicsType = KINEMATICS_SERIAL;
05563 }
05564 else {
05565 // there, but invalid
05566 kinematicsType = KINEMATICS_IDENTITY;
05567 }
05568 }
05569 else {
05570 // not there, use default
05571 kinematicsType = KINEMATICS_IDENTITY;
05572 }
05573
05574 // set coordinateMark[] array with 1's for those coordinates
05575 // to be displayed, e.g., 1 1 0 0 0 1 for X Y W out of X Y Z R P W
05576 if (NULL != (inistring = inifile.find("COORDINATES", "TRAJ"))) {
05577 len = strlen(inistring);
05578 // there's an entry in ini file, so clear all the marks out first
05579 // so that defaults don't apply at all
05580 for (t = 0; t < 6; t++) {
05581 coordinateMark[t] = 0;
05582 }
05583 // now set actual marks
05584 for (t = 0; t < len; t++) {
05585 if (inistring[t] == 'X')
05586 coordinateMark[0] = 1;
05587 else if (inistring[t] == 'Y')
05588 coordinateMark[1] = 1;
05589 else if (inistring[t] == 'Z')
05590 coordinateMark[2] = 1;
05591 else if (inistring[t] == 'R')
05592 coordinateMark[3] = 1;
05593 else if (inistring[t] == 'P')
05594 coordinateMark[4] = 1;
05595 else if (inistring[t] == 'W')
05596 coordinateMark[5] = 1;
05597 }
05598 }
05599 else {
05600 // not there, use default
05601 // by leaving coordinateMark[] alone
05602 }
05603
05604 // count the number of unique marks
05605 numCoords = 0;
05606 for (t = 0; t < 6; t++) {
05607 if (coordinateMark[t]) {
05608 // since t never lags numCoords, we can pack letters down
05609 posLabelWorld[numCoords] = posLabelWorld[t];
05610 coordNum[numCoords] = t;
05611 numCoords++;
05612 }
05613 }
05614
05615 if (NULL != (inistring = inifile.find("MACHINE", "EMC"))) {
05616 strcpy(machine, inistring);
05617
05618 if (NULL != (inistring = inifile.find("VERSION", "EMC"))) {
05619 sscanf(inistring, "$Revision: %s", version);
05620
05621 sprintf(version_string, "%s EMC Version %s", machine, version);
05622 }
05623 }
05624
05625 if (NULL != (inistring = inifile.find("TOOL_TABLE", "EMCIO"))) {
05626 strcpy(TOOL_TABLE_FILE, inistring);
05627 }
05628 else {
05629 strcpy(TOOL_TABLE_FILE, "tool.tbl"); // FIXME-- hardcoded
05630 }
05631
05632 if (NULL != (inistring = inifile.find("PARAMETER_FILE", "RS274NGC"))) {
05633 strcpy(PARAMETER_FILE, inistring);
05634 }
05635 else {
05636 strcpy(PARAMETER_FILE, "rs274ngc.var"); // FIXME-- hardcoded
05637 }
05638
05639 if (NULL != (inistring = inifile.find("DEFAULT_VELOCITY", "TRAJ"))) {
05640 if (1 != sscanf(inistring, "%lf", &TRAJ_DEFAULT_VELOCITY)) {
05641 TRAJ_DEFAULT_VELOCITY = DEFAULT_TRAJ_DEFAULT_VELOCITY;
05642 }
05643 }
05644 else {
05645 TRAJ_DEFAULT_VELOCITY = DEFAULT_TRAJ_DEFAULT_VELOCITY;
05646 }
05647 // round jogSpeed in display to integer, per-minute
05648 jogSpeed = (int) (TRAJ_DEFAULT_VELOCITY * 60.0 + 0.5);
05649
05650 if (NULL != (inistring = inifile.find("MAX_VELOCITY", "TRAJ"))) {
05651 if (1 != sscanf(inistring, "%lf", &TRAJ_MAX_VELOCITY)) {
05652 TRAJ_MAX_VELOCITY = DEFAULT_TRAJ_MAX_VELOCITY;
05653 }
05654 }
05655 else {
05656 TRAJ_MAX_VELOCITY = DEFAULT_TRAJ_MAX_VELOCITY;
05657 }
05658 // round maxJogSpeed in display to integer, per-minute
05659 maxJogSpeed = (int) (TRAJ_MAX_VELOCITY * 60.0 + 0.5);
05660
05661 if (NULL != (inistring = inifile.find("PROGRAM_PREFIX", "DISPLAY"))) {
05662 if (1 != sscanf(inistring, "%s", programPrefix)) {
05663 programPrefix[0] = 0;
05664 }
05665 }
05666 else if (NULL != (inistring = inifile.find("PROGRAM_PREFIX", "TASK"))) {
05667 if (1 != sscanf(inistring, "%s", programPrefix)) {
05668 programPrefix[0] = 0;
05669 }
05670 }
05671 else {
05672 programPrefix[0] = 0;
05673 }
05674
05675 if (NULL != (inistring = inifile.find("POSITION_OFFSET", "DISPLAY"))) {
05676 if (1 == sscanf(inistring, "%s", displayString)) {
05677 if (! strcmp(upcase(displayString), "MACHINE")) {
05678 coords = COORD_MACHINE;
05679 }
05680 else if (1 == sscanf(inistring, "%s", displayString)) {
05681 if (! strcmp(upcase(displayString), "RELATIVE")) {
05682 coords = COORD_RELATIVE;
05683 }
05684 }
05685 else {
05686 // error-- invalid value
05687 // ignore
05688 }
05689 }
05690 else {
05691 // error-- no value provided
05692 // ignore
05693 }
05694 }
05695 else {
05696 // no line at all
05697 // ignore
05698 }
05699
05700 if (NULL != (inistring = inifile.find("POSITION_FEEDBACK", "DISPLAY"))) {
05701 if (1 == sscanf(inistring, "%s", displayString)) {
05702 if (! strcmp(upcase(displayString), "ACTUAL")) {
05703 posDisplay = POS_DISPLAY_ACT;
05704 }
05705 else if (1 == sscanf(inistring, "%s", displayString)) {
05706 if (! strcmp(upcase(displayString), "COMMANDED")) {
05707 posDisplay = POS_DISPLAY_CMD;
05708 }
05709 }
05710 else {
05711 // error-- invalid value
05712 // ignore
05713 }
05714 }
05715 else {
05716 // error-- no value provided
05717 // ignore
05718 }
05719 }
05720 else {
05721 // no line at all
05722 // ignore
05723 }
05724
05725 for (t = 0; t < XEMC_NUM_AXES; t++) {
05726 jogPol[t] = 1; // set to default
05727 sprintf(displayString, "AXIS_%d", t);
05728 if (NULL != (inistring = inifile.find("JOGGING_POLARITY", displayString)) &&
05729 1 == sscanf(inistring, "%d", &i) &&
05730 i == 0) {
05731 // it read as 0, so override default
05732 jogPol[t] = 0;
05733 }
05734 }
05735
05736 if (NULL != (inistring = inifile.find("MAX_FEED_OVERRIDE", "DISPLAY"))) {
05737 if (1 == sscanf(inistring, "%lf", &d) &&
05738 d > 0.0) {
05739 maxFeedOverride = (int) (d * 100.0 + 0.5);
05740 }
05741 else {
05742 // error-- no value provided
05743 // ignore
05744 }
05745 }
05746 else {
05747 // no line at all
05748 // ignore
05749 }
05750
05751 // close it
05752 inifile.close();
05753
05754 return 0;;
05755 }
|
|
||||||||||||||||
|
Definition at line 4263 of file yemc.cc. 04264 {
04265 switch ((int) client_data) {
04266 case 0:
04267 jogIncrement = 0.0001;
04268 break;
04269
04270 case 1:
04271 jogIncrement = 0.0010;
04272 break;
04273
04274 case 2:
04275 jogIncrement = 0.0100;
04276 break;
04277
04278 case 3:
04279 jogIncrement = 0.1000;
04280 break;
04281
04282 // case 4 is separator
04283
04284 case 5:
04285 jogIncrement = -1.0;
04286 break;
04287
04288 default:
04289 break;
04290 }
04291 }
|
|
||||||||||||||||||||
|
Definition at line 2524 of file yemc.cc. 02525 {
02526 doJogSpeedDone();
02527 }
|
|
||||||||||||||||||||
|
Definition at line 5268 of file yemc.cc. 05269 {
05270 XtPopdown(jogSpeedShell);
05271 }
|
|
||||||||||||||||||||
|
Definition at line 3528 of file yemc.cc. 03532 {
03533 if (ev->type == XEVENT_TYPE_XKEY_KEY_PRESS_EVENT) {
03534 keyPressKeycode = ev->xkey.keycode;
03535 keyPressState = ev->xkey.state;
03536
03537 if (keyReleaseOut) {
03538 if (keyPressKeycode == keyReleaseKeycode &&
03539 keyPressState == keyReleaseState) {
03540 // the press matched the release before the timeout, so it's
03541 // a key repeat on this key and we won't signal a key release
03542 keyReleaseOut = 0;
03543 }
03544 else {
03545 // it's a key press on a different key than the previous release,
03546 // so allow the release to go through by leaving keyReleaseOut set
03547 }
03548 }
03549 else {
03550 keyPressAction(ev->xkey.state, ev->xkey.keycode);
03551 }
03552 }
03553 else if (ev->type == XEVENT_TYPE_XKEY_KEY_RELEASE_EVENT) {
03554 keyReleaseKeycode = ev->xkey.keycode;
03555 keyReleaseState = ev->xkey.state;
03556 keyReleaseTime = etime();
03557 keyReleaseOut = 1;
03558 }
03559
03560 return;
03561 }
|
|
||||||||||||
|
Definition at line 2851 of file yemc.cc. Referenced by keyAction().
02852 {
02853 char string[256];
02854 static double saveJogIncrement = 0.1000;
02855
02856 switch (keycode) {
02857
02858 case KEY_ESC:
02859 sendAbort();
02860 break;
02861
02862 case KEY_F1:
02863 // estop toggle
02864 if (emcStatus->task.state == EMC_TASK_STATE_ESTOP) {
02865 sendEstopReset();
02866 }
02867 else {
02868 sendEstop();
02869 }
02870 break;
02871
02872 case KEY_F2:
02873 // estop toggle
02874 if (emcStatus->task.state == EMC_TASK_STATE_ESTOP_RESET) {
02875 sendMachineOn();
02876 }
02877 else {
02878 sendMachineOff();
02879 }
02880 break;
02881
02882 case KEY_F3:
02883 // manual mode
02884 sendManual();
02885 break;
02886
02887 case KEY_F4:
02888 // auto mode
02889 sendAuto();
02890 break;
02891
02892 case KEY_F5:
02893 // mdi mode
02894 sendMdi();
02895 break;
02896
02897 case KEY_F6:
02898 sendTaskPlanInit();
02899 break;
02900
02901 case KEY_F7:
02902 // mist toggle
02903 if (emcStatus->io.coolant.mist) {
02904 sendMistOff();
02905 }
02906 else {
02907 sendMistOn();
02908 }
02909 break;
02910
02911 case KEY_F8:
02912 // flood toggle
02913 if (emcStatus->io.coolant.flood) {
02914 sendFloodOff();
02915 }
02916 else {
02917 sendFloodOn();
02918 }
02919 break;
02920
02921 case KEY_F9:
02922 // spindle fwd/off
02923 if (emcStatus->io.spindle.direction == 0) {
02924 // it's off, so turn forward
02925 sendSpindleForward();
02926 }
02927 else
02928 {
02929 // it's not off, so turn off
02930 sendSpindleOff();
02931 }
02932 break;
02933
02934 case KEY_F10:
02935 // spindle rev/off
02936 if (emcStatus->io.spindle.direction == 0) {
02937 // it's off, so turn reverse
02938 sendSpindleReverse();
02939 }
02940 else
02941 {
02942 // it's not off, so turn off
02943 sendSpindleOff();
02944 }
02945 break;
02946
02947 case KEY_F11:
02948 // spindle decrease
02949 if (emcStatus->io.spindle.direction != 0) {
02950 sendSpindleDecrease();
02951 }
02952 break;
02953
02954 case KEY_F12:
02955 // spindle increase
02956 if (emcStatus->io.spindle.direction != 0) {
02957 sendSpindleIncrease();
02958 }
02959 break;
02960
02961 case KEY_RIGHT:
02962 switch (state) {
02963 case XKEY_EVENT_STATE_ALT:
02964 activeJoint = 3;
02965 break;
02966 default:
02967 activeJoint = 0;
02968 break;
02969 }
02970 if (jogIncrement > 0.0) {
02971 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
02972 }
02973 else {
02974 sendJogCont(activeJoint, jogSpeed);
02975 }
02976 break;
02977
02978 case KEY_LEFT:
02979 switch (state) {
02980 case XKEY_EVENT_STATE_ALT:
02981 activeJoint = 3;
02982 break;
02983 default:
02984 activeJoint = 0;
02985 break;
02986 }
02987 if (jogIncrement > 0.0) {
02988 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
02989 }
02990 else {
02991 sendJogCont(activeJoint, -jogSpeed);
02992 }
02993 break;
02994
02995 case KEY_UP:
02996 switch (state) {
02997 case XKEY_EVENT_STATE_ALT:
02998 activeJoint = 4;
02999 break;
03000 default:
03001 activeJoint = 1;
03002 break;
03003 }
03004 if (jogIncrement > 0.0) {
03005 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03006 }
03007 else {
03008 sendJogCont(activeJoint, jogSpeed);
03009 }
03010 break;
03011
03012 case KEY_DOWN:
03013 switch (state) {
03014 case XKEY_EVENT_STATE_ALT:
03015 activeJoint = 4;
03016 break;
03017 default:
03018 activeJoint = 1;
03019 break;
03020 }
03021 if (jogIncrement > 0.0) {
03022 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03023 }
03024 else {
03025 sendJogCont(activeJoint, -jogSpeed);
03026 }
03027 break;
03028
03029 case KEY_PGUP:
03030 switch (state) {
03031 case XKEY_EVENT_STATE_ALT:
03032 activeJoint = 5;
03033 break;
03034 default:
03035 activeJoint = 2;
03036 break;
03037 }
03038 if (jogIncrement > 0.0) {
03039 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03040 }
03041 else {
03042 sendJogCont(activeJoint, jogSpeed);
03043 }
03044 break;
03045
03046 case KEY_PGDN:
03047 switch (state) {
03048 case XKEY_EVENT_STATE_ALT:
03049 activeJoint = 5;
03050 break;
03051 default:
03052 activeJoint = 2;
03053 break;
03054 }
03055 if (jogIncrement > 0.0) {
03056 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03057 }
03058 else {
03059 sendJogCont(activeJoint, -jogSpeed);
03060 }
03061 break;
03062
03063 case KEY_Q:
03064 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03065 if (numJoints <= 0)
03066 break; // joint out of range
03067 activeJoint = 0;
03068 if (jogIncrement > 0.0) {
03069 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03070 }
03071 else {
03072 sendJogCont(activeJoint, jogSpeed);
03073 }
03074 }
03075 break;
03076
03077 case KEY_W:
03078 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03079 if (numJoints <= 1)
03080 break; // joint out of range
03081 activeJoint = 1;
03082 if (jogIncrement > 0.0) {
03083 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03084 }
03085 else {
03086 sendJogCont(activeJoint, jogSpeed);
03087 }
03088 }
03089 break;
03090
03091 case KEY_E:
03092 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03093 if (numJoints <= 2)
03094 break; // joint out of range
03095 activeJoint = 2;
03096 if (jogIncrement > 0.0) {
03097 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03098 }
03099 else {
03100 sendJogCont(activeJoint, jogSpeed);
03101 }
03102 }
03103 else {
03104 dialogPopup(NULL, fileEditShell, NULL);
03105 // trap window kill
03106 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileEditShell), &killAtom, 1);
03107 }
03108 break;
03109
03110 case KEY_R:
03111 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03112 if (numJoints <= 3)
03113 break; // joint out of range
03114 activeJoint = 3;
03115 if (jogIncrement > 0.0) {
03116 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03117 }
03118 else {
03119 sendJogCont(activeJoint, jogSpeed);
03120 }
03121 }
03122 else {
03123 sendProgramRun(programStartLine);
03124 }
03125 break;
03126
03127 case KEY_T:
03128 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03129 if (numJoints <= 4)
03130 break; // joint out of range
03131 activeJoint = 4;
03132 if (jogIncrement > 0.0) {
03133 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03134 }
03135 else {
03136 sendJogCont(activeJoint, jogSpeed);
03137 }
03138 }
03139 else {
03140 switch (state) {
03141 case XKEY_EVENT_STATE_ALT:
03142 sprintf(string, "%d", emcStatus->io.tool.toolInSpindle);
03143 XtVaSetValues(toolSetOffsetTool, XtNstring, string, NULL);
03144 sprintf(string, "%f",
03145 emcStatus->motion.traj.actualPosition.tran.z -
03146 emcStatus->task.origin.tran.z);
03147 XtVaSetValues(toolSetOffsetLength, XtNstring, string, NULL);
03148 XtVaSetValues(toolSetOffsetDiameter, XtNstring, "0.0", NULL);
03149 dialogPopup(NULL, toolSetOffsetShell, NULL);
03150 // trap window kill
03151 XSetWMProtocols(XtDisplay(topLevel), XtWindow(toolSetOffsetShell), &killAtom, 1);
03152 break;
03153 }
03154 }
03155 break;
03156
03157 case KEY_Y:
03158 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03159 if (numJoints <= 5)
03160 break; // joint out of range
03161 activeJoint = 5;
03162 if (jogIncrement > 0.0) {
03163 sendJogIncr(activeJoint, jogSpeed, jogIncrement);
03164 }
03165 else {
03166 sendJogCont(activeJoint, jogSpeed);
03167 }
03168 }
03169 break;
03170
03171 case KEY_X:
03172 break;
03173
03174 case KEY_Z:
03175 break;
03176
03177 case KEY_HOME:
03178 sendHome(activeJoint);
03179 break;
03180
03181 case KEY_END:
03182 dialogPopup(NULL, fileQuitShell, NULL);
03183 // trap window kill
03184 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileQuitShell), &killAtom, 1);
03185 break;
03186
03187 case KEY_1:
03188 sendFeedOverride(0.1);
03189 break;
03190
03191 case KEY_2:
03192 switch (state) {
03193 case XKEY_EVENT_STATE_NONE:
03194 sendFeedOverride(0.2);
03195 break;
03196
03197 case XKEY_EVENT_STATE_SHIFT:
03198 // @
03199 if (posDisplay == POS_DISPLAY_CMD) {
03200 posDisplay = POS_DISPLAY_ACT;
03201 }
03202 else {
03203 posDisplay = POS_DISPLAY_CMD;
03204 }
03205 break;
03206
03207 }
03208 break;
03209
03210 case KEY_3:
03211 switch (state) {
03212 case XKEY_EVENT_STATE_NONE:
03213 sendFeedOverride(0.3);
03214 break;
03215
03216 case XKEY_EVENT_STATE_SHIFT:
03217 if (coords == COORD_RELATIVE) {
03218 coords = COORD_MACHINE;
03219 }
03220 else {
03221 coords = COORD_RELATIVE;
03222 }
03223 break;
03224
03225 }
03226 break;
03227
03228 case KEY_4:
03229 switch (state) {
03230 case XKEY_EVENT_STATE_NONE:
03231 sendFeedOverride(0.4);
03232 break;
03233
03234 case XKEY_EVENT_STATE_SHIFT:
03235 EMC_TRAJ_SET_TELEOP_ENABLE emc_traj_set_teleop_enable;
03236 if (posFrame == POS_FRAME_WORLD) {
03237 posFrame = POS_FRAME_JOINT;
03238 emc_traj_set_teleop_enable.enable = 0;
03239 }
03240 else {
03241 posFrame = POS_FRAME_WORLD;
03242 emc_traj_set_teleop_enable.enable = 1;
03243 }
03244 emc_traj_set_teleop_enable.serial_number = ++emcCommandSerialNumber;
03245 emcCommandBuffer->write(&emc_traj_set_teleop_enable);
03246 break;
03247
03248 }
03249 break;
03250
03251 case KEY_5:
03252 sendFeedOverride(0.5);
03253 break;
03254
03255 case KEY_6:
03256 sendFeedOverride(0.6);
03257 break;
03258
03259 case KEY_7:
03260 sendFeedOverride(0.7);
03261 break;
03262
03263 case KEY_8:
03264 sendFeedOverride(0.8);
03265 break;
03266
03267 case KEY_9:
03268 sendFeedOverride(0.9);
03269 break;
03270
03271 case KEY_0:
03272 sendFeedOverride(1.0);
03273 break;
03274
03275 case KEY_O:
03276 dialogPopup(NULL, fileOpenShell, NULL);
03277 // trap window kill
03278 XSetWMProtocols(XtDisplay(topLevel), XtWindow(fileOpenShell), &killAtom, 1);
03279 break;
03280
03281 case KEY_P:
03282 switch (state) {
03283 case XKEY_EVENT_STATE_NONE:
03284 case XKEY_EVENT_STATE_SHIFT:
03285 sendProgramPause();
03286 break;
03287
03288 case XKEY_EVENT_STATE_ALT:
03289 sendLogStop();
03290 break;
03291
03292 case XKEY_EVENT_STATE_CONTROL:
03293 plotLog(saveLogFile, saveLogType);
03294 break;
03295 }
03296 break;
03297
03298 case KEY_V:
03299 programStartLine = -1;
03300 sendProgramRun(programStartLine);
03301 break;
03302
03303 case KEY_A:
03304 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03305 if (numJoints <= 0)
03306 break; // joint out of range
03307 activeJoint = 0;
03308 if (jogIncrement > 0.0) {
03309 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03310 }
03311 else {
03312 sendJogCont(activeJoint, -jogSpeed);
03313 }
03314 }
03315 else {
03316 sendProgramStep();
03317 }
03318 break;
03319
03320 case KEY_S:
03321 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03322 if (numJoints <= 1)
03323 break; // joint out of range
03324 activeJoint = 1;
03325 if (jogIncrement > 0.0) {
03326 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03327 }
03328 else {
03329 sendJogCont(activeJoint, -jogSpeed);
03330 }
03331 }
03332 else {
03333 switch (state) {
03334 case XKEY_EVENT_STATE_NONE:
03335 case XKEY_EVENT_STATE_SHIFT:
03336 sendProgramResume();
03337 break;
03338
03339 case XKEY_EVENT_STATE_ALT:
03340 sendLogStart();
03341 break;
03342 }
03343 }
03344 break;
03345
03346 case KEY_D:
03347 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03348 if (numJoints <= 2)
03349 break; // joint out of range
03350 activeJoint = 2;
03351 if (jogIncrement > 0.0) {
03352 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03353 }
03354 else {
03355 sendJogCont(activeJoint, -jogSpeed);
03356 }
03357 }
03358 break;
03359
03360 case KEY_F:
03361 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03362 if (numJoints <= 3)
03363 break; // joint out of range
03364 activeJoint = 3;
03365 if (jogIncrement > 0.0) {
03366 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03367 }
03368 else {
03369 sendJogCont(activeJoint, -jogSpeed);
03370 }
03371 }
03372 else {
03373 switch (state) {
03374 case XKEY_EVENT_STATE_ALT:
03375 sendLogClose();
03376 break;
03377 }
03378 }
03379 break;
03380
03381 case KEY_G:
03382 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03383 if (numJoints <= 4)
03384 break; // joint out of range
03385 activeJoint = 4;
03386 if (jogIncrement > 0.0) {
03387 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03388 }
03389 else {
03390 sendJogCont(activeJoint, -jogSpeed);
03391 }
03392 }
03393 break;
03394
03395 case KEY_H:
03396 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
03397 if (numJoints <= 5)
03398 break; // joint out of range
03399 activeJoint = 5;
03400 if (jogIncrement > 0.0) {
03401 sendJogIncr(activeJoint, -jogSpeed, jogIncrement);
03402 }
03403 else {
03404 sendJogCont(activeJoint, -jogSpeed);
03405 }
03406 }
03407 break;
03408
03409 case KEY_B:
03410 switch (state) {
03411 case XKEY_EVENT_STATE_NONE:
03412 sendBrakeRelease();
03413 break;
03414
03415 case XKEY_EVENT_STATE_SHIFT:
03416 sendBrakeEngage();
03417 break;
03418
03419 }
03420 break;
03421
03422 case KEY_I:
03423 // check for entering from continuous jog, and restore saved increment
03424 if (jogIncrement <= 0.0) {
03425 jogIncrement = saveJogIncrement;
03426 }
03427 // go from 0.1000 to 0.0100
03428 else if (jogIncrement > 0.0500) {
03429 jogIncrement = 0.0100;
03430 }
03431 // go from 0.0100 to 0.0010
03432 else if (jogIncrement > 0.0050) {
03433 jogIncrement = 0.0010;
03434 }
03435 // go from 0.0010 to 0.0001
03436 else if (jogIncrement > 0.0005) {
03437 jogIncrement = 0.0001;
03438 }
03439 // go from 0.0001 to 0.1000
03440 else {
03441 jogIncrement = 0.1000;
03442 }
03443 saveJogIncrement = jogIncrement;
03444 break;
03445
03446 case KEY_C:
03447 // change to continuous jog, but save increment for restoring
03448 jogIncrement = 0.0;
03449 break;
03450
03451 case KEY_COMMA:
03452 // change it once here and redraw
03453 if (--jogSpeed <= 0) {
03454 jogSpeed = 1;
03455 }
03456 sprintf(string, "%d", jogSpeed);
03457 setLabel(jogSpeedLabel, string);
03458 redraw = 1;
03459
03460 // set jogSpeedChange so that timer callback will continue to change
03461 // until button up clears it
03462 jogSpeedChange = -1;
03463 break;
03464
03465 case KEY_PERIOD:
03466 // change it once here and redraw
03467 if (++jogSpeed > maxJogSpeed) {
03468 jogSpeed = maxJogSpeed;
03469 }
03470 sprintf(string, "%d", jogSpeed);
03471 setLabel(jogSpeedLabel, string);
03472 redraw = 1;
03473
03474 // set jogSpeedChange so that timer callback will continue to change
03475 // until button up clears it
03476 jogSpeedChange = +1;
03477 break;
03478
03479 default:
03480 printf("key press %d %d\n", state, keycode);
03481 }
03482 }
|
|
||||||||||||
|
Definition at line 3484 of file yemc.cc. Referenced by timeoutCB().
03485 {
03486 switch (keycode) {
03487
03488 case KEY_LEFT:
03489 case KEY_RIGHT:
03490 case KEY_UP:
03491 case KEY_DOWN:
03492 case KEY_PGUP:
03493 case KEY_PGDN:
03494 case KEY_Q:
03495 case KEY_W:
03496 case KEY_E:
03497 case KEY_R:
03498 case KEY_T:
03499 case KEY_Y:
03500 case KEY_A:
03501 case KEY_S:
03502 case KEY_D:
03503 case KEY_F:
03504 case KEY_G:
03505 case KEY_H:
03506 if (jogIncrement <= 0.0) {
03507 // only stop it if it's continuous jogging
03508 sendJogStop(axisJogging);
03509 }
03510 break;
03511
03512 case KEY_F11:
03513 case KEY_F12:
03514 sendSpindleConstant();
03515 break;
03516
03517 case KEY_COMMA:
03518 case KEY_PERIOD:
03519 jogSpeedChange = 0;
03520 break;
03521
03522 default:
03523 printf("key release %d %d\n", state, keycode);
03524 break;
03525 }
03526 }
|
|
||||||||||||||||
|
Definition at line 3992 of file yemc.cc. 03993 {
03994 loggingDoDone(0);
03995 }
|
|
|
Definition at line 3941 of file yemc.cc. Referenced by loggingCancelCB(), loggingDoneCB(), and loggingReturnAction().
03942 {
03943 int retval;
03944
03945 if (done) {
03946 retval = loggingGetStrings();
03947 }
03948
03949 loggingReturnIsDone = 1;
03950 XtPopdown(loggingShell);
03951
03952 if (done &&
03953 0 != retval) {
03954 popupError("Bad log values");
03955 }
03956 }
|
|
||||||||||||||||
|
Definition at line 3987 of file yemc.cc. 03988 {
03989 loggingDoDone(1);
03990 }
|
|
|
Definition at line 3920 of file yemc.cc. 03921 {
03922 int iserror = 0;
03923 String str1, str2, str3;
03924
03925 XtVaGetValues(loggingFile, XtNstring, &str1, NULL);
03926 XtVaGetValues(loggingSize, XtNstring, &str2, NULL);
03927 XtVaGetValues(loggingSkip, XtNstring, &str3, NULL);
03928
03929 strcpy(saveLogFile, str1);
03930 if (1 == sscanf(str2, "%d", &saveLogSize) &&
03931 1 == sscanf(str3, "%d", &saveLogSkip)) {
03932 iserror = 0;
03933 }
03934 else {
03935 iserror = 1;
03936 }
03937
03938 return iserror;
03939 }
|
|
||||||||||||||||
|
Definition at line 3982 of file yemc.cc. 03983 {
03984 plotLog(saveLogFile, saveLogType);
03985 }
|
|
||||||||||||||||||||
|
Definition at line 3997 of file yemc.cc. 03998 {
03999 if (loggingReturnIsDone) {
04000 loggingDoDone(1);
04001 }
04002 else {
04003 loggingDoDone(0);
04004 }
04005 }
|
|
||||||||||||||||
|
Definition at line 3977 of file yemc.cc. 03978 {
03979 sendLogClose();
03980 }
|
|
||||||||||||||||||||
|
Definition at line 5295 of file yemc.cc. 05296 {
05297 XtPopdown(loggingShell);
05298 }
|
|
||||||||||||||||
|
Definition at line 3958 of file yemc.cc. 03959 {
03960 int retval;
03961
03962 retval = loggingGetStrings();
03963
03964 if (0 != retval) {
03965 popupError("Bad log values");
03966 }
03967 else {
03968 sendLogStart();
03969 }
03970 }
|
|
||||||||||||||||
|
Definition at line 3972 of file yemc.cc. 03973 {
03974 sendLogStop();
03975 }
|
|
||||||||||||||||||||
|
Definition at line 4007 of file yemc.cc. 04008 {
04009 if (loggingReturnIsDone) {
04010 setBorderColor(loggingDone, loggingFormBorderColor);
04011 setBorderColor(loggingCancel, pixelRed);
04012 loggingReturnIsDone = 0;
04013 }
04014 else {
04015 setBorderColor(loggingDone, pixelRed);
04016 setBorderColor(loggingCancel, loggingFormBorderColor);
04017 loggingReturnIsDone = 1;
04018 }
04019 }
|
|
||||||||||||||||
|
Definition at line 4293 of file yemc.cc. 04294 {
04295 char string[256];
04296
04297 switch ((int) client_data) {
04298 case 0:
04299 saveLogType = EMC_LOG_TYPE_AXIS_POS;
04300 break;
04301
04302 case 1:
04303 saveLogType = EMC_LOG_TYPE_AXES_INPOS;
04304 break;
04305
04306 case 2:
04307 saveLogType = EMC_LOG_TYPE_AXES_OUTPOS;
04308 break;
04309
04310 case 3:
04311 saveLogType = EMC_LOG_TYPE_AXIS_VEL;
04312 break;
04313
04314 case 4:
04315 saveLogType = EMC_LOG_TYPE_AXES_FERROR;
04316 break;
04317
04318 case 5:
04319 saveLogType = EMC_LOG_TYPE_TRAJ_POS;
04320 break;
04321
04322 case 6:
04323 saveLogType = EMC_LOG_TYPE_TRAJ_VEL;
04324 break;
04325
04326 case 7:
04327 saveLogType = EMC_LOG_TYPE_TRAJ_ACC;
04328 break;
04329
04330 default:
04331 break;
04332 }
04333
04334 sprintf(string,
04335 saveLogType == EMC_LOG_TYPE_AXIS_POS ? "Axis Position" :
04336 saveLogType == EMC_LOG_TYPE_AXES_INPOS ? "All Input Positions" :
04337 saveLogType == EMC_LOG_TYPE_AXES_OUTPOS ? "All Output Positions" :
04338 saveLogType == EMC_LOG_TYPE_AXIS_VEL ? "Axis Velocity" :
04339 saveLogType == EMC_LOG_TYPE_AXES_FERROR ? "All Following Errors" :
04340 saveLogType == EMC_LOG_TYPE_TRAJ_POS ? "All Trajectory Points" :
04341 saveLogType == EMC_LOG_TYPE_TRAJ_VEL ? "All Trajectory Vels" :
04342 saveLogType == EMC_LOG_TYPE_TRAJ_ACC ? "All Trajectory Accels" :
04343 "(unknown)");
04344 XtVaSetValues(loggingTypeMenu, XtNlabel, string, NULL);
04345 }
|
|
||||||||||||
|
Definition at line 5757 of file yemc.cc. 05758 {
05759 int t;
05760 double start;
05761 int good;
05762 char string[80];
05763 Dimension cmfbw, sdw, sw, siw, sh, bh, bw;
05764 Dimension stw, mw;
05765 Dimension posw;
05766
05767 // process command line args, indexing argv[] from [1]
05768 for (t = 1; t < argc; t++)
05769 {
05770 // try -ini
05771 if (!strcmp(argv[t], "-ini"))
05772 {
05773 if (t == argc - 1)
05774 {
05775 printf("syntax: -ini <inifile\n");
05776 exit(1);
05777 }
05778 else
05779 {
05780 strcpy(EMC_INIFILE, argv[t+1]);
05781 t++; // step over inifile
05782 continue;
05783 }
05784 }
05785 }
05786
05787 // read INI file
05788 iniLoad(EMC_INIFILE);
05789
05790 // blank out the annoying RCS version message
05791 rcs_version_printed = 1;
05792
05793 // init NML
05794
05795 #define RETRY_TIME 10.0 // seconds to wait for subsystems to come up
05796 #define RETRY_INTERVAL 1.0 // seconds between wait tries for a subsystem
05797
05798 if (! (EMC_DEBUG & EMC_DEBUG_NML)) {
05799 set_rcs_print_destination(RCS_PRINT_TO_NULL); // inhibit diag messages
05800 }
05801 start = etime();
05802 good = 0;
05803 do {
05804 if (0 == emcTaskNmlGet()) {
05805 good = 1;
05806 break;
05807 }
05808 esleep(RETRY_INTERVAL);
05809 } while (etime() - start < RETRY_TIME);
05810 if (! (EMC_DEBUG & EMC_DEBUG_NML)) {
05811 set_rcs_print_destination(RCS_PRINT_TO_STDOUT); // restore diag messages
05812 }
05813 if (! good) {
05814 rcs_print_error("can't establish communication with emc\n");
05815 exit(1);
05816 }
05817
05818 if (! (EMC_DEBUG & EMC_DEBUG_NML)) {
05819 set_rcs_print_destination(RCS_PRINT_TO_NULL); // inhibit diag messages
05820 }
05821 updateStatus();
05822 if(emcStatus->motion.traj.kinematics_type != 1)
05823 {
05824 posFrame = POS_FRAME_JOINT;
05825 }
05826 start = etime();
05827 good = 0;
05828 do {
05829 if (0 == emcErrorNmlGet()) {
05830 good = 1;
05831 break;
05832 }
05833 esleep(RETRY_INTERVAL);
05834 } while (etime() - start < RETRY_TIME);
05835 if (! (EMC_DEBUG & EMC_DEBUG_NML)) {
05836 set_rcs_print_destination(RCS_PRINT_TO_STDOUT); // restore diag messages
05837 }
05838 if (! good) {
05839 rcs_print_error("can't establish communication with emc\n");
05840 exit(1);
05841 }
05842
05843 // create file window for program text
05844
05845 programFwString =
05846 (char *) malloc(PROGRAM_FW_NUM_LINES * PROGRAM_FW_LEN_LINES);
05847
05848 if (0 != fwInit(&programFw, PROGRAM_FW_NUM_LINES, PROGRAM_FW_LEN_LINES)) {
05849 fprintf(stderr, "can't init file window\n");
05850 exit(1);
05851 }
05852
05853 // get widgets
05854
05855 topLevel =
05856 XtVaAppInitialize(&app_context, /* Application context */
05857 "YEmc", /* Application class */
05858 NULL, 0, /* command line option list */
05859 &argc, argv, /* command line args */
05860 fallbackResources, /* app defaults string, or NULL */
05861 NULL); /* terminate varargs list */
05862
05863 topForm =
05864 XtVaCreateManagedWidget("topForm", /* arbitrary widget name */
05865 formWidgetClass, /* widget class from Label.h */
05866 topLevel, /* parent widget */
05867 NULL); /* terminate varargs list */
05868
05869 barMenuForm =
05870 XtVaCreateManagedWidget("barMenuForm",
05871 formWidgetClass,
05872 topForm,
05873 NULL);
05874
05875 setupMenu(&fileMenu, "fileMenu",
05876 fileMenuEntryNames,
05877 barMenuForm,
05878 NULL, NULL,
05879 fileMenuSelect);
05880
05881 setupMenu(&viewMenu, "viewMenu",
05882 viewMenuEntryNames,
05883 barMenuForm,
05884 fileMenu, NULL,
05885 viewMenuSelect);
05886
05887 setupMenu(&settingsMenu, "settingsMenu",
05888 settingsMenuEntryNames,
05889 barMenuForm,
05890 viewMenu, NULL,
05891 settingsMenuSelect);
05892
05893 setupMenu(&helpMenu, "helpMenu",
05894 helpMenuEntryNames,
05895 barMenuForm,
05896 settingsMenu, NULL,
05897 helpMenuSelect);
05898
05899 commandMenuForm =
05900 XtVaCreateManagedWidget("commandMenuForm",
05901 formWidgetClass,
05902 topForm,
05903 XtNfromVert, barMenuForm,
05904 NULL);
05905
05906 setupMenu(&stateMenu, "stateMenu",
05907 stateMenuEntryNames,
05908 commandMenuForm,
05909 NULL, NULL,
05910 stateMenuSelect);
05911
05912 XtVaGetValues(stateMenu,
05913 XtNwidth, &stw,
05914 NULL);
05915
05916 setupMenu(&modeMenu, "modeMenu",
05917 modeMenuEntryNames,
05918 commandMenuForm,
05919 NULL, stateMenu,
05920 modeMenuSelect);
05921
05922 XtVaSetValues(modeMenu,
05923 XtNwidth, stw,
05924 NULL);
05925
05926 setupMenu(&mistMenu, "mistMenu",
05927 mistMenuEntryNames,
05928 commandMenuForm,
05929 stateMenu, NULL,
05930 mistMenuSelect);
05931
05932 XtVaGetValues(mistMenu,
05933 XtNwidth, &mw,
05934 NULL);
05935
05936 setupMenu(&floodMenu, "floodMenu",
05937 floodMenuEntryNames,
05938 commandMenuForm,
05939 stateMenu, mistMenu,
05940 floodMenuSelect);
05941
05942 XtVaSetValues(floodMenu,
05943 XtNwidth, mw,
05944 NULL);
05945
05946 spindleDecLabel =
05947 XtVaCreateManagedWidget("spindleDecLabel",
05948 labelWidgetClass,
05949 commandMenuForm,
05950 XtNfromHoriz, mistMenu,
05951 NULL);
05952
05953 setupMenu(&spindleMenu, "spindleMenu",
05954 spindleMenuEntryNames,
05955 commandMenuForm,
05956 spindleDecLabel, NULL,
05957 spindleMenuSelect);
05958
05959 spindleIncLabel =
05960 XtVaCreateManagedWidget("spindleIncLabel",
05961 labelWidgetClass,
05962 commandMenuForm,
05963 XtNfromHoriz, spindleMenu,
05964 NULL);
05965
05966 XtVaGetValues(spindleMenu,
05967 XtNwidth, &sw,
05968 XtNheight, &sh,
05969 XtNborderWidth, &cmfbw,
05970 NULL);
05971
05972 XtVaGetValues(spindleDecLabel,
05973 XtNwidth, &sdw,
05974 NULL);
05975
05976 XtVaGetValues(spindleIncLabel,
05977 XtNwidth, &siw,
05978 NULL);
05979
05980 setupMenu(&brakeMenu, "brakeMenu",
05981 brakeMenuEntryNames,
05982 commandMenuForm,
05983 mistMenu, spindleDecLabel,
05984 brakeMenuSelect);
05985
05986 bw = sdw + cmfbw + cmfbw + sw + cmfbw + cmfbw + siw;
05987 XtVaSetValues(brakeMenu,
05988 XtNwidth, bw,
05989 NULL);
05990
05991 XtVaGetValues(brakeMenu,
05992 XtNheight, &bh,
05993 NULL);
05994
05995 fileOpenShell =
05996 XtVaCreatePopupShell("fileOpenShell",
05997 transientShellWidgetClass,
05998 topLevel,
05999 XtNallowShellResize, True,
06000 NULL);
06001
06002 fileOpenDialog =
06003 XtVaCreateManagedWidget("fileOpenDialog",
06004 dialogWidgetClass,
06005 fileOpenShell,
06006 XtNvalue, programPrefix,
06007 NULL);
06008
06009 fileOpenDone =
06010 XtVaCreateManagedWidget("fileOpenDone",
06011 commandWidgetClass,
06012 fileOpenDialog,
06013 NULL);
06014
06015 XtAddCallback(fileOpenDone, XtNcallback, fileOpenDoneCB, fileOpenShell);
06016
06017 fileOpenCancel =
06018 XtVaCreateManagedWidget("fileOpenCancel",
06019 commandWidgetClass,
06020 fileOpenDialog,
06021 NULL);
06022
06023 XtAddCallback(fileOpenCancel, XtNcallback, genericDoneCB, fileOpenShell);
06024
06025 fileEditShell =
06026 XtVaCreatePopupShell("fileEditShell",
06027 transientShellWidgetClass,
06028 topLevel,
06029 XtNallowShellResize, True,
06030 NULL);
06031
06032 fileEditDialog =
06033 XtVaCreateManagedWidget("fileEditDialog",
06034 dialogWidgetClass,
06035 fileEditShell,
06036 XtNvalue, programPrefix,
06037 NULL);
06038
06039 fileEditDone =
06040 XtVaCreateManagedWidget("fileEditDone",
06041 commandWidgetClass,
06042 fileEditDialog,
06043 NULL);
06044
06045 XtAddCallback(fileEditDone, XtNcallback, fileEditDoneCB, fileEditShell);
06046
06047 fileEditCancel =
06048 XtVaCreateManagedWidget("fileEditCancel",
06049 commandWidgetClass,
06050 fileEditDialog,
06051 NULL);
06052
06053 XtAddCallback(fileEditCancel, XtNcallback, genericDoneCB, fileEditShell);
06054
06055 fileQuitShell =
06056 XtVaCreatePopupShell("fileQuitShell",
06057 transientShellWidgetClass,
06058 topLevel,
06059 XtNallowShellResize, True,
06060 NULL);
06061
06062 fileQuitDialog =
06063 XtVaCreateManagedWidget("fileQuitDialog",
06064 dialogWidgetClass,
06065 fileQuitShell,
06066 NULL);
06067
06068 fileQuitDone =
06069 XtVaCreateManagedWidget("fileQuitDone",
06070 commandWidgetClass,
06071 fileQuitDialog,
06072 NULL);
06073
06074 XtAddCallback(fileQuitDone, XtNcallback, fileQuitDoneCB, fileQuitShell);
06075
06076 fileQuitCancel =
06077 XtVaCreateManagedWidget("fileQuitCancel",
06078 commandWidgetClass,
06079 fileQuitDialog,
06080 NULL);
06081
06082 XtAddCallback(fileQuitCancel, XtNcallback, genericDoneCB, fileQuitShell);
06083
06084 // diagnostics shell
06085
06086 diagnosticsShell =
06087 XtVaCreatePopupShell("diagnosticsShell",
06088 topLevelShellWidgetClass,
06089 topLevel,
06090 XtNallowShellResize, True,
06091 NULL);
06092
06093 diagnosticsForm =
06094 XtVaCreateManagedWidget("diagnosticsForm",
06095 formWidgetClass,
06096 diagnosticsShell,
06097 NULL);
06098
06099 diagnosticsLabel =
06100 XtVaCreateManagedWidget("diagnosticsLabel",
06101 labelWidgetClass,
06102 diagnosticsForm,
06103 XtNborderWidth, 0,
06104 NULL);
06105
06106 diagnosticsTaskHBLabel =
06107 XtVaCreateManagedWidget("diagnosticsTaskHBLabel",
06108 labelWidgetClass,
06109 diagnosticsForm,
06110 XtNfromVert, diagnosticsLabel,
06111 XtNborderWidth, 0,
06112 NULL);
06113
06114 diagnosticsTaskHB =
06115 XtVaCreateManagedWidget("diagnosticsTaskHB",
06116 labelWidgetClass,
06117 diagnosticsForm,
06118 XtNfromVert, diagnosticsLabel,
06119 XtNfromHoriz, diagnosticsTaskHBLabel,
06120 NULL);
06121
06122 diagnosticsIoHBLabel =
06123 XtVaCreateManagedWidget("diagnosticsIoHBLabel",
06124 labelWidgetClass,
06125 diagnosticsForm,
06126 XtNfromVert, diagnosticsTaskHBLabel,
06127 XtNborderWidth, 0,
06128 NULL);
06129
06130 diagnosticsIoHB =
06131 XtVaCreateManagedWidget("diagnosticsIoHB",
06132 labelWidgetClass,
06133 diagnosticsForm,
06134 XtNfromVert, diagnosticsTaskHBLabel,
06135 XtNfromHoriz, diagnosticsIoHBLabel,
06136 NULL);
06137
06138 diagnosticsMotionHBLabel =
06139 XtVaCreateManagedWidget("diagnosticsMotionHBLabel",
06140 labelWidgetClass,
06141 diagnosticsForm,
06142 XtNfromVert, diagnosticsIoHBLabel,
06143 XtNborderWidth, 0,
06144 NULL);
06145
06146 diagnosticsMotionHB =
06147 XtVaCreateManagedWidget("diagnosticsMotionHB",
06148 labelWidgetClass,
06149 diagnosticsForm,
06150 XtNfromVert, diagnosticsIoHBLabel,
06151 XtNfromHoriz, diagnosticsMotionHBLabel,
06152 NULL);
06153
06154 diagnosticsFerrorLabel =
06155 XtVaCreateManagedWidget("diagnosticsFerrorLabel",
06156 labelWidgetClass,
06157 diagnosticsForm,
06158 XtNfromVert, diagnosticsMotionHBLabel,
06159 XtNborderWidth, 0,
06160 NULL);
06161
06162 diagnosticsFerror =
06163 XtVaCreateManagedWidget("diagnosticsFerror",
06164 labelWidgetClass,
06165 diagnosticsForm,
06166 XtNfromVert, diagnosticsMotionHBLabel,
06167 XtNfromHoriz, diagnosticsFerrorLabel,
06168 NULL);
06169
06170 diagnosticsDone =
06171 XtVaCreateManagedWidget("diagnosticsDone",
06172 commandWidgetClass,
06173 diagnosticsForm,
06174 XtNfromVert, diagnosticsFerrorLabel,
06175 NULL);
06176
06177 XtAddCallback(diagnosticsDone, XtNcallback, diagnosticsDoneCB, NULL);
06178
06179 // calibration shell
06180
06181 calibShell =
06182 XtVaCreatePopupShell("calibShell",
06183 topLevelShellWidgetClass,
06184 topLevel,
06185 XtNallowShellResize, True,
06186 NULL);
06187
06188 calibForm =
06189 XtVaCreateManagedWidget("calibForm",
06190 formWidgetClass,
06191 calibShell,
06192 NULL);
06193
06194 calibLabel =
06195 XtVaCreateManagedWidget("calibLabel",
06196 labelWidgetClass,
06197 calibForm,
06198 XtNborderWidth, 0,
06199 NULL);
06200
06201 calibCycleTimeLabel =
06202 XtVaCreateManagedWidget("calibCycleTimeLabel",
06203 labelWidgetClass,
06204 calibForm,
06205 XtNfromVert, calibLabel,
06206 XtNborderWidth, 0,
06207 NULL);
06208
06209 calibCycleTime =
06210 XtVaCreateManagedWidget("calibCycleTime",
06211 asciiTextWidgetClass,
06212 calibForm,
06213 XtNeditType, XawtextEdit,
06214 XtNfromVert, calibLabel,
06215 XtNfromHoriz, calibCycleTimeLabel,
06216 NULL);
06217
06218 calibPGainLabel =
06219 XtVaCreateManagedWidget("calibPGainLabel",
06220 labelWidgetClass,
06221 calibForm,
06222 XtNfromVert, calibCycleTimeLabel,
06223 XtNborderWidth, 0,
06224 NULL);
06225
06226 calibPGain =
06227 XtVaCreateManagedWidget("calibPGain",
06228 asciiTextWidgetClass,
06229 calibForm,
06230 XtNeditType, XawtextEdit,
06231 XtNfromVert, calibCycleTimeLabel,
06232 XtNfromHoriz, calibPGainLabel,
06233 NULL);
06234
06235 calibIGainLabel =
06236 XtVaCreateManagedWidget("calibIGainLabel",
06237 labelWidgetClass,
06238 calibForm,
06239 XtNfromVert, calibPGainLabel,
06240 XtNborderWidth, 0,
06241 NULL);
06242
06243 calibIGain =
06244 XtVaCreateManagedWidget("calibIGain",
06245 asciiTextWidgetClass,
06246 calibForm,
06247 XtNeditType, XawtextEdit,
06248 XtNfromVert, calibPGainLabel,
06249 XtNfromHoriz, calibIGainLabel,
06250 NULL);
06251
06252 calibDGainLabel =
06253 XtVaCreateManagedWidget("calibDGainLabel",
06254 labelWidgetClass,
06255 calibForm,
06256 XtNfromVert, calibIGainLabel,
06257 XtNborderWidth, 0,
06258 NULL);
06259
06260 calibDGain =
06261 XtVaCreateManagedWidget("calibDGain",
06262 asciiTextWidgetClass,
06263 calibForm,
06264 XtNeditType, XawtextEdit,
06265 XtNfromVert, calibIGainLabel,
06266 XtNfromHoriz, calibDGainLabel,
06267 NULL);
06268
06269 calibFF0GainLabel =
06270 XtVaCreateManagedWidget("calibFF0GainLabel",
06271 labelWidgetClass,
06272 calibForm,
06273 XtNfromVert, calibDGainLabel,
06274 XtNborderWidth, 0,
06275 NULL);
06276
06277 calibFF0Gain =
06278 XtVaCreateManagedWidget("calibFF0Gain",
06279 asciiTextWidgetClass,
06280 calibForm,
06281 XtNeditType, XawtextEdit,
06282 XtNfromVert, calibDGainLabel,
06283 XtNfromHoriz, calibFF0GainLabel,
06284 NULL);
06285
06286 calibFF1GainLabel =
06287 XtVaCreateManagedWidget("calibFF1GainLabel",
06288 labelWidgetClass,
06289 calibForm,
06290 XtNfromVert, calibFF0GainLabel,
06291 XtNborderWidth, 0,
06292 NULL);
06293
06294 calibFF1Gain =
06295 XtVaCreateManagedWidget("calibFF1Gain",
06296 asciiTextWidgetClass,
06297 calibForm,
06298 XtNeditType, XawtextEdit,
06299 XtNfromVert, calibFF0GainLabel,
06300 XtNfromHoriz, calibFF1GainLabel,
06301 NULL);
06302
06303 calibFF2GainLabel =
06304 XtVaCreateManagedWidget("calibFF2GainLabel",
06305 labelWidgetClass,
06306 calibForm,
06307 XtNfromVert, calibFF1GainLabel,
06308 XtNborderWidth, 0,
06309 NULL);
06310
06311 calibFF2Gain =
06312 XtVaCreateManagedWidget("calibFF2Gain",
06313 asciiTextWidgetClass,
06314 calibForm,
06315 XtNeditType, XawtextEdit,
06316 XtNfromVert, calibFF1GainLabel,
06317 XtNfromHoriz, calibFF2GainLabel,
06318 NULL);
06319
06320 calibBacklashLabel =
06321 XtVaCreateManagedWidget("calibBacklashLabel",
06322 labelWidgetClass,
06323 calibForm,
06324 XtNfromVert, calibFF2GainLabel,
06325 XtNborderWidth, 0,
06326 NULL);
06327
06328
06329 calibBacklash =
06330 XtVaCreateManagedWidget("calibBacklash",
06331 asciiTextWidgetClass,
06332 calibForm,
06333 XtNeditType, XawtextEdit,
06334 XtNstring, string,
06335 XtNfromVert, calibFF2GainLabel,
06336 XtNfromHoriz, calibBacklashLabel,
06337 NULL);
06338
06339 calibBiasLabel =
06340 XtVaCreateManagedWidget("calibBiasLabel",
06341 labelWidgetClass,
06342 calibForm,
06343 XtNfromVert, calibBacklashLabel,
06344 XtNborderWidth, 0,
06345 NULL);
06346
06347
06348 calibBias =
06349 XtVaCreateManagedWidget("calibBias",
06350 asciiTextWidgetClass,
06351 calibForm,
06352 XtNeditType, XawtextEdit,
06353 XtNstring, string,
06354 XtNfromVert, calibBacklashLabel,
06355 XtNfromHoriz, calibBiasLabel,
06356 NULL);
06357
06358 calibMaxErrorLabel =
06359 XtVaCreateManagedWidget("calibMaxErrorLabel",
06360 labelWidgetClass,
06361 calibForm,
06362 XtNfromVert, calibBiasLabel,
06363 XtNborderWidth, 0,
06364 NULL);
06365
06366
06367 calibMaxError =
06368 XtVaCreateManagedWidget("calibMaxError",
06369 asciiTextWidgetClass,
06370 calibForm,
06371 XtNeditType, XawtextEdit,
06372 XtNstring, string,
06373 XtNfromVert, calibBiasLabel,
06374 XtNfromHoriz, calibMaxErrorLabel,
06375 NULL);
06376
06377 calibOutputScaleLabel =
06378 XtVaCreateManagedWidget("calibOutputScaleLabel",
06379 labelWidgetClass,
06380 calibForm,
06381 XtNfromVert, calibMaxErrorLabel,
06382 XtNborderWidth, 0,
06383 NULL);
06384
06385
06386 calibOutputScale =
06387 XtVaCreateManagedWidget("calibOutputScale",
06388 asciiTextWidgetClass,
06389 calibForm,
06390 XtNeditType, XawtextEdit,
06391 XtNstring, string,
06392 XtNfromVert, calibMaxErrorLabel,
06393 XtNfromHoriz, calibOutputScaleLabel,
06394 NULL);
06395
06396 calibOutputOffsetLabel =
06397 XtVaCreateManagedWidget("calibOutputOffsetLabel",
06398 labelWidgetClass,
06399 calibForm,
06400 XtNfromVert, calibOutputScaleLabel,
06401 XtNborderWidth, 0,
06402 NULL);
06403
06404
06405 calibOutputOffset =
06406 XtVaCreateManagedWidget("calibOutputOffset",
06407 asciiTextWidgetClass,
06408 calibForm,
06409 XtNeditType, XawtextEdit,
06410 XtNstring, string,
06411 XtNfromVert, calibOutputScaleLabel,
06412 XtNfromHoriz, calibOutputOffsetLabel,
06413 NULL);
06414
06415 calibFerrorLabel =
06416 XtVaCreateManagedWidget("calibFerrorLabel",
06417 labelWidgetClass,
06418 calibForm,
06419 XtNfromVert, calibOutputOffsetLabel,
06420 XtNborderWidth, 0,
06421 NULL);
06422
06423
06424 calibFerror =
06425 XtVaCreateManagedWidget("calibFerror",
06426 asciiTextWidgetClass,
06427 calibForm,
06428 XtNeditType, XawtextEdit,
06429 XtNstring, string,
06430 XtNfromVert, calibOutputOffsetLabel,
06431 XtNfromHoriz, calibFerrorLabel,
06432 NULL);
06433
06434 calibDone =
06435 XtVaCreateManagedWidget("calibDone",
06436 commandWidgetClass,
06437 calibForm,
06438 XtNfromVert, calibFerrorLabel,
06439 NULL);
06440
06441 calibCancel =
06442 XtVaCreateManagedWidget("calibCancel",
06443 commandWidgetClass,
06444 calibForm,
06445 XtNfromVert, calibFerrorLabel,
06446 XtNfromHoriz, calibDone,
06447 NULL);
06448
06449 XtAddCallback(calibDone, XtNcallback, calibDoneCB, NULL);
06450 XtAddCallback(calibCancel, XtNcallback, calibCancelCB, NULL);
06451
06452 loggingShell =
06453 XtVaCreatePopupShell("loggingShell",
06454 topLevelShellWidgetClass,
06455 topLevel,
06456 XtNallowShellResize, True,
06457 NULL);
06458
06459 loggingForm =
06460 XtVaCreateManagedWidget("loggingForm",
06461 formWidgetClass,
06462 loggingShell,
06463 NULL);
06464
06465 loggingLabel =
06466 XtVaCreateManagedWidget("loggingLabel",
06467 labelWidgetClass,
06468 loggingForm,
06469 XtNborderWidth, 0,
06470 NULL);
06471
06472 loggingFileLabel =
06473 XtVaCreateManagedWidget("loggingFileLabel",
06474 labelWidgetClass,
06475 loggingForm,
06476 XtNfromVert, loggingLabel,
06477 XtNborderWidth, 0,
06478 NULL);
06479
06480 loggingFile =
06481 XtVaCreateManagedWidget("loggingFile",
06482 asciiTextWidgetClass,
06483 loggingForm,
06484 XtNeditType, XawtextEdit,
06485 XtNfromVert, loggingLabel,
06486 XtNfromHoriz, loggingFileLabel,
06487 NULL);
06488
06489 loggingTypeLabel =
06490 XtVaCreateManagedWidget("loggingTypeLabel",
06491 labelWidgetClass,
06492 loggingForm,
06493 XtNfromVert, loggingFileLabel,
06494 XtNborderWidth, 0,
06495 NULL);
06496
06497 setupMenu(&loggingTypeMenu, "loggingTypeMenu",
06498 loggingTypeMenuEntryNames,
06499 loggingForm,
06500 loggingTypeLabel, loggingFileLabel,
06501 loggingTypeMenuSelect);
06502
06503 loggingSizeLabel =
06504 XtVaCreateManagedWidget("loggingSizeLabel",
06505 labelWidgetClass,
06506 loggingForm,
06507 XtNfromVert, loggingTypeLabel,
06508 XtNborderWidth, 0,
06509 NULL);
06510
06511 loggingSize =
06512 XtVaCreateManagedWidget("loggingSize",
06513 asciiTextWidgetClass,
06514 loggingForm,
06515 XtNeditType, XawtextEdit,
06516 XtNfromVert, loggingTypeLabel,
06517 XtNfromHoriz, loggingSizeLabel,
06518 NULL);
06519
06520 loggingSkipLabel =
06521 XtVaCreateManagedWidget("loggingSkipLabel",
06522 labelWidgetClass,
06523 loggingForm,
06524 XtNfromVert, loggingSizeLabel,
06525 XtNborderWidth, 0,
06526 NULL);
06527
06528 loggingSkip =
06529 XtVaCreateManagedWidget("loggingSkip",
06530 asciiTextWidgetClass,
06531 loggingForm,
06532 XtNeditType, XawtextEdit,
06533 XtNfromVert, loggingSizeLabel,
06534 XtNfromHoriz, loggingSkipLabel,
06535 NULL);
06536
06537 loggingStart =
06538 XtVaCreateManagedWidget("loggingStart",
06539 commandWidgetClass,
06540 loggingForm,
06541 XtNfromVert, loggingSkipLabel,
06542 NULL);
06543
06544 loggingStop =
06545 XtVaCreateManagedWidget("loggingStop",
06546 commandWidgetClass,
06547 loggingForm,
06548 XtNfromVert, loggingSkipLabel,
06549 XtNfromHoriz, loggingStart,
06550 NULL);
06551
06552 loggingSave =
06553 XtVaCreateManagedWidget("loggingSave",
06554 commandWidgetClass,
06555 loggingForm,
06556 XtNfromVert, loggingSkipLabel,
06557 XtNfromHoriz, loggingStop,
06558 NULL);
06559
06560 loggingPlot =
06561 XtVaCreateManagedWidget("loggingPlot",
06562 commandWidgetClass,
06563 loggingForm,
06564 XtNfromVert, loggingSkipLabel,
06565 XtNfromHoriz, loggingSave,
06566 NULL);
06567
06568 loggingDone =
06569 XtVaCreateManagedWidget("loggingDone",
06570 commandWidgetClass,
06571 loggingForm,
06572 XtNfromVert, loggingStart,
06573 NULL);
06574
06575 loggingCancel =
06576 XtVaCreateManagedWidget("loggingCancel",
06577 commandWidgetClass,
06578 loggingForm,
06579 XtNfromVert, loggingStart,
06580 XtNfromHoriz, loggingDone,
06581 NULL);
06582
06583 XtAddCallback(loggingStart, XtNcallback, loggingStartCB, NULL);
06584 XtAddCallback(loggingStop, XtNcallback, loggingStopCB, NULL);
06585 XtAddCallback(loggingSave, XtNcallback, loggingSaveCB, NULL);
06586 XtAddCallback(loggingPlot, XtNcallback, loggingPlotCB, NULL);
06587 XtAddCallback(loggingDone, XtNcallback, loggingDoneCB, NULL);
06588 XtAddCallback(loggingCancel, XtNcallback, loggingCancelCB, NULL);
06589
06590 helpXemcShell =
06591 XtVaCreatePopupShell("helpXemcShell",
06592 topLevelShellWidgetClass,
06593 topLevel,
06594 XtNallowShellResize, True,
06595 NULL);
06596
06597 helpXemcForm =
06598 XtVaCreateManagedWidget("helpXemcForm",
06599 formWidgetClass,
06600 helpXemcShell,
06601 NULL);
06602
06603 helpXemcLabel =
06604 XtVaCreateManagedWidget("helpXemcLabel",
06605 labelWidgetClass,
06606 helpXemcForm,
06607 NULL);
06608
06609 helpXemcText =
06610 XtVaCreateManagedWidget("helpXemcText",
06611 asciiTextWidgetClass,
06612 helpXemcForm,
06613 XtNfromVert, helpXemcLabel,
06614 XtNeditType, XawtextRead,
06615 XtNtype, XawAsciiFile,
06616 XtNstring, "doc/xemc.txt",
06617 XtNscrollVertical, XawtextScrollWhenNeeded,
06618 XtNscrollHorizontal, XawtextScrollWhenNeeded,
06619 NULL);
06620
06621 helpXemcDone =
06622 XtVaCreateManagedWidget("helpXemcDone",
06623 commandWidgetClass,
06624 helpXemcForm,
06625 XtNfromVert, helpXemcText,
06626 NULL);
06627
06628 XtAddCallback(helpXemcDone, XtNcallback, genericDoneCB, helpXemcShell);
06629
06630 helpAboutShell =
06631 XtVaCreatePopupShell("helpAboutShell",
06632 transientShellWidgetClass,
06633 topLevel,
06634 NULL);
06635
06636 helpAboutDialog =
06637 XtVaCreateManagedWidget("helpAboutDialog",
06638 dialogWidgetClass,
06639 helpAboutShell,
06640 NULL);
06641
06642 helpAboutDone =
06643 XtVaCreateManagedWidget("helpAboutDone",
06644 commandWidgetClass,
06645 helpAboutDialog,
06646 NULL);
06647
06648 XtAddCallback(helpAboutDone, XtNcallback, genericDoneCB, helpAboutShell);
06649
06650 toolNumberForm =
06651 XtVaCreateManagedWidget("toolNumberForm",
06652 formWidgetClass,
06653 topForm,
06654 XtNfromVert, commandMenuForm,
06655 NULL);
06656
06657 toolNumberFormTitle =
06658 XtVaCreateManagedWidget("toolNumberFormTitle",
06659 labelWidgetClass,
06660 toolNumberForm,
06661 NULL);
06662
06663 toolNumberFormName =
06664 XtVaCreateManagedWidget("toolNumberFormName",
06665 labelWidgetClass,
06666 toolNumberForm,
06667 XtNfromHoriz, toolNumberFormTitle,
06668 NULL);
06669
06670 toolOffsetForm =
06671 XtVaCreateManagedWidget("toolOffsetForm",
06672 formWidgetClass,
06673 topForm,
06674 XtNfromVert, toolNumberForm,
06675 NULL);
06676
06677 toolOffsetFormTitle =
06678 XtVaCreateManagedWidget("toolOffsetFormTitle",
06679 labelWidgetClass,
06680 toolOffsetForm,
06681 NULL);
06682
06683 toolOffsetFormName =
06684 XtVaCreateManagedWidget("toolOffsetFormName",
06685 labelWidgetClass,
06686 toolOffsetForm,
06687 XtNfromHoriz, toolOffsetFormTitle,
06688 NULL);
06689
06690 toolSetOffsetShell =
06691 XtVaCreatePopupShell("toolSetOffsetShell",
06692 transientShellWidgetClass,
06693 topLevel,
06694 NULL);
06695
06696 toolSetOffsetForm =
06697 XtVaCreateManagedWidget("toolSetOffsetForm",
06698 formWidgetClass,
06699 toolSetOffsetShell,
06700 NULL);
06701
06702 toolSetOffsetToolLabel =
06703 XtVaCreateManagedWidget("toolSetOffsetToolLabel",
06704 labelWidgetClass,
06705 toolSetOffsetForm,
06706 XtNborderWidth, 0,
06707 NULL);
06708
06709 toolSetOffsetTool =
06710 XtVaCreateManagedWidget("toolSetOffsetTool",
06711 asciiTextWidgetClass,
06712 toolSetOffsetForm,
06713 XtNfromHoriz, toolSetOffsetToolLabel,
06714 XtNeditType, XawtextEdit,
06715 NULL);
06716
06717 toolSetOffsetLengthLabel =
06718 XtVaCreateManagedWidget("toolSetOffsetLengthLabel",
06719 labelWidgetClass,
06720 toolSetOffsetForm,
06721 XtNfromVert, toolSetOffsetToolLabel,
06722 XtNborderWidth, 0,
06723 NULL);
06724
06725 toolSetOffsetLength =
06726 XtVaCreateManagedWidget("toolSetOffsetLength",
06727 asciiTextWidgetClass,
06728 toolSetOffsetForm,
06729 XtNfromHoriz, toolSetOffsetLengthLabel,
06730 XtNfromVert, toolSetOffsetToolLabel,
06731 XtNeditType, XawtextEdit,
06732 NULL);
06733
06734 toolSetOffsetDiameterLabel =
06735 XtVaCreateManagedWidget("toolSetOffsetDiameterLabel",
06736 labelWidgetClass,
06737 toolSetOffsetForm,
06738 XtNfromVert, toolSetOffsetLengthLabel,
06739 XtNborderWidth, 0,
06740 NULL);
06741
06742 toolSetOffsetDiameter =
06743 XtVaCreateManagedWidget("toolSetOffsetDiameter",
06744 asciiTextWidgetClass,
06745 toolSetOffsetForm,
06746 XtNfromHoriz, toolSetOffsetDiameterLabel,
06747 XtNfromVert, toolSetOffsetLengthLabel,
06748 XtNeditType, XawtextEdit,
06749 NULL);
06750
06751 toolSetOffsetDone =
06752 XtVaCreateManagedWidget("toolSetOffsetDone",
06753 commandWidgetClass,
06754 toolSetOffsetForm,
06755 XtNfromVert, toolSetOffsetDiameterLabel,
06756 NULL);
06757
06758 toolSetOffsetCancel =
06759 XtVaCreateManagedWidget("toolSetOffsetCancel",
06760 commandWidgetClass,
06761 toolSetOffsetForm,
06762 XtNfromVert, toolSetOffsetDiameterLabel,
06763 XtNfromHoriz, toolSetOffsetDone,
06764 NULL);
06765
06766 XtAddCallback(toolSetOffsetDone, XtNcallback, toolSetOffsetDoneCB, NULL);
06767 XtAddCallback(toolSetOffsetCancel, XtNcallback, toolSetOffsetCancelCB, NULL);
06768
06769 positionTypeForm =
06770 XtVaCreateManagedWidget("positionTypeForm",
06771 formWidgetClass,
06772 topForm,
06773 XtNfromVert, commandMenuForm,
06774 XtNfromHoriz, toolNumberForm,
06775 NULL);
06776
06777 positionTypeFormTitle =
06778 XtVaCreateManagedWidget("positionTypeFormTitle",
06779 labelWidgetClass,
06780 positionTypeForm,
06781 NULL);
06782
06783 positionTypeFormName =
06784 XtVaCreateManagedWidget("positionTypeFormName",
06785 labelWidgetClass,
06786 positionTypeForm,
06787 XtNfromHoriz, positionTypeFormTitle,
06788 NULL);
06789
06790 workOffsetForm =
06791 XtVaCreateManagedWidget("workOffsetForm",
06792 formWidgetClass,
06793 topForm,
06794 XtNfromVert, positionTypeForm,
06795 XtNfromHoriz, toolNumberForm,
06796 NULL);
06797
06798 workOffsetFormTitle =
06799 XtVaCreateManagedWidget("workOffsetFormTitle",
06800 labelWidgetClass,
06801 workOffsetForm,
06802 NULL);
06803
06804 workOffsetFormName =
06805 XtVaCreateManagedWidget("workOffsetFormName",
06806 labelWidgetClass,
06807 workOffsetForm,
06808 XtNfromHoriz, workOffsetFormTitle,
06809 NULL);
06810
06811 // set up position labels
06812
06813 // first get the number we'll need-- must hold both joints and
06814 // marked Cartesian coordinates
06815 numPosLabels = numCoords > numJoints ? numCoords : numJoints;
06816
06817 // create the first pos label manually, and set the next ones to be
06818 // positioned underneath the previous one
06819 posLabel[0] =
06820 XtVaCreateManagedWidget("posLabel",
06821 labelWidgetClass,
06822 topForm,
06823 XtNfromVert, toolOffsetForm,
06824 NULL);
06825 // get the width, for aligning the abort button
06826 XtVaGetValues(posLabel[0],
06827 XtNwidth, &posw,
06828 NULL);
06829
06830 // do the other labels
06831 for (t = 1; t < numPosLabels; t++) {
06832 posLabel[t] =
06833 XtVaCreateManagedWidget("posLabel",
06834 labelWidgetClass,
06835 topForm,
06836 XtNfromVert, posLabel[t-1],
06837 NULL);
06838 }
06839
06840 abortCommand =
06841 XtVaCreateManagedWidget("abortCommand",
06842 commandWidgetClass,
06843 commandMenuForm,
06844 XtNheight, sh + cmfbw + cmfbw + bh,
06845 XtNwidth, posw - (bw + mw + stw + 8 * cmfbw),
06846 XtNfromHoriz, spindleIncLabel,
06847 NULL);
06848
06849 XtAddCallback(abortCommand, XtNcallback, abortCB, NULL);
06850
06851 posOffsetShell =
06852 XtVaCreatePopupShell("posOffsetShell",
06853 transientShellWidgetClass,
06854 topLevel,
06855 NULL);
06856
06857 posOffsetDialog =
06858 XtVaCreateManagedWidget("posOffsetDialog",
06859 dialogWidgetClass,
06860 posOffsetShell,
06861 NULL);
06862
06863 jogSpeedForm =
06864 XtVaCreateManagedWidget("jogSpeedForm",
06865 formWidgetClass,
06866 topForm,
06867 XtNfromVert, posLabel[numPosLabels - 1],
06868 NULL);
06869
06870 jogSpeedTitleLabel =
06871 XtVaCreateManagedWidget("jogSpeedTitleLabel",
06872 labelWidgetClass,
06873 jogSpeedForm,
06874 NULL);
06875
06876 jogSpeedDecLabel =
06877 XtVaCreateManagedWidget("jogSpeedDecLabel",
06878 labelWidgetClass,
06879 jogSpeedForm,
06880 XtNfromVert, jogSpeedTitleLabel,
06881 NULL);
06882
06883 jogSpeedLabel =
06884 XtVaCreateManagedWidget("jogSpeedLabel",
06885 labelWidgetClass,
06886 jogSpeedForm,
06887 XtNfromHoriz, jogSpeedDecLabel,
06888 XtNfromVert, jogSpeedTitleLabel,
06889 NULL);
06890
06891 jogSpeedIncLabel =
06892 XtVaCreateManagedWidget("jogSpeedIncLabel",
06893 labelWidgetClass,
06894 jogSpeedForm,
06895 XtNfromHoriz, jogSpeedLabel,
06896 XtNfromVert, jogSpeedTitleLabel,
06897 NULL);
06898
06899 jogSpeedShell =
06900 XtVaCreatePopupShell("jogSpeedShell",
06901 transientShellWidgetClass,
06902 topLevel,
06903 NULL);
06904
06905 jogSpeedDialog =
06906 XtVaCreateManagedWidget("jogSpeedDialog",
06907 dialogWidgetClass,
06908 jogSpeedShell,
06909 NULL);
06910
06911 jogIncrementForm =
06912 XtVaCreateManagedWidget("jogIncrementForm",
06913 formWidgetClass,
06914 topForm,
06915 XtNfromHoriz, jogSpeedForm,
06916 XtNfromVert, posLabel[numPosLabels - 1],
06917 NULL);
06918
06919 jogIncrementTitleLabel =
06920 XtVaCreateManagedWidget("jogIncrementTitleLabel",
06921 labelWidgetClass,
06922 jogIncrementForm,
06923 NULL);
06924
06925 setupMenu(&jogIncrementMenu, "jogIncrementMenu",
06926 jogIncrementMenuEntryNames,
06927 jogIncrementForm,
06928 NULL, jogIncrementTitleLabel,
06929 jogIncrementMenuSelect);
06930
06931 jogForm =
06932 XtVaCreateManagedWidget("jogForm",
06933 formWidgetClass,
06934 topForm,
06935 XtNfromHoriz, jogIncrementForm,
06936 XtNfromVert, posLabel[numPosLabels - 1],
06937 NULL);
06938
06939 jogTitleLabel =
06940 XtVaCreateManagedWidget("jogTitleLabel",
06941 labelWidgetClass,
06942 jogForm,
06943 NULL);
06944
06945 jogMinusLabel =
06946 XtVaCreateManagedWidget("jogMinusLabel",
06947 labelWidgetClass,
06948 jogForm,
06949 XtNfromVert, jogTitleLabel,
06950 NULL);
06951
06952 homeCommand =
06953 XtVaCreateManagedWidget("homeCommand",
06954 commandWidgetClass,
06955 jogForm,
06956 XtNfromHoriz, jogMinusLabel,
06957 XtNfromVert, jogTitleLabel,
06958 NULL);
06959
06960 XtAddCallback(homeCommand, XtNcallback, homeCB, 0);
06961
06962 jogPlusLabel =
06963 XtVaCreateManagedWidget("jogPlusLabel",
06964 labelWidgetClass,
06965 jogForm,
06966 XtNfromHoriz, homeCommand,
06967 XtNfromVert, jogTitleLabel,
06968 NULL);
06969
06970 feedOverrideForm =
06971 XtVaCreateManagedWidget("feedOverrideForm",
06972 formWidgetClass,
06973 topForm,
06974 XtNfromHoriz, jogForm,
06975 XtNfromVert, posLabel[numPosLabels - 1],
06976 NULL);
06977
06978 feedOverrideTitleLabel =
06979 XtVaCreateManagedWidget("feedOverrideTitleLabel",
06980 labelWidgetClass,
06981 feedOverrideForm,
06982 NULL);
06983
06984 feedOverrideDecLabel =
06985 XtVaCreateManagedWidget("feedOverrideDecLabel",
06986 labelWidgetClass,
06987 feedOverrideForm,
06988 XtNfromVert, feedOverrideTitleLabel,
06989 NULL);
06990
06991 feedOverrideLabel =
06992 XtVaCreateManagedWidget("feedOverrideLabel",
06993 labelWidgetClass,
06994 feedOverrideForm,
06995 XtNfromHoriz, feedOverrideDecLabel,
06996 XtNfromVert, feedOverrideTitleLabel,
06997 NULL);
06998
06999 feedOverrideIncLabel =
07000 XtVaCreateManagedWidget("feedOverrideIncLabel",
07001 labelWidgetClass,
07002 feedOverrideForm,
07003 XtNfromHoriz, feedOverrideLabel,
07004 XtNfromVert, feedOverrideTitleLabel,
07005 NULL);
07006
07007 feedOverrideShell =
07008 XtVaCreatePopupShell("feedOverrideShell",
07009 transientShellWidgetClass,
07010 topLevel,
07011 NULL);
07012
07013 feedOverrideDialog =
07014 XtVaCreateManagedWidget("feedOverrideDialog",
07015 dialogWidgetClass,
07016 feedOverrideShell,
07017 NULL);
07018
07019 loggingStatusForm =
07020 XtVaCreateManagedWidget("loggingStatusForm",
07021 formWidgetClass,
07022 topForm,
07023 XtNfromHoriz, feedOverrideForm,
07024 XtNfromVert, posLabel[numPosLabels - 1],
07025 NULL);
07026
07027 loggingStatusTitleLabel =
07028 XtVaCreateManagedWidget("loggingStatusTitleLabel",
07029 labelWidgetClass,
07030 loggingStatusForm,
07031 NULL);
07032
07033 loggingStatusOpenLabel =
07034 XtVaCreateManagedWidget("loggingStatusOpenLabel",
07035 labelWidgetClass,
07036 loggingStatusForm,
07037 XtNfromVert, loggingStatusTitleLabel,
07038 NULL);
07039
07040 loggingStatusStartedLabel =
07041 XtVaCreateManagedWidget("loggingStatusStartedLabel",
07042 labelWidgetClass,
07043 loggingStatusForm,
07044 XtNfromHoriz, loggingStatusOpenLabel,
07045 XtNfromVert, loggingStatusTitleLabel,
07046 NULL);
07047
07048 loggingStatusPointsLabel =
07049 XtVaCreateManagedWidget("loggingStatusPointsLabel",
07050 labelWidgetClass,
07051 loggingStatusForm,
07052 XtNfromHoriz, loggingStatusStartedLabel,
07053 XtNfromVert, loggingStatusTitleLabel,
07054 NULL);
07055
07056 mdiForm =
07057 XtVaCreateManagedWidget("mdiForm",
07058 formWidgetClass,
07059 topForm,
07060 XtNfromVert, jogSpeedForm,
07061 NULL);
07062
07063 mdiFormTitle =
07064 XtVaCreateManagedWidget("mdiFormTitle",
07065 labelWidgetClass,
07066 mdiForm,
07067 NULL);
07068
07069 mdiFormText =
07070 XtVaCreateManagedWidget("mdiFormText",
07071 asciiTextWidgetClass,
07072 mdiForm,
07073 XtNfromHoriz, mdiFormTitle,
07074 XtNeditType, XawtextEdit,
07075 NULL);
07076
07077 mdiCodesLabel =
07078 XtVaCreateManagedWidget("mdiCodesLabel",
07079 labelWidgetClass,
07080 topForm,
07081 XtNfromVert, mdiForm,
07082 NULL);
07083
07084 programForm =
07085 XtVaCreateManagedWidget("programForm",
07086 formWidgetClass,
07087 topForm,
07088 XtNfromVert, mdiCodesLabel,
07089 NULL);
07090
07091 programFormTitle =
07092 XtVaCreateManagedWidget("programFormTitle",
07093 labelWidgetClass,
07094 programForm,
07095 NULL);
07096
07097 programFormName =
07098 XtVaCreateManagedWidget("programFormName",
07099 labelWidgetClass,
07100 programForm,
07101 XtNfromHoriz, programFormTitle,
07102 NULL);
07103
07104 programFormStateTitle =
07105 XtVaCreateManagedWidget("programFormStateTitle",
07106 labelWidgetClass,
07107 programForm,
07108 XtNfromHoriz, programFormName,
07109 NULL);
07110
07111 programFormState =
07112 XtVaCreateManagedWidget("programFormState",
07113 labelWidgetClass,
07114 programForm,
07115 XtNfromHoriz, programFormStateTitle,
07116 NULL);
07117
07118 programOpenCommand =
07119 XtVaCreateManagedWidget("programOpenCommand",
07120 commandWidgetClass,
07121 programForm,
07122 XtNfromVert, programFormTitle,
07123 NULL);
07124
07125 XtAddCallback(programOpenCommand, XtNcallback, dialogPopup, fileOpenShell);
07126
07127 programRunCommand =
07128 XtVaCreateManagedWidget("programRunCommand",
07129 commandWidgetClass,
07130 programForm,
07131 XtNfromHoriz, programOpenCommand,
07132 XtNfromVert, programFormTitle,
07133 NULL);
07134
07135 XtAddCallback(programRunCommand, XtNcallback, programRunCB, NULL);
07136
07137 programPauseCommand =
07138 XtVaCreateManagedWidget("programPauseCommand",
07139 commandWidgetClass,
07140 programForm,
07141 XtNfromHoriz, programRunCommand,
07142 XtNfromVert, programFormTitle,
07143 NULL);
07144
07145 XtAddCallback(programPauseCommand, XtNcallback, programPauseCB, NULL);
07146
07147 programResumeCommand =
07148 XtVaCreateManagedWidget("programResumeCommand",
07149 commandWidgetClass,
07150 programForm,
07151 XtNfromHoriz, programPauseCommand,
07152 XtNfromVert, programFormTitle,
07153 NULL);
07154
07155 XtAddCallback(programResumeCommand, XtNcallback, programResumeCB, NULL);
07156
07157 programStepCommand =
07158 XtVaCreateManagedWidget("programStepCommand",
07159 commandWidgetClass,
07160 programForm,
07161 XtNfromHoriz, programResumeCommand,
07162 XtNfromVert, programFormTitle,
07163 NULL);
07164
07165 XtAddCallback(programStepCommand, XtNcallback, programStepCB, NULL);
07166
07167 programVerifyCommand =
07168 XtVaCreateManagedWidget("programVerifyCommand",
07169 commandWidgetClass,
07170 programForm,
07171 XtNfromHoriz, programStepCommand,
07172 XtNfromVert, programFormTitle,
07173 NULL);
07174
07175 XtAddCallback(programVerifyCommand, XtNcallback, programVerifyCB, NULL);
07176
07177 programText =
07178 XtVaCreateManagedWidget("programText",
07179 asciiTextWidgetClass,
07180 topForm,
07181 XtNfromVert, programForm,
07182 NULL);
07183
07184 // add actions table for all action functions
07185 XtAppAddActions(app_context, actionsTable, XtNumber(actionsTable));
07186
07187 // create windows for widgets and map them
07188 XtRealizeWidget(topLevel);
07189
07190 // init atom to catch window kills
07191 killAtom = XInternAtom(XtDisplay(topLevel), "WM_DELETE_WINDOW", False);
07192
07193 // initialize hard-coded colors
07194 stringToPixel(topForm, "black", &pixelBlack);
07195 stringToPixel(topForm, "red", &pixelRed);
07196 stringToPixel(topForm, "yellow", &pixelYellow);
07197 stringToPixel(topForm, "green", &pixelGreen);
07198
07199 // initialize joint frame items
07200 for (t = 0; t < numJoints; t++) {
07201 // initialize diagnostics ferrors
07202 oldAxisFerror[t] = -1.0;
07203 }
07204
07205 // initialize position label items
07206 for (t = 0; t < numPosLabels; t++) {
07207 // get position label background and border colors for toggling
07208 getColor(posLabel[t], &posLabelBackground[t], 0);
07209 getBorderColor(posLabel[t], &posLabelBorderColor[t]);
07210 // initialize pos label colors
07211 posColor[t] = 0;
07212 // initialize label values
07213 newPosLabelValue[t] = 0.0;
07214 oldPosLabelValue[t] = DBL_MAX; // forces an update
07215 }
07216
07217 // get border color for dialog buttons, for de-highlighting
07218
07219 getBorderColor(fileOpenDialog, &fileOpenBorderColor);
07220 setBorderColor(fileOpenDone, pixelRed);
07221
07222 getBorderColor(fileEditDialog, &fileEditBorderColor);
07223 setBorderColor(fileEditDone, pixelRed);
07224
07225 getBorderColor(fileQuitDialog, &fileQuitBorderColor);
07226 setBorderColor(fileQuitDone, pixelRed);
07227
07228 getBorderColor(toolSetOffsetForm, &toolSetOffsetFormBorderColor);
07229 setBorderColor(toolSetOffsetDone, pixelRed);
07230
07231 getBorderColor(calibForm, &calibFormBorderColor);
07232 setBorderColor(calibDone, pixelRed);
07233
07234 getBorderColor(loggingForm, &loggingFormBorderColor);
07235 setBorderColor(loggingDone, pixelRed);
07236
07237 // set labels for dynamic labels we can't init in timeoutCB
07238 sprintf(string, "%d", jogSpeed);
07239 setLabel(jogSpeedLabel, string);
07240
07241 // start X interval timer
07242 XtAppAddTimeOut(app_context, UPDATE_MSECS, timeoutCB, NULL);
07243
07244 // trap window kill for top level
07245 XSetWMProtocols(XtDisplay(topLevel), XtWindow(topLevel), &killAtom, 1);
07246
07247 // loop for events
07248 XtAppMainLoop(app_context);
07249
07250 return 0;
07251 }
|
|
|
Definition at line 4450 of file yemc.cc. Referenced by timeoutCB().
04451 {
04452 int m;
04453 int p;
04454
04455
04456 // run through all 6 possible markers, pick out when there's a 1 and put
04457 // appropriate coordinate value in next posLabel slot
04458 for (m = 0, p = 0; m < 6; m++) {
04459 if (coordinateMark[m]) {
04460 if (m == 0)
04461 newPosLabelValue[p] = pose.tran.x;
04462 else if (m == 1)
04463 newPosLabelValue[p] = pose.tran.y;
04464 else if (m == 2)
04465 newPosLabelValue[p] = pose.tran.z;
04466 else if (m == 3)
04467 newPosLabelValue[p] = pose.a;
04468 else if (m == 4)
04469 newPosLabelValue[p] = pose.b;
04470 else if (m == 5)
04471 newPosLabelValue[p] = pose.c;
04472 p++;
04473 }
04474 }
04475 }
|
|
||||||||||||||||||||
|
Definition at line 2768 of file yemc.cc. 02769 {
02770 String string;
02771
02772 XtVaGetValues(mdiFormText, XtNstring, &string, NULL);
02773
02774 sendMdiCmd(string);
02775 }
|
|
||||||||||||||||
|
Definition at line 4195 of file yemc.cc. 04196 {
04197 switch ((int) client_data) {
04198 case 0:
04199 sendMistOn();
04200 break;
04201
04202 case 1:
04203 sendMistOff();
04204 break;
04205
04206 default:
04207 break;
04208 }
04209 }
|
|
||||||||||||||||
|
Definition at line 4175 of file yemc.cc. 04176 {
04177 switch ((int) client_data) {
04178 case 0:
04179 sendManual();
04180 break;
04181
04182 case 1:
04183 sendAuto();
04184 break;
04185
04186 case 2:
04187 sendMdi();
04188 break;
04189
04190 default:
04191 break;
04192 }
04193 }
|
|
||||||||||||
|
Definition at line 1302 of file yemc.cc. Referenced by keyPressAction(), loggingPlotCB(), and main().
01303 {
01304 char string[SYSTEM_STRING_LEN];
01305 int retval;
01306
01307 if (logfile == 0)
01308 {
01309 return -1;
01310 }
01311
01312 switch (logtype)
01313 {
01314 case EMC_LOG_TYPE_AXIS_POS:
01315 case EMC_LOG_TYPE_AXIS_VEL:
01316 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);
01317 break;
01318
01319 case EMC_LOG_TYPE_AXES_INPOS:
01320 case EMC_LOG_TYPE_AXES_OUTPOS:
01321 sprintf(string, "%s '{print $2 \" \" $3}' < %s 2> /dev/null | %s -m 1> /dev/null 2> /dev/null", AWK_PATH, logfile, XGRAPH_PATH);
01322 break;
01323
01324 case EMC_LOG_TYPE_AXES_FERROR:
01325 case EMC_LOG_TYPE_TRAJ_POS:
01326 /* we want to compose:
01327 ( awk '{print $1 " " $2}' < emc.log ; echo "" ; awk '{print $1 " " $3}' < emc.log ; echo "" ; awk '{print $1 " " $4}' < emc.log ) 2> /dev/null | xgraph -m 1> /dev/null 2> /dev/null"
01328 */
01329 sprintf(string, "( %s '{print $1 \" \" $2}' < %s ; echo \"\" ; %s '{print $1 \" \" $3}' < %s ; echo \"\" ; %s '{print $1 \" \" $4}' < %s ) 2> /dev/null | %s -m 1> /dev/null 2> /dev/null", AWK_PATH, logfile, AWK_PATH, logfile, AWK_PATH, logfile, XGRAPH_PATH);
01330 break;
01331
01332 case EMC_LOG_TYPE_TRAJ_VEL:
01333 case EMC_LOG_TYPE_TRAJ_ACC:
01334 /* we want to compose:
01335 ( awk '{print $1 " " $2}' < emc.log ; echo "" ; awk '{print $1 " " $3}' < emc.log ; echo "" ; awk '{print $1 " " $4}' < emc.log ; echo "" ; awk '{print $1 " " $5}' < emc.log) 2> /dev/null | xgraph -m 1> /dev/null 2> /dev/null"
01336 */
01337 sprintf(string, "( %s '{print $1 \" \" $2}' < %s ; echo \"\" ; %s '{print $1 \" \" $3}' < %s ; echo \"\" ; %s '{print $1 \" \" $4}' < %s ; echo \"\" ; %s '{print $1 \" \" $5}' < %s) 2> /dev/null | %s -m 1> /dev/null 2> /dev/null", AWK_PATH, logfile, AWK_PATH, logfile, AWK_PATH, logfile, AWK_PATH, logfile, XGRAPH_PATH);
01338 break;
01339
01340 default:
01341 return -1;
01342 break;
01343 }
01344
01345 retval = system(string);
01346
01347 return retval;
01348 }
|
|
||||||||||||
|
Definition at line 1688 of file yemc.cc. Referenced by calibDoDone(), doFileEditDone(), fileEditorMarkCB(), loggingDoDone(), loggingStartCB(), sendLogStart(), and timeoutCB().
01689 {
01690 va_list ap;
01691 char string[256]; // FIXME-- hardcoded value
01692
01693 va_start(ap, fmt);
01694 vsprintf(string, fmt, ap);
01695 va_end(ap);
01696
01697 if (errorIsPopped) {
01698 // we're popped up already, so just print the error to stdout
01699 fprintf(stderr, "error: %s\n", string);
01700 return;
01701 }
01702
01703 destroyErrorShell();
01704 createErrorShell();
01705
01706 XtVaSetValues(errorDialog, XtNlabel, string, NULL);
01707 errorIsPopped = 1;
01708 dialogPopup(NULL, errorShell, NULL);
01709 // trap window kill
01710 XSetWMProtocols(XtDisplay(topLevel), XtWindow(errorShell), &killAtom, 1);
01711 }
|
|
||||||||||||||||||||
|
Definition at line 2498 of file yemc.cc. 02499 {
02500 doPosOffsetDone();
02501 }
|
|
||||||||||||||||||||
|
Definition at line 5263 of file yemc.cc. 05264 {
05265 XtPopdown(posOffsetShell);
05266 }
|
|
||||||||||||||||||||
|
Definition at line 2476 of file yemc.cc. 02477 {
02478 int axis;
02479
02480 // disallow pos offset if joints are displayed
02481 if (posFrame == POS_FRAME_JOINT) {
02482 return;
02483 }
02484
02485 for (axis = 0; axis < numPosLabels; axis++) {
02486 if (w == posLabel[axis]) {
02487 activeCoord = axis;
02488 break;
02489 }
02490 }
02491
02492 XtVaSetValues(posOffsetDialog, XtNvalue, "0.0", NULL);
02493 dialogPopup(NULL, posOffsetShell, NULL);
02494 // trap window kill
02495 XSetWMProtocols(XtDisplay(topLevel), XtWindow(posOffsetShell), &killAtom, 1);
02496 }
|
|
|
Definition at line 140 of file yemc.cc. Referenced by emcCommandWait(), main(), printStatus(), sendProgramOpen(), sendProgramRun(), and sendProgramStep().
00141 {
00142 printf("%s\n", error);
00143 }
|
|
||||||||||||||||
|
Definition at line 2553 of file yemc.cc. 02554 {
02555 sendProgramPause();
02556 }
|
|
||||||||||||||||
|
Definition at line 2558 of file yemc.cc. 02559 {
02560 sendProgramResume();
02561 }
|
|
||||||||||||||||
|
Definition at line 2548 of file yemc.cc. 02549 {
02550 sendProgramRun(programStartLine);
02551 }
|
|
||||||||||||||||
|
Definition at line 2563 of file yemc.cc. 02564 {
02565 sendProgramStep();
02566 }
|
|
||||||||||||||||
|
Definition at line 2568 of file yemc.cc. 02569 {
02570 programStartLine = -1;
02571 sendProgramRun(programStartLine);
02572 }
|
|
|
Definition at line 5454 of file yemc.cc. 05455 {
05456 // clean up NML buffers
05457
05458 if (emcErrorBuffer != 0)
05459 {
05460 delete emcErrorBuffer;
05461 emcErrorBuffer = 0;
05462 }
05463
05464 if (emcStatusBuffer != 0)
05465 {
05466 delete emcStatusBuffer;
05467 emcStatusBuffer = 0;
05468 emcStatus = 0;
05469 }
05470
05471 if (emcCommandBuffer != 0)
05472 {
05473 delete emcCommandBuffer;
05474 emcCommandBuffer = 0;
05475 }
05476
05477 // get rid of program file window string
05478 if (NULL != programFwString) {
05479 free(programFwString);
05480 programFwString = 0;
05481 }
05482
05483 exit(0);
05484 }
|
|
|
Definition at line 945 of file yemc.cc. 00946 {
00947 EMC_TASK_ABORT task_abort_msg;
00948
00949 task_abort_msg.serial_number = ++emcCommandSerialNumber;
00950 emcCommandBuffer->write(task_abort_msg);
00951
00952 return 0;
00953 }
|
|
|
Definition at line 788 of file yemc.cc. 00789 {
00790 EMC_TASK_SET_MODE mode_msg;
00791
00792 mode_msg.mode = EMC_TASK_MODE_AUTO;
00793 mode_msg.serial_number = ++emcCommandSerialNumber;
00794 emcCommandBuffer->write(mode_msg);
00795
00796 return 0;
00797 }
|
|
||||||||||||
|
Definition at line 1233 of file yemc.cc. Referenced by calibDoDone().
01234 {
01235 EMC_AXIS_SET_CYCLE_TIME emc_axis_set_cycle_time_msg;
01236
01237 emc_axis_set_cycle_time_msg.axis = axis;
01238 emc_axis_set_cycle_time_msg.cycleTime = cycleTime;
01239 emc_axis_set_cycle_time_msg.serial_number = ++emcCommandSerialNumber;
01240 emcCommandBuffer->write(emc_axis_set_cycle_time_msg);
01241
01242 return 0;
01243 }
|
|
||||||||||||
|
Definition at line 1278 of file yemc.cc. Referenced by calibDoDone().
01279 {
01280 EMC_AXIS_SET_FERROR emc_axis_set_ferror_msg;
01281
01282 emc_axis_set_ferror_msg.axis = axis;
01283 emc_axis_set_ferror_msg.ferror = ferror;
01284 emc_axis_set_ferror_msg.serial_number = ++emcCommandSerialNumber;
01285 emcCommandBuffer->write(emc_axis_set_ferror_msg);
01286
01287 return 0;
01288 }
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 1245 of file yemc.cc. Referenced by calibDoDone(), and emc_axis_gains().
01246 {
01247 EMC_AXIS_SET_GAINS emc_axis_set_gains_msg;
01248
01249 emc_axis_set_gains_msg.axis = axis;
01250 emc_axis_set_gains_msg.p = p;
01251 emc_axis_set_gains_msg.i = i;
01252 emc_axis_set_gains_msg.d = d;
01253 emc_axis_set_gains_msg.ff0 = ff0;
01254 emc_axis_set_gains_msg.ff1 = ff1;
01255 emc_axis_set_gains_msg.ff2 = ff2;
01256 emc_axis_set_gains_msg.backlash = backlash;
01257 emc_axis_set_gains_msg.bias = bias;
01258 emc_axis_set_gains_msg.maxError = maxError;
01259 emc_axis_set_gains_msg.serial_number = ++emcCommandSerialNumber;
01260 emcCommandBuffer->write(emc_axis_set_gains_msg);
01261
01262 return 0;
01263 }
|
|
||||||||||||||||
|
Definition at line 1265 of file yemc.cc. Referenced by calibDoDone().
01266 {
01267 EMC_AXIS_SET_OUTPUT_SCALE emc_axis_set_output_scale_msg;
01268
01269 emc_axis_set_output_scale_msg.axis = axis;
01270 emc_axis_set_output_scale_msg.scale = scale;
01271 emc_axis_set_output_scale_msg.offset = offset;
01272 emc_axis_set_output_scale_msg.serial_number = ++emcCommandSerialNumber;
01273 emcCommandBuffer->write(emc_axis_set_output_scale_msg);
01274
01275 return 0;
01276 }
|
|
|
Definition at line 925 of file yemc.cc. 00926 {
00927 EMC_SPINDLE_BRAKE_ENGAGE emc_spindle_brake_engage_msg;
00928
00929 emc_spindle_brake_engage_msg.serial_number = ++emcCommandSerialNumber;
00930 emcCommandBuffer->write(emc_spindle_brake_engage_msg);
00931
00932 return 0;
00933 }
|
|
|
Definition at line 935 of file yemc.cc. 00936 {
00937 EMC_SPINDLE_BRAKE_RELEASE emc_spindle_brake_release_msg;
00938
00939 emc_spindle_brake_release_msg.serial_number = ++emcCommandSerialNumber;
00940 emcCommandBuffer->write(emc_spindle_brake_release_msg);
00941
00942 return 0;
00943 }
|
|
|
Definition at line 733 of file yemc.cc. 00734 {
00735 EMC_TASK_SET_STATE state_msg;
00736
00737 state_msg.state = EMC_TASK_STATE_ESTOP;
00738 state_msg.serial_number = ++emcCommandSerialNumber;
00739 emcCommandBuffer->write(state_msg);
00740
00741 return 0;
00742 }
|
|
|
Definition at line 744 of file yemc.cc. 00745 {
00746 EMC_TASK_SET_STATE state_msg;
00747
00748 state_msg.state = EMC_TASK_STATE_ESTOP_RESET;
00749 state_msg.serial_number = ++emcCommandSerialNumber;
00750 emcCommandBuffer->write(state_msg);
00751
00752 return 0;
00753 }
|
|
|
Definition at line 1080 of file yemc.cc. Referenced by doFeedOverrideDone(), emc_feed_override(), keyPressAction(), and upAction().
01081 {
01082 EMC_TRAJ_SET_SCALE emc_traj_set_scale_msg;
01083
01084 if (override < 0.0) {
01085 override = 0.0;
01086 }
01087 else if (override > (double) maxFeedOverride / 100.0) {
01088 override = (double) maxFeedOverride / 100.0;
01089 }
01090 emc_traj_set_scale_msg.serial_number = ++emcCommandSerialNumber;
01091 emc_traj_set_scale_msg.scale = override;
01092 emcCommandBuffer->write(emc_traj_set_scale_msg);
01093
01094 return 0;
01095 }
|
|
|
Definition at line 853 of file yemc.cc. 00854 {
00855 EMC_COOLANT_FLOOD_OFF emc_coolant_flood_off_msg;
00856
00857 emc_coolant_flood_off_msg.serial_number = ++emcCommandSerialNumber;
00858 emcCommandBuffer->write(emc_coolant_flood_off_msg);
00859
00860 return 0;
00861 }
|
|
|
Definition at line 843 of file yemc.cc. 00844 {
00845 EMC_COOLANT_FLOOD_ON emc_coolant_flood_on_msg;
00846
00847 emc_coolant_flood_on_msg.serial_number = ++emcCommandSerialNumber;
00848 emcCommandBuffer->write(emc_coolant_flood_on_msg);
00849
00850 return 0;
00851 }
|
|
|
Definition at line 1069 of file yemc.cc. Referenced by emc_home(), homeCB(), and keyPressAction().
01070 {
01071 EMC_AXIS_HOME emc_axis_home_msg;
01072
01073 emc_axis_home_msg.serial_number = ++emcCommandSerialNumber;
01074 emc_axis_home_msg.axis = axis;
01075 emcCommandBuffer->write(emc_axis_home_msg);
01076
01077 return 0;
01078 }
|
|
||||||||||||
|
Definition at line 977 of file yemc.cc. Referenced by downAction(), emc_jog(), and keyPressAction().
00978 {
00979 EMC_AXIS_JOG emc_axis_jog_msg;
00980 EMC_TRAJ_SET_TELEOP_VECTOR emc_set_teleop_vector;
00981
00982 if (axis < 0 || axis >= XEMC_NUM_AXES) {
00983 return -1;
00984 }
00985
00986 if (axisJogging != -1) {
00987 // ignore request to jog, if an axis is already jogging
00988 return 0;
00989 }
00990
00991 if(posFrame == POS_FRAME_JOINT)
00992 {
00993 if (0 == jogPol[axis]) {
00994 speed = -speed;
00995 }
00996
00997 emc_axis_jog_msg.serial_number = ++emcCommandSerialNumber;
00998 emc_axis_jog_msg.axis = axis;
00999 emc_axis_jog_msg.vel = speed / 60.0;
01000 emcCommandBuffer->write(emc_axis_jog_msg);
01001 }
01002 else
01003 {
01004 emc_set_teleop_vector.serial_number = ++emcCommandSerialNumber;
01005 emc_set_teleop_vector.vector.tran.x = 0.0;
01006 emc_set_teleop_vector.vector.tran.y = 0.0;
01007 emc_set_teleop_vector.vector.tran.z = 0.0;
01008
01009 switch(axis)
01010 {
01011 case 0:
01012 emc_set_teleop_vector.vector.tran.x = speed/60.0;
01013 break;
01014 case 1:
01015 emc_set_teleop_vector.vector.tran.y = speed/60.0;
01016 break;
01017 case 2:
01018 emc_set_teleop_vector.vector.tran.z = speed/60.0;
01019 break;
01020 case 3:
01021 emc_set_teleop_vector.vector.a = speed/60.0;
01022 break;
01023 case 4:
01024 emc_set_teleop_vector.vector.b = speed/60.0;
01025 break;
01026 case 5:
01027 emc_set_teleop_vector.vector.c = speed/60.0;
01028 break;
01029 }
01030 emcCommandBuffer->write(emc_set_teleop_vector);
01031 }
01032
01033
01034
01035 axisJogging = axis;
01036
01037 return 0;
01038 }
|
|
||||||||||||||||
|
Definition at line 1040 of file yemc.cc. Referenced by downAction(), emc_jog_incr(), and keyPressAction().
01041 {
01042 EMC_AXIS_INCR_JOG emc_axis_incr_jog_msg;
01043
01044 if (axis < 0 || axis >= XEMC_NUM_AXES) {
01045 return -1;
01046 }
01047
01048 if (axisJogging != -1) {
01049 // ignore request to jog, if an axis is already jogging
01050 return 0;
01051 }
01052
01053 if (0 == jogPol[axis]) {
01054 speed = -speed;
01055 }
01056
01057 emc_axis_incr_jog_msg.serial_number = ++emcCommandSerialNumber;
01058 emc_axis_incr_jog_msg.axis = axis;
01059 emc_axis_incr_jog_msg.vel = speed / 60.0;
01060 emc_axis_incr_jog_msg.incr = jogIncrement;
01061 emcCommandBuffer->write(emc_axis_incr_jog_msg);
01062
01063 // don't flag incremental jogs as jogging an axis-- we can
01064 // allow multiple incremental jogs since we don't need a key release
01065
01066 return 0;
01067 }
|
|
|
Definition at line 955 of file yemc.cc. Referenced by emc_jog_stop(), keyReleaseAction(), and upAction().
00956 {
00957 EMC_AXIS_ABORT emc_axis_abort_msg;
00958
00959 if (axis < 0 || axis >= XEMC_NUM_AXES) {
00960 return -1;
00961 }
00962
00963 // don't send request to jog if none are jogging
00964 if (axisJogging == -1) {
00965 return 0;
00966 }
00967
00968 emc_axis_abort_msg.serial_number = ++emcCommandSerialNumber;
00969 emc_axis_abort_msg.axis = axisJogging;
00970 emcCommandBuffer->write(emc_axis_abort_msg);
00971
00972 axisJogging = -1;
00973
00974 return 0;
00975 }
|
|
|
Definition at line 1222 of file yemc.cc. Referenced by doToolTableDone(), and emc_load_tool_table().
01223 {
01224 EMC_TOOL_LOAD_TOOL_TABLE emc_tool_load_tool_table_msg;
01225
01226 strcpy(emc_tool_load_tool_table_msg.file, file);
01227 emc_tool_load_tool_table_msg.serial_number = ++emcCommandSerialNumber;
01228 emcCommandBuffer->write(emc_tool_load_tool_table_msg);
01229
01230 return 0;
01231 }
|
|
|
Definition at line 1393 of file yemc.cc. 01394 {
01395 EMC_LOG_CLOSE emc_log_close_msg;
01396
01397 emc_log_close_msg.serial_number = ++emcCommandSerialNumber;
01398 emcCommandBuffer->write(emc_log_close_msg);
01399
01400 return 0;
01401 }
|
|
|
Definition at line 1350 of file yemc.cc. 01351 {
01352 EMC_LOG_OPEN emc_log_open_msg;
01353 EMC_LOG_START emc_log_start_msg;
01354
01355 // check for open log file first; if not, and old one saved, open it
01356 if (! emcStatus->logOpen) {
01357 if (saveLogFile[0] != 0) {
01358 strcpy(emc_log_open_msg.file, saveLogFile);
01359 emc_log_open_msg.type = saveLogType;
01360 emc_log_open_msg.size = saveLogSize;
01361 emc_log_open_msg.skip = saveLogSkip;
01362 emc_log_open_msg.which = activeJoint;
01363 emc_log_open_msg.serial_number = ++emcCommandSerialNumber;
01364 emcCommandBuffer->write(emc_log_open_msg);
01365 }
01366 else {
01367 // log is not opened, and no name saved, so ignore
01368 popupError("No log file selected");
01369 return -1;
01370 }
01371 }
01372
01373 // wait for previous one to go out
01374 emcCommandWaitReceived(emcCommandSerialNumber);
01375
01376 // now send log start message
01377 emc_log_start_msg.serial_number = ++emcCommandSerialNumber;
01378 emcCommandBuffer->write(emc_log_start_msg);
01379
01380 return 0;
01381 }
|
|
|
Definition at line 1383 of file yemc.cc. 01384 {
01385 EMC_LOG_STOP emc_log_stop_msg;
01386
01387 emc_log_stop_msg.serial_number = ++emcCommandSerialNumber;
01388 emcCommandBuffer->write(emc_log_stop_msg);
01389
01390 return 0;
01391 };
|
|
|
Definition at line 766 of file yemc.cc. 00767 {
00768 EMC_TASK_SET_STATE state_msg;
00769
00770 state_msg.state = EMC_TASK_STATE_OFF;
00771 state_msg.serial_number = ++emcCommandSerialNumber;
00772 emcCommandBuffer->write(state_msg);
00773
00774 return 0;
00775 }
|
|
|
Definition at line 755 of file yemc.cc. 00756 {
00757 EMC_TASK_SET_STATE state_msg;
00758
00759 state_msg.state = EMC_TASK_STATE_ON;
00760 state_msg.serial_number = ++emcCommandSerialNumber;
00761 emcCommandBuffer->write(state_msg);
00762
00763 return 0;
00764 }
|
|
|
Definition at line 777 of file yemc.cc. 00778 {
00779 EMC_TASK_SET_MODE mode_msg;
00780
00781 mode_msg.mode = EMC_TASK_MODE_MANUAL;
00782 mode_msg.serial_number = ++emcCommandSerialNumber;
00783 emcCommandBuffer->write(mode_msg);
00784
00785 return 0;
00786 }
|
|
|
Definition at line 799 of file yemc.cc. 00800 {
00801 EMC_TASK_SET_MODE mode_msg;
00802
00803 mode_msg.mode = EMC_TASK_MODE_MDI;
00804 mode_msg.serial_number = ++emcCommandSerialNumber;
00805 emcCommandBuffer->write(mode_msg);
00806
00807 return 0;
00808 }
|
|
|
Definition at line 1211 of file yemc.cc. Referenced by doPosOffsetDone(), emc_mdi(), and mdiReturnAction().
01212 {
01213 EMC_TASK_PLAN_EXECUTE emc_task_plan_execute_msg;
01214
01215 strcpy(emc_task_plan_execute_msg.command, mdi);
01216 emc_task_plan_execute_msg.serial_number = ++emcCommandSerialNumber;
01217 emcCommandBuffer->write(emc_task_plan_execute_msg);
01218
01219 return 0;
01220 }
|
|
|
Definition at line 833 of file yemc.cc. 00834 {
00835 EMC_COOLANT_MIST_OFF emc_coolant_mist_off_msg;
00836
00837 emc_coolant_mist_off_msg.serial_number = ++emcCommandSerialNumber;
00838 emcCommandBuffer->write(emc_coolant_mist_off_msg);
00839
00840 return 0;
00841 }
|
|
|
Definition at line 823 of file yemc.cc. 00824 {
00825 EMC_COOLANT_MIST_ON emc_coolant_mist_on_msg;
00826
00827 emc_coolant_mist_on_msg.serial_number = ++emcCommandSerialNumber;
00828 emcCommandBuffer->write(emc_coolant_mist_on_msg);
00829
00830 return 0;
00831 }
|
|
|
Definition at line 1107 of file yemc.cc. Referenced by doFileOpenDone(), emc_open(), fileEditorMarkCB(), sendProgramRun(), and sendProgramStep().
01108 {
01109 EMC_TASK_PLAN_OPEN emc_task_plan_open_msg;
01110
01111 // first put in auto mode if it's not
01112 if (0 == emcStatus->task.mode != EMC_TASK_MODE_AUTO) {
01113 // send a request to go to auto mode
01114 sendAuto();
01115 }
01116
01117 // wait for any previous one to go out
01118 if (0 != emcCommandWaitDone(emcCommandSerialNumber)) {
01119 printError("error executing command\n");
01120 return -1;
01121 }
01122
01123 emc_task_plan_open_msg.serial_number = ++emcCommandSerialNumber;
01124 strcpy(emc_task_plan_open_msg.file, program);
01125 emcCommandBuffer->write(emc_task_plan_open_msg);
01126
01127 // now clear out our stored version of the program, in case
01128 // the file contents have changed but the name is the same
01129 programFile[0] = 0;
01130
01131 return 0;
01132 }
|
|
|
Definition at line 1166 of file yemc.cc. 01167 {
01168 EMC_TASK_PLAN_PAUSE emc_task_plan_pause_msg;
01169
01170 emc_task_plan_pause_msg.serial_number = ++emcCommandSerialNumber;
01171 emcCommandBuffer->write(emc_task_plan_pause_msg);
01172
01173 return 0;
01174 }
|
|
|
Definition at line 1176 of file yemc.cc. 01177 {
01178 EMC_TASK_PLAN_RESUME emc_task_plan_resume_msg;
01179
01180 emc_task_plan_resume_msg.serial_number = ++emcCommandSerialNumber;
01181 emcCommandBuffer->write(emc_task_plan_resume_msg);
01182
01183 return 0;
01184 }
|
|
|
Definition at line 1140 of file yemc.cc. Referenced by emc_run(), keyPressAction(), programRunCB(), and programVerifyCB().
01141 {
01142 EMC_TASK_PLAN_RUN emc_task_plan_run_msg;
01143
01144 // first reopen program if it's not open
01145 if (0 == emcStatus->task.file[0]) {
01146 // send a request to open last one
01147 sendProgramOpen(lastProgramFile);
01148
01149 // wait for command to go out
01150 if (0 != emcCommandWaitDone(emcCommandSerialNumber)) {
01151 printError("error executing command\n");
01152 return -1;
01153 }
01154 }
01155
01156 emc_task_plan_run_msg.serial_number = ++emcCommandSerialNumber;
01157 emc_task_plan_run_msg.line = line;
01158 emcCommandBuffer->write(emc_task_plan_run_msg);
01159
01160 programStartLineLast = programStartLine;
01161 programStartLine = 0;
01162
01163 return 0;
01164 }
|
|
|
Definition at line 1186 of file yemc.cc. 01187 {
01188 EMC_TASK_PLAN_STEP emc_task_plan_step_msg;
01189
01190 // first reopen program if it's not open
01191 if (0 == emcStatus->task.file[0]) {
01192 // send a request to open last one
01193 sendProgramOpen(lastProgramFile);
01194
01195 // wait for command to go out
01196 if (0 != emcCommandWaitDone(emcCommandSerialNumber)) {
01197 printError("error executing command\n");
01198 return -1;
01199 }
01200 }
01201
01202 emc_task_plan_step_msg.serial_number = ++emcCommandSerialNumber;
01203 emcCommandBuffer->write(emc_task_plan_step_msg);
01204
01205 programStartLineLast = programStartLine;
01206 programStartLine = 0;
01207
01208 return 0;
01209 }
|
|
|
Definition at line 915 of file yemc.cc. 00916 {
00917 EMC_SPINDLE_CONSTANT emc_spindle_constant_msg;
00918
00919 emc_spindle_constant_msg.serial_number = ++emcCommandSerialNumber;
00920 emcCommandBuffer->write(emc_spindle_constant_msg);
00921
00922 return 0;
00923 }
|
|
|
Definition at line 905 of file yemc.cc. 00906 {
00907 EMC_SPINDLE_DECREASE emc_spindle_decrease_msg;
00908
00909 emc_spindle_decrease_msg.serial_number = ++emcCommandSerialNumber;
00910 emcCommandBuffer->write(emc_spindle_decrease_msg);
00911
00912 return 0;
00913 }
|
|
|
Definition at line 863 of file yemc.cc. 00864 {
00865 EMC_SPINDLE_ON emc_spindle_on_msg;
00866
00867 emc_spindle_on_msg.speed = +1;
00868 emc_spindle_on_msg.serial_number = ++emcCommandSerialNumber;
00869 emcCommandBuffer->write(emc_spindle_on_msg);
00870
00871 return 0;
00872 }
|
|
|
Definition at line 895 of file yemc.cc. 00896 {
00897 EMC_SPINDLE_INCREASE emc_spindle_increase_msg;
00898
00899 emc_spindle_increase_msg.serial_number = ++emcCommandSerialNumber;
00900 emcCommandBuffer->write(emc_spindle_increase_msg);
00901
00902 return 0;
00903 }
|
|
|
Definition at line 885 of file yemc.cc. 00886 {
00887 EMC_SPINDLE_OFF emc_spindle_off_msg;
00888
00889 emc_spindle_off_msg.serial_number = ++emcCommandSerialNumber;
00890 emcCommandBuffer->write(emc_spindle_off_msg);
00891
00892 return 0;
00893 }
|
|
|
Definition at line 874 of file yemc.cc. 00875 {
00876 EMC_SPINDLE_ON emc_spindle_on_msg;
00877
00878 emc_spindle_on_msg.speed = -1;
00879 emc_spindle_on_msg.serial_number = ++emcCommandSerialNumber;
00880 emcCommandBuffer->write(emc_spindle_on_msg);
00881
00882 return 0;
00883 }
|
|
|
Definition at line 1097 of file yemc.cc. 01098 {
01099 EMC_TASK_PLAN_INIT task_plan_init_msg;
01100
01101 task_plan_init_msg.serial_number = ++emcCommandSerialNumber;
01102 emcCommandBuffer->write(task_plan_init_msg);
01103
01104 return 0;
01105 }
|
|
||||||||||||||||
|
Definition at line 810 of file yemc.cc. Referenced by emc_set_tool_offset(), and toolSetOffsetDoDone().
00811 {
00812 EMC_TOOL_SET_OFFSET emc_tool_set_offset_msg;
00813
00814 emc_tool_set_offset_msg.tool = tool;
00815 emc_tool_set_offset_msg.length = length;
00816 emc_tool_set_offset_msg.diameter = diameter;
00817 emc_tool_set_offset_msg.serial_number = ++emcCommandSerialNumber;
00818 emcCommandBuffer->write(emc_tool_set_offset_msg);
00819
00820 return 0;
00821 }
|
|
||||||||||||
|
Definition at line 1519 of file yemc.cc. Referenced by calibTabAction(), doFileEditDone(), doFileOpenDone(), doFileQuitDone(), fileEditTabAction(), fileOpenTabAction(), fileQuitTabAction(), loggingTabAction(), main(), timeoutCB(), and toolSetOffsetTabAction().
01520 {
01521 XtVaSetValues(w, XtNborderColor, pixel, NULL);
01522
01523 return 0;
01524 }
|
|
||||||||||||||||
|
Definition at line 1485 of file yemc.cc. Referenced by timeoutCB().
|
|
||||||||||||
|
Definition at line 1526 of file yemc.cc. Referenced by doJogSpeedDone(), downAction(), keyPressAction(), main(), timeoutCB(), and viewMenuSelect().
|
|
|
Definition at line 1538 of file yemc.cc. Referenced by timeoutCB().
01539 {
01540 XtVaSetValues(programText, XtNstring, text, NULL);
01541 return(0);
01542 }
|
|
||||||||||||||||
|
Definition at line 4023 of file yemc.cc. 04024 {
04025 char string[256]; // FIXME-- hardcoded value
04026
04027 switch ((int) client_data) {
04028 case 0: // Relative
04029 coords = COORD_RELATIVE;
04030 break;
04031
04032 case 1: // Machine
04033 coords = COORD_MACHINE;
04034 break;
04035
04036 // case 2 is separator
04037
04038 case 3: // Actual
04039 posDisplay = POS_DISPLAY_ACT;
04040 break;
04041
04042 case 4: // Commanded
04043 posDisplay = POS_DISPLAY_CMD;
04044 break;
04045
04046 // case 5 is separator
04047
04048 case 6: // World
04049 posFrame = POS_FRAME_WORLD;
04050 break;
04051
04052 case 7: // Joint
04053 posFrame = POS_FRAME_JOINT;
04054 break;
04055
04056 // case 8 is separator
04057
04058 case 9: // Calibration...
04059
04060 sprintf(string, "Axis %d Calibration", activeJoint);
04061 XtVaSetValues(calibLabel, XtNlabel, string, NULL);
04062
04063 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].cycleTime);
04064 XtVaSetValues(calibCycleTime, XtNstring, string, NULL);
04065
04066 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].p);
04067 XtVaSetValues(calibPGain, XtNstring, string, NULL);
04068 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].i);
04069 XtVaSetValues(calibIGain, XtNstring, string, NULL);
04070 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].d);
04071 XtVaSetValues(calibDGain, XtNstring, string, NULL);
04072
04073 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].ff0);
04074 XtVaSetValues(calibFF0Gain, XtNstring, string, NULL);
04075 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].ff1);
04076 XtVaSetValues(calibFF1Gain, XtNstring, string, NULL);
04077 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].ff2);
04078 XtVaSetValues(calibFF2Gain, XtNstring, string, NULL);
04079
04080 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].backlash);
04081 XtVaSetValues(calibBacklash, XtNstring, string, NULL);
04082 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].bias);
04083 XtVaSetValues(calibBias, XtNstring, string, NULL);
04084 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].maxError);
04085 XtVaSetValues(calibMaxError, XtNstring, string, NULL);
04086
04087 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].outputScale);
04088 XtVaSetValues(calibOutputScale, XtNstring, string, NULL);
04089 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].outputOffset);
04090 XtVaSetValues(calibOutputOffset, XtNstring, string, NULL);
04091
04092 sprintf(string, "%f", emcStatus->motion.axis[activeJoint].maxFerror);
04093 XtVaSetValues(calibFerror, XtNstring, string, NULL);
04094
04095 dialogPopup(NULL, calibShell, NULL);
04096 // trap window kill
04097 XSetWMProtocols(XtDisplay(topLevel), XtWindow(calibShell), &killAtom, 1);
04098 break;
04099
04100 case 10: // Logging...
04101 XtVaSetValues(loggingFile, XtNstring, saveLogFile, NULL);
04102 sprintf(string,
04103 saveLogType == EMC_LOG_TYPE_AXIS_POS ? "Axis Position" :
04104 saveLogType == EMC_LOG_TYPE_AXES_INPOS ? "All Input Positions" :
04105 saveLogType == EMC_LOG_TYPE_AXES_OUTPOS ? "All Output Positions" :
04106 saveLogType == EMC_LOG_TYPE_AXIS_VEL ? "Axis Velocity" :
04107 saveLogType == EMC_LOG_TYPE_AXES_FERROR ? "All Following Errors" :
04108 saveLogType == EMC_LOG_TYPE_TRAJ_POS ? "All Trajectory Points" :
04109 saveLogType == EMC_LOG_TYPE_TRAJ_VEL ? "All Trajectory Vels" :
04110 saveLogType == EMC_LOG_TYPE_TRAJ_ACC ? "All Trajectory Accels" :
04111 "(unknown)");
04112 XtVaSetValues(loggingTypeMenu, XtNlabel, string, NULL);
04113 sprintf(string, "%d", saveLogSize);
04114 XtVaSetValues(loggingSize, XtNstring, string, NULL);
04115 sprintf(string, "%d", saveLogSkip);
04116 XtVaSetValues(loggingSkip, XtNstring, string, NULL);
04117
04118 dialogPopup(NULL, loggingShell, NULL);
04119 // trap window kill
04120 XSetWMProtocols(XtDisplay(topLevel), XtWindow(loggingShell), &killAtom, 1);
04121 break;
04122
04123 default:
04124 break;
04125 }
04126 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 5365 of file yemc.cc. Referenced by main().
05370 {
05371 Widget *popup = new Widget; // this will be freed automatically at exit
05372 int t;
05373
05374 if (NULL != horiz)
05375 {
05376 if (NULL != vert)
05377 {
05378 *menu =
05379 XtVaCreateManagedWidget(label,
05380 menuButtonWidgetClass,
05381 which,
05382 XtNfromHoriz, horiz,
05383 XtNfromVert, vert,
05384 NULL);
05385 }
05386 else
05387 {
05388 *menu =
05389 XtVaCreateManagedWidget(label,
05390 menuButtonWidgetClass,
05391 which,
05392 XtNfromHoriz, horiz,
05393 NULL);
05394 }
05395 }
05396 else
05397 {
05398 if (NULL != vert)
05399 {
05400 *menu =
05401 XtVaCreateManagedWidget(label,
05402 menuButtonWidgetClass,
05403 which,
05404 XtNfromVert, vert,
05405 NULL);
05406 }
05407 else
05408 {
05409 *menu =
05410 XtVaCreateManagedWidget(label,
05411 menuButtonWidgetClass,
05412 which,
05413 NULL);
05414 }
05415 }
05416
05417 *popup =
05418 XtVaCreatePopupShell("menu", // need to hard-code "menu" here
05419 simpleMenuWidgetClass,
05420 *menu,
05421 NULL);
05422
05423 // set the menu item names
05424 for (t = 0; labels[t] != NULL; t++)
05425 {
05426 if (labels[t][0] == '-' &&
05427 labels[t][1] == 0)
05428 {
05429 // it's a dash
05430 XtAddCallback(XtVaCreateManagedWidget(labels[t],
05431 smeLineObjectClass,
05432 *popup,
05433 NULL),
05434 XtNcallback, func, (XtPointer) t);
05435
05436 }
05437 else
05438 {
05439 XtAddCallback(XtVaCreateManagedWidget(labels[t],
05440 smeBSBObjectClass,
05441 *popup,
05442 NULL),
05443 XtNcallback, func, (XtPointer) t);
05444 }
05445 }
05446 return(0);
05447 }
|
|
||||||||||||||||
|
Definition at line 4227 of file yemc.cc. 04228 {
04229 switch ((int) client_data) {
04230 case 0:
04231 sendSpindleForward();
04232 break;
04233
04234 case 1:
04235 sendSpindleReverse();
04236 break;
04237
04238 case 2:
04239 sendSpindleOff();
04240 break;
04241
04242 default:
04243 break;
04244 }
04245 }
|
|
||||||||||||||||
|
Definition at line 4149 of file yemc.cc. 04150 {
04151 switch ((int) client_data) {
04152 case 0:
04153 sendEstop();
04154 break;
04155
04156 case 1:
04157 sendEstopReset();
04158 break;
04159
04160 // case 2 is separator
04161
04162 case 3:
04163 sendMachineOn();
04164 break;
04165
04166 case 4:
04167 sendMachineOff();
04168 break;
04169
04170 default:
04171 break;
04172 }
04173 }
|
|
||||||||||||||||
|
Definition at line 1495 of file yemc.cc. Referenced by main().
01496 {
01497 XrmValue from, to;
01498
01499 from.addr = string;
01500 from.size = strlen(string) + 1;
01501 to.addr = (char *) pixel;
01502 to.size = sizeof(Pixel);
01503
01504 if (False == XtConvertAndStore(w, XtRString, &from, XtRPixel, &to))
01505 return -1;
01506 return 0;
01507 }
|
|
||||||||||||
|
Definition at line 4477 of file yemc.cc. 04478 {
04479 double now;
04480 char string[256]; // FIXME-- hardcoded
04481 int t;
04482 unsigned char changedPosDisplayType = 0;
04483 unsigned char changedCoordType = 0;
04484 unsigned char changedPosFrameType = 0;
04485 int code;
04486 int programActiveLine;
04487 int programTopLine;
04488 char mdiCodes[256]; // FIXME-- hardcoded
04489 int axis;
04490 EmcPose offsetPose;
04491
04492 // set the time
04493 now = etime();
04494
04495 // read the EMC status
04496 if (0 != updateStatus()) {
04497 sprintf(error_string, "bad status");
04498 }
04499
04500 // read the EMC errors
04501 if (0 != updateError()) {
04502 sprintf(error_string, "bad status");
04503 }
04504
04505 // print any result stored by updateError() in error_string
04506 if (error_string[0] != 0) {
04507 popupError(error_string);
04508 error_string[0] = 0;
04509 }
04510
04511 // handle key up events
04512 if (keyReleaseOut &&
04513 now - keyReleaseTime > 0.100) {
04514 // key up event has occurred
04515 keyReleaseOut = 0;
04516 keyReleaseAction(keyReleaseState, keyReleaseKeycode);
04517 }
04518
04519 // handle button press repeats
04520
04521 if (jogSpeedChange < 0) {
04522 if (--jogSpeed <= 0) {
04523 jogSpeed = 1;
04524 }
04525 sprintf(string, "%d", jogSpeed);
04526 setLabel(jogSpeedLabel, string);
04527 redraw = 1;
04528 }
04529 else if (jogSpeedChange > 0) {
04530 if (++jogSpeed > maxJogSpeed) {
04531 jogSpeed = maxJogSpeed;
04532 }
04533 sprintf(string, "%d", jogSpeed);
04534 setLabel(jogSpeedLabel, string);
04535 redraw = 1;
04536 }
04537
04538 if (feedOverrideChange < 0) {
04539 if (--feedOverrideDelayCount < 0) {
04540 if ((feedOverride -= 10) < 0) {
04541 feedOverride = 0;
04542 }
04543 sprintf(string, "%3d", feedOverride);
04544 setLabel(feedOverrideLabel, string);
04545 feedOverrideDelayCount = FEED_OVERRIDE_DELAY_COUNT;
04546
04547 redraw = 1;
04548 }
04549 }
04550 else if (feedOverrideChange > 0) {
04551 if (--feedOverrideDelayCount < 0) {
04552 if ((feedOverride += 10) > maxFeedOverride) {
04553 feedOverride = maxFeedOverride;
04554 }
04555 sprintf(string, "%3d", feedOverride);
04556 setLabel(feedOverrideLabel, string);
04557 feedOverrideDelayCount = FEED_OVERRIDE_DELAY_COUNT;
04558 redraw = 1;
04559 }
04560 }
04561 else {
04562 // we're not changing it, so update it from EMC value
04563 feedOverride = (int) (emcStatus->motion.traj.scale * 100.0 + 0.5);
04564 if (feedOverride != oldFeedOverride) {
04565 oldFeedOverride = feedOverride;
04566 sprintf(string, "%3d", feedOverride);
04567 setLabel(feedOverrideLabel, string);
04568 redraw = 1;
04569 }
04570 }
04571
04572 // handle internal status changes
04573
04574 // flag changes in display types
04575 if (posDisplay != oldPosDisplay) {
04576 changedPosDisplayType = 1;
04577 oldPosDisplay = posDisplay;
04578 }
04579 if (coords != oldCoords) {
04580 changedCoordType = 1;
04581 oldCoords = coords;
04582 }
04583 if (posFrame != oldPosFrame) {
04584 changedPosFrameType = 1;
04585 oldPosFrame = posFrame;
04586 }
04587
04588 if (posFrame == POS_FRAME_JOINT) {
04589 if (activeJoint != oldActiveJoint ||
04590 changedPosFrameType) {
04591 /* first clear the border for them all */
04592 for (axis = 0; axis < numPosLabels; axis++) {
04593 setBorderColor(posLabel[axis], posLabelBackground[axis]);
04594 }
04595 /* now set the border for the selected one */
04596 setBorderColor(posLabel[activeJoint], posLabelBorderColor[activeJoint]);
04597 redraw = 1;
04598
04599 oldActiveJoint = activeJoint;
04600 }
04601 }
04602 else {
04603 if (activeCoord != oldActiveCoord ||
04604 changedPosFrameType) {
04605 /* first clear the border for them all */
04606 for (axis = 0; axis < numPosLabels; axis++) {
04607 setBorderColor(posLabel[axis], posLabelBackground[axis]);
04608 }
04609 /* now set the border for the selected one */
04610 setBorderColor(posLabel[activeCoord], posLabelBorderColor[activeCoord]);
04611 redraw = 1;
04612
04613 oldActiveCoord = activeCoord;
04614 }
04615 }
04616
04617 if (jogIncrement != oldJogIncrement) {
04618 if (jogIncrement > 0.0) {
04619 sprintf(string, "%1.4f", jogIncrement);
04620 }
04621 else {
04622 sprintf(string, "continuous");
04623 }
04624 setLabel(jogIncrementMenu, string);
04625 redraw = 1;
04626
04627 oldJogIncrement = jogIncrement;
04628 }
04629
04630 // handle EMC status changes
04631 /*
04632 Note that changing the label changes the size of the label,
04633 but not the size of the enclosing box. So, the initial label
04634 width will set the size of the enclosing box, but won't have
04635 any other effect during the life of the label. For this reason
04636 label widths for dynamically labeled labels are not specified,
04637 and they are set manually before the labels are realized to a
04638 blank string the same width of the labels. If you use proportional
04639 fonts for the labels, they will change in size.
04640 */
04641
04642 if (diagnosticsIsPopped) {
04643 if (emcStatus->task.heartbeat != oldTaskHeartbeat) {
04644 sprintf(string, "%ld %ld %d %d %d",
04645 emcStatus->task.heartbeat,
04646 emcStatus->task.command_type,
04647 emcStatus->task.echo_serial_number,
04648 emcStatus->task.status,
04649 emcStatus->task.execState);
04650 setLabel(diagnosticsTaskHB, string);
04651 redraw = 1;
04652
04653 oldTaskHeartbeat = emcStatus->task.heartbeat;
04654 }
04655
04656 if (emcStatus->io.heartbeat != oldIoHeartbeat) {
04657 sprintf(string, "%ld %ld %d %d",
04658 emcStatus->io.heartbeat,
04659 emcStatus->io.command_type,
04660 emcStatus->io.echo_serial_number,
04661 emcStatus->io.status);
04662 setLabel(diagnosticsIoHB, string);
04663 redraw = 1;
04664
04665 oldIoHeartbeat = emcStatus->io.heartbeat;
04666 }
04667
04668 if (emcStatus->motion.heartbeat != oldMotionHeartbeat) {
04669 sprintf(string, "%ld %ld %d %d",
04670 emcStatus->motion.heartbeat,
04671 emcStatus->motion.command_type,
04672 emcStatus->motion.echo_serial_number,
04673 emcStatus->motion.status);
04674 setLabel(diagnosticsMotionHB, string);
04675 redraw = 1;
04676
04677 oldMotionHeartbeat = emcStatus->motion.heartbeat;
04678 }
04679
04680 if (emcStatus->motion.axis[activeJoint].ferrorHighMark !=
04681 oldAxisFerror[activeJoint]) {
04682 sprintf(string, "%.3f", emcStatus->motion.axis[activeJoint].ferrorHighMark);
04683 setLabel(diagnosticsFerror, string);
04684 redraw = 1;
04685
04686 oldAxisFerror[activeJoint] = emcStatus->motion.axis[activeJoint].ferrorHighMark;
04687 }
04688 }
04689
04690 if (emcStatus->task.state != oldState) {
04691 switch(emcStatus->task.state) {
04692 case EMC_TASK_STATE_OFF:
04693 sprintf(string, "OFF");
04694 break;
04695 case EMC_TASK_STATE_ON:
04696 sprintf(string, "ON");
04697 break;
04698 case EMC_TASK_STATE_ESTOP:
04699 sprintf(string, "ESTOP");
04700 break;
04701 case EMC_TASK_STATE_ESTOP_RESET:
04702 sprintf(string, "ESTOP RESET");
04703 break;
04704 default:
04705 sprintf(string, "?");
04706 break;
04707 }
04708
04709 setLabel(stateMenu, string);
04710 redraw = 1;
04711
04712 oldState = emcStatus->task.state;
04713 }
04714
04715 if (emcStatus->task.mode != oldMode) {
04716 switch(emcStatus->task.mode) {
04717 case EMC_TASK_MODE_MANUAL:
04718 sprintf(string, "MANUAL");
04719 break;
04720 case EMC_TASK_MODE_AUTO:
04721 sprintf(string, "AUTO");
04722 break;
04723 case EMC_TASK_MODE_MDI:
04724 sprintf(string, "MDI");
04725 break;
04726 default:
04727 sprintf(string, "?");
04728 break;
04729 }
04730
04731 setLabel(modeMenu, string);
04732 redraw = 1;
04733
04734 oldMode = emcStatus->task.mode;
04735 }
04736
04737 if (emcStatus->io.coolant.mist != oldMist) {
04738 if (emcStatus->io.coolant.mist) {
04739 sprintf(string, "MIST ON");
04740 }
04741 else {
04742 sprintf(string, "MIST OFF");
04743 }
04744
04745 setLabel(mistMenu, string);
04746 redraw = 1;
04747
04748 oldMist = emcStatus->io.coolant.mist;
04749 }
04750
04751 if (emcStatus->io.coolant.flood != oldFlood) {
04752 if (emcStatus->io.coolant.flood) {
04753 sprintf(string, "FLOOD ON");
04754 }
04755 else {
04756 sprintf(string, "FLOOD OFF");
04757 }
04758
04759 setLabel(floodMenu, string);
04760 redraw = 1;
04761
04762 oldFlood = emcStatus->io.coolant.flood;
04763 }
04764
04765 if (emcStatus->io.spindle.increasing != oldSpindleIncreasing) {
04766 if (emcStatus->io.spindle.increasing > 0) {
04767 sprintf(string, "SPINDLE INC");
04768 }
04769 else if (emcStatus->io.spindle.increasing < 0) {
04770 sprintf(string, "SPINDLE DEC");
04771 }
04772 else {
04773 // spindle constant-- flag invalid oldSpindleDirection
04774 // so code below will pick up a redraw
04775 oldSpindleDirection = -2;
04776 }
04777
04778 setLabel(spindleMenu, string);
04779 redraw = 1;
04780
04781 oldSpindleIncreasing = emcStatus->io.spindle.increasing;
04782 }
04783
04784 if (emcStatus->io.spindle.direction != oldSpindleDirection) {
04785 if (emcStatus->io.spindle.direction > 0) {
04786 sprintf(string, "SPINDLE FWD");
04787 XtSetSensitive(spindleDecLabel, True);
04788 XtSetSensitive(spindleIncLabel, True);
04789 }
04790 else if (emcStatus->io.spindle.direction < 0) {
04791 sprintf(string, "SPINDLE REV");
04792 XtSetSensitive(spindleDecLabel, True);
04793 XtSetSensitive(spindleIncLabel, True);
04794 }
04795 else {
04796 sprintf(string, "SPINDLE OFF");
04797 XtSetSensitive(spindleDecLabel, False);
04798 XtSetSensitive(spindleIncLabel, False);
04799 }
04800
04801 setLabel(spindleMenu, string);
04802 redraw = 1;
04803
04804 oldSpindleDirection = emcStatus->io.spindle.direction;
04805 }
04806
04807 if (emcStatus->io.spindle.brake != oldBrake) {
04808 if (emcStatus->io.spindle.brake) {
04809 sprintf(string, "BRAKE ON");
04810 }
04811 else {
04812 sprintf(string, "BRAKE OFF");
04813 }
04814
04815 setLabel(brakeMenu, string);
04816 redraw = 1;
04817
04818 oldBrake = emcStatus->io.spindle.brake;
04819 }
04820
04821 if (emcStatus->io.tool.toolInSpindle != oldTool) {
04822 sprintf(string, "%d", emcStatus->io.tool.toolInSpindle);
04823 setLabel(toolNumberFormName, string);
04824
04825 redraw = 1;
04826
04827 oldTool = emcStatus->io.tool.toolInSpindle;
04828 }
04829
04830 if (emcStatus->task.toolOffset.tran.z != oldToolOffset) {
04831 sprintf(string, "%.4f", emcStatus->task.toolOffset.tran.z);
04832 setLabel(toolOffsetFormName, string);
04833
04834 redraw = 1;
04835
04836 oldToolOffset = emcStatus->task.toolOffset.tran.z;
04837 }
04838
04839 // redraw label for types of position displayed, if any have changed
04840 if (changedPosDisplayType ||
04841 changedCoordType ||
04842 changedPosFrameType) {
04843 sprintf(string, "%s %s %s",
04844 (posDisplay == POS_DISPLAY_CMD) ? "Commanded" : "Actual",
04845 (coords == COORD_MACHINE) ? "Machine" : "Relative",
04846 (posFrame == POS_FRAME_WORLD) ? "World" : "Joint");
04847 setLabel(positionTypeFormName, string);
04848 redraw = 1;
04849 }
04850
04851 // check if we changed between machine and relative coords. If so,
04852 // redraw the work offset string.
04853 if (changedCoordType) {
04854 if (coords == COORD_MACHINE) {
04855 // switched to machine display, so blank out offsets
04856 string[0] = 0;
04857 setLabel(workOffsetFormName, string);
04858 redraw = 1;
04859 }
04860 else {
04861 // switched to relative display, so redisplay offsets
04862 sprintf(string, "X%.4f Y%.4f Z%.4f",
04863 emcStatus->task.origin.tran.x,
04864 emcStatus->task.origin.tran.y,
04865 emcStatus->task.origin.tran.z);
04866 setLabel(workOffsetFormName, string);
04867 redraw = 1;
04868 }
04869 }
04870
04871 // check if controller offset changed
04872 if (emcStatus->task.origin.tran.x != oldOrigin.tran.x ||
04873 emcStatus->task.origin.tran.y != oldOrigin.tran.y ||
04874 emcStatus->task.origin.tran.z != oldOrigin.tran.z ||
04875 emcStatus->task.origin.a != oldOrigin.a ||
04876 emcStatus->task.origin.b != oldOrigin.b ||
04877 emcStatus->task.origin.c != oldOrigin.c
04878 ) {
04879 if (coords == COORD_MACHINE) {
04880 // display offsets changed, but we're not displaying them
04881 }
04882 else {
04883 // display offsets changed and we are displaying them
04884 // FIXME-- tran only
04885 sprintf(string, "X%.4f Y%.4f Z%.4f",
04886 emcStatus->task.origin.tran.x,
04887 emcStatus->task.origin.tran.y,
04888 emcStatus->task.origin.tran.z);
04889 setLabel(workOffsetFormName, string);
04890 redraw = 1;
04891
04892 oldOrigin = emcStatus->task.origin;
04893 }
04894 }
04895
04896 // compute new posLabel[] numbers
04897 if (posFrame == POS_FRAME_WORLD) {
04898 if (coords == COORD_MACHINE) {
04899 if (posDisplay == POS_DISPLAY_ACT) {
04900 mapPoseToLabels(emcStatus->motion.traj.actualPosition);
04901 }
04902 else {
04903 mapPoseToLabels(emcStatus->motion.traj.position);
04904 }
04905 }
04906 else {
04907 // COORD_RELATIVE-- need to subtract off offsets
04908 // FIXME-- this just does the tran portion, no support
04909 // for quaternion offsets yet
04910 if (posDisplay == POS_DISPLAY_ACT) {
04911 offsetPose.tran.x = emcStatus->motion.traj.actualPosition.tran.x -
04912 emcStatus->task.origin.tran.x;
04913 offsetPose.tran.y = emcStatus->motion.traj.actualPosition.tran.y -
04914 emcStatus->task.origin.tran.y;
04915 offsetPose.tran.z = emcStatus->motion.traj.actualPosition.tran.z -
04916 emcStatus->task.origin.tran.z -
04917 emcStatus->task.toolOffset.tran.z;
04918 offsetPose.a = emcStatus->motion.traj.actualPosition.a -
04919 emcStatus->task.origin.a;
04920 offsetPose.b = emcStatus->motion.traj.actualPosition.b -
04921 emcStatus->task.origin.b;
04922 offsetPose.c = emcStatus->motion.traj.actualPosition.c -
04923 emcStatus->task.origin.c;
04924 mapPoseToLabels(offsetPose);
04925 }
04926 else {
04927 offsetPose.tran.x = emcStatus->motion.traj.position.tran.x -
04928 emcStatus->task.origin.tran.x;
04929 offsetPose.tran.y = emcStatus->motion.traj.position.tran.y -
04930 emcStatus->task.origin.tran.y;
04931 offsetPose.tran.z = emcStatus->motion.traj.position.tran.z -
04932 emcStatus->task.origin.tran.z -
04933 emcStatus->task.toolOffset.tran.z;
04934 offsetPose.a = emcStatus->motion.traj.position.a -
04935 emcStatus->task.origin.a;
04936 offsetPose.b = emcStatus->motion.traj.position.b -
04937 emcStatus->task.origin.b;
04938 offsetPose.c = emcStatus->motion.traj.position.c -
04939 emcStatus->task.origin.c;
04940 mapPoseToLabels(offsetPose);
04941 }
04942 }
04943 }
04944 else {
04945 // joint coordinates
04946 if (posDisplay == POS_DISPLAY_ACT) {
04947 // actual joints
04948 for (t = 0; t < numJoints; t++) {
04949 newPosLabelValue[t] = emcStatus->motion.axis[t].input;
04950 }
04951 }
04952 else {
04953 // commanded joints
04954 for (t = 0; t < numJoints; t++) {
04955 newPosLabelValue[t] = emcStatus->motion.axis[t].setpoint;
04956 }
04957 }
04958 }
04959
04960 for (t = 0; t < numPosLabels; t++) {
04961 if (newPosLabelValue[t] != oldPosLabelValue[t] ||
04962 changedPosFrameType) {
04963 if (posFrame == POS_FRAME_WORLD) {
04964 // use posLabelWorld[] array of {'X', 'Y'} etc.
04965 // and blank out unused coords
04966 if (t < numCoords) {
04967 sprintf(string, "%c %9.4f", posLabelWorld[t], newPosLabelValue[t]);
04968 }
04969 else {
04970 string[0] = 0;
04971 }
04972 }
04973 else {
04974 // use joint numbering from posLabelJoint[] array of {'1', '2'} etc.
04975 // and blank out unused axes
04976 if (t < numJoints) {
04977 sprintf(string, "%c %9.4f", posLabelJoint[t], newPosLabelValue[t]);
04978 }
04979 else {
04980 string[0] = 0;
04981 }
04982 }
04983 setLabel(posLabel[t], string);
04984 redraw = 1;
04985
04986 oldPosLabelValue[t] = newPosLabelValue[t];
04987 }
04988 }
04989
04990 // fill in the logging status
04991 if (oldLogOpen != emcStatus->logOpen) {
04992 strcpy(string, emcStatus->logOpen ? "Open" : "Closed");
04993 setLabel(loggingStatusOpenLabel, string);
04994 redraw = 1;
04995
04996 oldLogOpen = emcStatus->logOpen;
04997 }
04998
04999 if (oldLogStarted != emcStatus->logStarted) {
05000 strcpy(string, emcStatus->logStarted ? "Logging" : "Not Logging");
05001 setLabel(loggingStatusStartedLabel, string);
05002 redraw = 1;
05003
05004 oldLogStarted = emcStatus->logStarted;
05005 }
05006
05007 if (oldLogPoints != emcStatus->logPoints) {
05008 sprintf(string, "%d", emcStatus->logPoints);
05009 setLabel(loggingStatusPointsLabel, string);
05010 redraw = 1;
05011
05012 oldLogPoints = emcStatus->logPoints;
05013 }
05014
05015 // fill in the active G codes
05016 active_g_codes_string[0] = 0;
05017 for (t = 1; t < EMC_TASK_ACTIVE_G_CODES; t++) {
05018 code = emcStatus->task.activeGCodes[t];
05019 if (code == -1) {
05020 continue;
05021 }
05022 if (code % 10) {
05023 sprintf(string, "G%.1f ", (double) code / 10.0);
05024 }
05025 else {
05026 sprintf(string, "G%d ", code / 10);
05027 }
05028 strcat(active_g_codes_string, string);
05029 }
05030
05031 // fill in the active M codes, settings too
05032 active_m_codes_string[0] = 0;
05033 for (t = 1; t < EMC_TASK_ACTIVE_M_CODES; t++) {
05034 code = emcStatus->task.activeMCodes[t];
05035 if (code == -1) {
05036 continue;
05037 }
05038 sprintf(string, "M%d ", code);
05039 strcat(active_m_codes_string, string);
05040 }
05041
05042 sprintf(mdiCodes, "%s %s", active_g_codes_string, active_m_codes_string);
05043
05044 // fill in F and S codes also
05045 sprintf(string, " F%.0f", emcStatus->task.activeSettings[1]);
05046 strcat(mdiCodes, string);
05047 sprintf(string, " S%.0f", emcStatus->task.activeSettings[2]);
05048 strcat(mdiCodes, string);
05049
05050 if (0 != strcmp(oldMdiCodes, mdiCodes)) {
05051 XtVaSetValues(mdiCodesLabel, XtNlabel, mdiCodes, NULL);
05052 strcpy(oldMdiCodes, mdiCodes);
05053 }
05054
05055 // program text updating
05056
05057 if (0 != emcStatus->task.file[0] &&
05058 0 != strcmp(programFile, emcStatus->task.file)) {
05059 // new program has been opened-- open it here
05060
05061 fwClose(&programFw);
05062 oldProgramActiveLine = -1;
05063
05064 if (0 == fwOpen(&programFw, emcStatus->task.file)) {
05065 // opened successfully locally
05066 // save it to run again
05067 strcpy(lastProgramFile, emcStatus->task.file);
05068 // set string for label
05069 strcpy(string, emcStatus->task.file);
05070 }
05071 else {
05072 // couldn't open it locally
05073 // save it to run again, even though we can't see it
05074 strcpy(lastProgramFile, emcStatus->task.file);
05075 // set string for label
05076 sprintf(string, "(%s not found)", emcStatus->task.file);
05077 }
05078
05079 // set the program label
05080 setLabel(programFormName, string);
05081 redraw = 1;
05082
05083 strcpy(programFile, emcStatus->task.file);
05084 }
05085
05086 // compose program state string
05087 switch (emcStatus->task.interpState) {
05088 case EMC_TASK_INTERP_IDLE:
05089 strcpy(string, "Idle");
05090 break;
05091
05092 case EMC_TASK_INTERP_READING:
05093 case EMC_TASK_INTERP_WAITING:
05094 strcpy(string, "Running");
05095 break;
05096
05097 case EMC_TASK_INTERP_PAUSED:
05098 strcpy(string, "PAUSED");
05099 break;
05100
05101 default:
05102 strcpy(string, "(Idle)"); // shouldn't get here; parens for debug
05103 break;
05104 }
05105 // and print it, if new
05106 if (strcmp(string, oldProgramString)) {
05107 setLabel(programFormState, string);
05108 redraw = 1;
05109
05110 strcpy(oldProgramString, string);
05111 }
05112
05113 // print active line and next few in window
05114
05115 if (programStartLineLast < 0 ||
05116 emcStatus->task.readLine < programStartLineLast) {
05117 // controller is skipping lines
05118 programActiveLine = emcStatus->task.readLine;
05119 }
05120 else { // controller is not skipping lines
05121 if (emcStatus->task.currentLine > 0) {
05122 if (emcStatus->task.motionLine > 0 &&
05123 emcStatus->task.motionLine < emcStatus->task.currentLine) {
05124 // active line is the motion line, which lags
05125 programActiveLine = emcStatus->task.motionLine;
05126 }
05127 else {
05128 // active line is the current line-- no motion lag
05129 programActiveLine = emcStatus->task.currentLine;
05130 }
05131 }
05132 else {
05133 // no active line at all
05134 programActiveLine = 0;
05135 }
05136 } // end of else controller is not skipping lines
05137
05138 if (programActiveLine != oldProgramActiveLine) {
05139 programTopLine = programActiveLine - 2;
05140 if (programTopLine < 1) {
05141 programTopLine = 1;
05142 }
05143 fwSyncLine(&programFw, programTopLine);
05144 fwString(&programFw, programFwString);
05145 setProgramText(programFwString);
05146 highlightProgramText(programFwString, programActiveLine - programTopLine);
05147 redraw = 1;
05148
05149 oldProgramActiveLine = programActiveLine;
05150 }
05151
05152 // set label colors: do red for limit first
05153 // FIXME-- this should only be done for joint frame; what do
05154 // we do for world frame?
05155 for (t = 0; t < numPosLabels; t++) {
05156 if (emcStatus->motion.axis[t].minHardLimit ||
05157 emcStatus->motion.axis[t].minSoftLimit ||
05158 emcStatus->motion.axis[t].maxSoftLimit ||
05159 emcStatus->motion.axis[t].maxHardLimit) {
05160 if (posColor[t] != pixelRed) {
05161 setColor(posLabel[t], pixelRed, 1);
05162 posColor[t] = pixelRed;
05163 }
05164 }
05165 else if (emcStatus->motion.axis[t].homed &&
05166 posColor[t] != pixelGreen) {
05167 setColor(posLabel[t], pixelGreen, 1);
05168 posColor[t] = pixelGreen;
05169 }
05170 else if (! emcStatus->motion.axis[t].homed &&
05171 posColor[t] != pixelYellow) {
05172 setColor(posLabel[t], pixelYellow, 1);
05173 posColor[t] = pixelYellow;
05174 }
05175 }
05176
05177 // do menu dimming
05178
05179 if (emcStatus->task.state != EMC_TASK_STATE_ON) {
05180 // if not on, dim all menus
05181 enableAuxMenus(False);
05182 enableManualMenus(False);
05183 enableAutoMenus(False);
05184 enableMdiMenus(False);
05185 }
05186 else {
05187 // it's on, so only enable according to mode
05188 if (emcStatus->task.mode == EMC_TASK_MODE_MANUAL) {
05189 enableAuxMenus(True);
05190 enableAutoMenus(False);
05191 enableMdiMenus(False);
05192 enableManualMenus(True);
05193 }
05194 else if (emcStatus->task.mode == EMC_TASK_MODE_AUTO) {
05195 if (emcStatus->task.interpState == EMC_TASK_INTERP_IDLE ||
05196 emcStatus->task.interpState == EMC_TASK_INTERP_PAUSED) {
05197 enableAuxMenus(True);
05198 }
05199 else {
05200 enableAuxMenus(False);
05201 }
05202 enableMdiMenus(False);
05203 enableManualMenus(False);
05204 enableAutoMenus(True);
05205 }
05206 else if (emcStatus->task.mode == EMC_TASK_MODE_MDI) {
05207 enableAuxMenus(True);
05208 enableManualMenus(False);
05209 enableAutoMenus(False);
05210 enableMdiMenus(True);
05211 }
05212 }
05213
05214 // flush changes now if necessary, don't wait for event
05215 if (redraw) {
05216 XFlush(XtDisplay(topForm));
05217 redraw = 0;
05218 }
05219
05220 // re-register this proc for the timeout
05221 XtAppAddTimeOut(app_context, UPDATE_MSECS, timeoutCB, NULL);
05222
05223 return;
05224 }
|
|
||||||||||||||||
|
Definition at line 2435 of file yemc.cc. 02436 {
02437 toolSetOffsetDoDone(0);
02438 }
|
|
|
Definition at line 2378 of file yemc.cc. Referenced by toolSetOffsetCancelCB(), toolSetOffsetDoneCB(), and toolSetOffsetReturnAction().
02379 {
02380 String str1, str2, str3;
02381 int tool;
02382 double length;
02383 double diameter;
02384
02385 if (done) {
02386 XtVaGetValues(toolSetOffsetTool, XtNstring, &str1, NULL);
02387 XtVaGetValues(toolSetOffsetLength, XtNstring, &str2, NULL);
02388 XtVaGetValues(toolSetOffsetDiameter, XtNstring, &str3, NULL);
02389
02390 if (1 == sscanf(str1, "%d", &tool) &&
02391 1 == sscanf(str2, "%lf", &length) &&
02392 1 == sscanf(str3, "%lf", &diameter)) {
02393 sendToolSetOffset(tool, length, diameter);
02394 }
02395 }
02396
02397 XtPopdown(toolSetOffsetShell);
02398 }
|
|
||||||||||||||||
|
Definition at line 2430 of file yemc.cc. 02431 {
02432 toolSetOffsetDoDone(1);
02433 }
|
|
||||||||||||||||||||
|
Definition at line 2420 of file yemc.cc. 02421 {
02422 if (toolSetOffsetReturnIsDone) {
02423 toolSetOffsetDoDone(1);
02424 }
02425 else {
02426 toolSetOffsetDoDone(0);
02427 }
02428 }
|
|
||||||||||||||||||||
|
Definition at line 5258 of file yemc.cc. 05259 {
05260 XtPopdown(toolSetOffsetShell);
05261 }
|
|
||||||||||||||||||||
|
Definition at line 2440 of file yemc.cc. 02441 {
02442 if (toolSetOffsetReturnIsDone) {
02443 setBorderColor(toolSetOffsetDone, toolSetOffsetFormBorderColor);
02444 setBorderColor(toolSetOffsetCancel, pixelRed);
02445 toolSetOffsetReturnIsDone = 0;
02446 }
02447 else {
02448 setBorderColor(toolSetOffsetDone, pixelRed);
02449 setBorderColor(toolSetOffsetCancel, toolSetOffsetFormBorderColor);
02450 toolSetOffsetReturnIsDone = 1;
02451 }
02452 }
|
|
||||||||||||||||||||
|
Definition at line 2400 of file yemc.cc. 02401 {
02402 char string[256];
02403
02404 sprintf(string, "%d", emcStatus->io.tool.toolInSpindle);
02405 XtVaSetValues(toolSetOffsetTool, XtNstring, string, NULL);
02406 sprintf(string, "%f",
02407 emcStatus->motion.traj.actualPosition.tran.z -
02408 emcStatus->task.origin.tran.z);
02409 XtVaSetValues(toolSetOffsetLength, XtNstring, string, NULL);
02410 XtVaSetValues(toolSetOffsetDiameter, XtNstring, "0.0", NULL);
02411
02412 dialogPopup(NULL, toolSetOffsetShell, NULL);
02413 // trap window kill
02414 XSetWMProtocols(XtDisplay(topLevel), XtWindow(toolSetOffsetShell), &killAtom, 1);
02415 }
|
|
||||||||||||||||
|
Definition at line 1923 of file yemc.cc. 01924 {
01925 doToolTableDone(0);
01926 }
|
|
||||||||||||||||
|
Definition at line 1918 of file yemc.cc. 01919 {
01920 doToolTableDone(1);
01921 }
|
|
||||||||||||||||||||
|
Definition at line 5252 of file yemc.cc. 05253 {
05254 XtPopdown(toolTableShell);
05255 destroyToolTableShell();
05256 }
|
|
||||||||||||||||||||
|
Definition at line 5226 of file yemc.cc. 05227 {
05228 quit();
05229 }
|
|
||||||||||||||||||||
|
Definition at line 2718 of file yemc.cc. 02722 {
02723 int axis;
02724
02725 for (axis = 0; axis < numPosLabels; axis++) {
02726 if (w == posLabel[axis]) {
02727 return;
02728 }
02729 }
02730
02731 if (w == spindleIncLabel) {
02732 sendSpindleConstant();
02733 }
02734 else if (w == spindleDecLabel) {
02735 sendSpindleConstant();
02736 }
02737 else if (w == jogMinusLabel) {
02738 // only stop it if it's continuous jogging
02739 if (jogIncrement <= 0.0) {
02740 sendJogStop(axisJogging);
02741 }
02742 }
02743 else if (w == jogPlusLabel) {
02744 // only stop it if it's continuous jogging
02745 if (jogIncrement <= 0.0) {
02746 sendJogStop(axisJogging);
02747 }
02748 }
02749 else if (w == jogSpeedDecLabel) {
02750 jogSpeedChange = 0;
02751 }
02752 else if (w == jogSpeedIncLabel) {
02753 jogSpeedChange = 0;
02754 }
02755 else if (w == feedOverrideDecLabel) {
02756 feedOverrideChange = 0;
02757 sendFeedOverride((double) feedOverride / 100.0);
02758 }
02759 else if (w == feedOverrideIncLabel) {
02760 feedOverrideChange = 0;
02761 sendFeedOverride((double) feedOverride / 100.0);
02762 }
02763 else {
02764 printf("up\n");
02765 }
02766 }
|
|
|
Definition at line 5487 of file yemc.cc. Referenced by iniLoad().
05488 {
05489 char *ptr = string;
05490
05491 while (*ptr != 0)
05492 {
05493 *ptr = toupper(*ptr);
05494 ptr++;
05495 }
05496
05497 return string;
05498 }
|
|
|
Definition at line 176 of file yemc.cc. 00177 {
00178 NMLTYPE type;
00179
00180 if (0 == emcErrorBuffer ||
00181 ! emcErrorBuffer->valid())
00182 {
00183 return -1;
00184 }
00185
00186 switch (type = emcErrorBuffer->read())
00187 {
00188 case -1:
00189 // error reading channel
00190 return -1;
00191 break;
00192
00193 case 0:
00194 // nothing new
00195 error_string[0] = 0;
00196 break;
00197
00198 case EMC_OPERATOR_ERROR_TYPE:
00199 strncpy(error_string,
00200 ((EMC_OPERATOR_ERROR *) (emcErrorBuffer->get_address()))->error,
00201 EMC_OPERATOR_ERROR_LEN - 1);
00202 error_string[EMC_OPERATOR_ERROR_LEN - 1] = 0;
00203 break;
00204
00205 case EMC_OPERATOR_TEXT_TYPE:
00206 strncpy(error_string,
00207 ((EMC_OPERATOR_TEXT *) (emcErrorBuffer->get_address()))->text,
00208 EMC_OPERATOR_ERROR_LEN - 1);
00209 error_string[EMC_OPERATOR_ERROR_LEN - 1] = 0;
00210 break;
00211
00212 case EMC_OPERATOR_DISPLAY_TYPE:
00213 strncpy(error_string,
00214 ((EMC_OPERATOR_DISPLAY *) (emcErrorBuffer->get_address()))->display,
00215 EMC_OPERATOR_ERROR_LEN - 1);
00216 error_string[EMC_OPERATOR_ERROR_LEN - 1] = 0;
00217 break;
00218
00219 case NML_ERROR_TYPE:
00220 strncpy(error_string,
00221 ((NML_ERROR *) (emcErrorBuffer->get_address()))->error,
00222 NML_ERROR_LEN - 1);
00223 error_string[NML_ERROR_LEN - 1] = 0;
00224 break;
00225
00226 case NML_TEXT_TYPE:
00227 strncpy(error_string,
00228 ((NML_TEXT *) (emcErrorBuffer->get_address()))->text,
00229 NML_ERROR_LEN - 1);
00230 error_string[NML_ERROR_LEN - 1] = 0;
00231 break;
00232
00233 case NML_DISPLAY_TYPE:
00234 strncpy(error_string,
00235 ((NML_DISPLAY *) (emcErrorBuffer->get_address()))->display,
00236 NML_ERROR_LEN - 1);
00237 error_string[NML_ERROR_LEN - 1] = 0;
00238 break;
00239
00240 default:
00241 sprintf(error_string, "unrecognized error %ld",type);
00242 return -1;
00243 break;
00244 }
00245
00246 return 0;
00247 }
|
|
|
Definition at line 145 of file yemc.cc. 00146 {
00147 NMLTYPE type;
00148
00149 if (0 == emcStatus ||
00150 0 == emcStatusBuffer ||
00151 ! emcStatusBuffer->valid())
00152 {
00153 return -1;
00154 }
00155
00156 switch (type = emcStatusBuffer->peek())
00157 {
00158 case -1:
00159 // error on CMS channel
00160 return -1;
00161 break;
00162
00163 case 0: // no new data
00164 case EMC_STAT_TYPE: // new data
00165 // new data
00166 break;
00167
00168 default:
00169 return -1;
00170 break;
00171 }
00172
00173 return 0;
00174 }
|
|
||||||||||||||||
|
Definition at line 2055 of file yemc.cc. 02056 {
02057 doVarFileDone(0);
02058 }
|
|
||||||||||||||||
|
Definition at line 2050 of file yemc.cc. 02051 {
02052 doVarFileDone(1);
02053 }
|
|
||||||||||||||||||||
|
Definition at line 5278 of file yemc.cc. 05279 {
05280 XtPopdown(varFileShell);
05281 destroyVarFileShell();
05282 }
|
|
||||||||||||||||
|
Definition at line 3696 of file yemc.cc. 03697 {
03698 char string[256];
03699
03700 switch ((int) client_data) {
03701 case 0: // Tools
03702 createToolTableShell();
03703 dialogPopup(NULL, toolTableShell, NULL);
03704 // trap window kill
03705 XSetWMProtocols(XtDisplay(topLevel), XtWindow(toolTableShell), &killAtom, 1);
03706 break;
03707
03708 case 1: // Variables
03709 createVarFileShell();
03710 dialogPopup(NULL, varFileShell, NULL);
03711 // trap window kill
03712 XSetWMProtocols(XtDisplay(topLevel), XtWindow(varFileShell), &killAtom, 1);
03713 break;
03714
03715 case 2: // Diagnostics
03716 sprintf(string, "Axis %d Diagnostics", activeJoint);
03717 setLabel(diagnosticsLabel, string);
03718 dialogPopup(NULL, diagnosticsShell, NULL);
03719 diagnosticsIsPopped = 1;
03720 // trap window kill
03721 XSetWMProtocols(XtDisplay(topLevel), XtWindow(diagnosticsShell), &killAtom, 1);
03722 break;
03723
03724 default:
03725 break;
03726 }
03727 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"[B] Brake on",
"[b] Brake off",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value:
{
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"[O] Open...",
"[E] Edit...",
"[F6] Reset",
"-",
"[End] Quit",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"[F8] Flood on",
"[F8] Flood off",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"Help...",
"-",
"About...",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"0.0001",
"0.0010",
"0.0100",
"0.1000",
"-",
"continuous",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"Axis Position",
"All Input Positions",
"All Output Positions",
"Axis Velocity",
"All Following Errors",
"All Trajectory Points",
"All Trajectory Vels",
"All Trajectory Accels",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"[F7] Mist on",
"[F7] Mist off",
NULL
} |
|
|
|
|
|
Initial value: {
"[F3] Manual",
"[F4] Auto",
"[F5] MDI",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: { { DBL_MAX, DBL_MAX, DBL_MAX },
DBL_MAX, DBL_MAX, DBL_MAX } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"[#] Relative Values",
"[#] Machine Values",
"-",
"[@] Actual Position",
"[@] Commanded Position",
"-",
"[$] World Frame",
"[$] Joint Frame",
"-",
"Calibration...",
"Logging...",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"[F9] Spindle forward",
"[F10] Spindle reverse",
"[F9/F10] Spindle off",
NULL
} |
|
|
|
|
|
Initial value: {
"[F1] Estop on",
"[F1] Estop off",
"-",
"[F2] Machine on",
"[F2] Machine off",
NULL
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {
"Tools...",
"Offsets and Variables...",
"Diagnostics...",
NULL
} |
|
|
|
|
|
|
|
|
|
1.2.11.1 written by Dimitri van Heesch,
© 1997-2001