shcom.cc
来自「CNC 的开放码,EMC2 V2.2.8版」· CC 代码 · 共 1,402 行 · 第 1/3 页
CC
1,402 行
EMC_SPINDLE_BRAKE_RELEASE emc_spindle_brake_release_msg; emc_spindle_brake_release_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_spindle_brake_release_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendAbort(){ EMC_TASK_ABORT task_abort_msg; task_abort_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(task_abort_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendHome(int axis){ EMC_AXIS_HOME emc_axis_home_msg; emc_axis_home_msg.serial_number = ++emcCommandSerialNumber; emc_axis_home_msg.axis = axis; emcCommandBuffer->write(emc_axis_home_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendFeedOverride(double override){ EMC_TRAJ_SET_SCALE emc_traj_set_scale_msg; if (override < 0.0) { override = 0.0; } emc_traj_set_scale_msg.serial_number = ++emcCommandSerialNumber; emc_traj_set_scale_msg.scale = override; emcCommandBuffer->write(emc_traj_set_scale_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendSpindleOverride(double override){ EMC_TRAJ_SET_SPINDLE_SCALE emc_traj_set_spindle_scale_msg; if (override < 0.0) { override = 0.0; } emc_traj_set_spindle_scale_msg.serial_number = ++emcCommandSerialNumber; emc_traj_set_spindle_scale_msg.scale = override; emcCommandBuffer->write(emc_traj_set_spindle_scale_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendTaskPlanInit(){ EMC_TASK_PLAN_INIT task_plan_init_msg; task_plan_init_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(task_plan_init_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}// saved value of last program openedstatic char lastProgramFile[LINELEN] = "";int sendProgramOpen(char *program){ EMC_TASK_PLAN_OPEN emc_task_plan_open_msg; // save this to run again strcpy(lastProgramFile, program); emc_task_plan_open_msg.serial_number = ++emcCommandSerialNumber; strcpy(emc_task_plan_open_msg.file, program); emcCommandBuffer->write(emc_task_plan_open_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendProgramRun(int line){ EMC_TASK_PLAN_RUN emc_task_plan_run_msg; if (emcUpdateType == EMC_UPDATE_AUTO) { updateStatus(); } // first reopen program if it's not open if (0 == emcStatus->task.file[0]) { // send a request to open last one sendProgramOpen(lastProgramFile); } // save the start line, to compare against active line later programStartLine = line; emc_task_plan_run_msg.serial_number = ++emcCommandSerialNumber; emc_task_plan_run_msg.line = line; emcCommandBuffer->write(emc_task_plan_run_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendProgramPause(){ EMC_TASK_PLAN_PAUSE emc_task_plan_pause_msg; emc_task_plan_pause_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_task_plan_pause_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendProgramResume(){ EMC_TASK_PLAN_RESUME emc_task_plan_resume_msg; emc_task_plan_resume_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_task_plan_resume_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendSetOptionalStop(bool state){ EMC_TASK_PLAN_SET_OPTIONAL_STOP emc_task_plan_set_optional_stop_msg; emc_task_plan_set_optional_stop_msg.state = state; emc_task_plan_set_optional_stop_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_task_plan_set_optional_stop_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendProgramStep(){ EMC_TASK_PLAN_STEP emc_task_plan_step_msg; // clear out start line, if we had a verify before it would be -1 programStartLine = 0; emc_task_plan_step_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_task_plan_step_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendMdiCmd(char *mdi){ EMC_TASK_PLAN_EXECUTE emc_task_plan_execute_msg; strcpy(emc_task_plan_execute_msg.command, mdi); emc_task_plan_execute_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_task_plan_execute_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendLoadToolTable(const char *file){ EMC_TOOL_LOAD_TOOL_TABLE emc_tool_load_tool_table_msg; strcpy(emc_tool_load_tool_table_msg.file, file); emc_tool_load_tool_table_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_tool_load_tool_table_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendToolSetOffset(int tool, double length, double diameter){ EMC_TOOL_SET_OFFSET emc_tool_set_offset_msg; emc_tool_set_offset_msg.tool = tool; emc_tool_set_offset_msg.length = length; emc_tool_set_offset_msg.diameter = diameter; emc_tool_set_offset_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_tool_set_offset_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendAxisSetBacklash(int axis, double backlash){ EMC_AXIS_SET_BACKLASH emc_axis_set_backlash_msg; emc_axis_set_backlash_msg.axis = axis; emc_axis_set_backlash_msg.backlash = backlash; emc_axis_set_backlash_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_axis_set_backlash_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendAxisSetOutput(int axis, double output){ EMC_AXIS_SET_OUTPUT emc_axis_set_output_msg; emc_axis_set_output_msg.axis = axis; emc_axis_set_output_msg.output = output; emc_axis_set_output_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_axis_set_output_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendAxisEnable(int axis, int val){ EMC_AXIS_ENABLE emc_axis_enable_msg; EMC_AXIS_DISABLE emc_axis_disable_msg; if (val) { emc_axis_enable_msg.axis = axis; emc_axis_enable_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_axis_enable_msg); } else { emc_axis_disable_msg.axis = axis; emc_axis_disable_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_axis_disable_msg); } if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendAxisLoadComp(int axis, const char *file, int type){ EMC_AXIS_LOAD_COMP emc_axis_load_comp_msg; strcpy(emc_axis_load_comp_msg.file, file); emc_axis_load_comp_msg.type = type; emc_axis_load_comp_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_axis_load_comp_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendSetTeleopEnable(int enable){ EMC_TRAJ_SET_TELEOP_ENABLE emc_set_teleop_enable_msg; emc_set_teleop_enable_msg.enable = enable; emc_set_teleop_enable_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_set_teleop_enable_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendClearProbeTrippedFlag(){ EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG emc_clear_probe_tripped_flag_msg; emc_clear_probe_tripped_flag_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_clear_probe_tripped_flag_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int sendProbe(double x, double y, double z){ EMC_TRAJ_PROBE emc_probe_msg; emc_probe_msg.pos.tran.x = x; emc_probe_msg.pos.tran.y = y; emc_probe_msg.pos.tran.z = z; emc_probe_msg.serial_number = ++emcCommandSerialNumber; emcCommandBuffer->write(emc_probe_msg); if (emcWaitType == EMC_WAIT_RECEIVED) { return emcCommandWaitReceived(emcCommandSerialNumber); } else if (emcWaitType == EMC_WAIT_DONE) { return emcCommandWaitDone(emcCommandSerialNumber); } return 0;}int iniLoad(const char *filename){ IniFile inifile; const char *inistring; char displayString[LINELEN] = ""; int t; int i; // open it if (inifile.Open(filename) == false) { return -1; } if (NULL != (inistring = inifile.Find("DEBUG", "EMC"))) { // copy to global if (1 != sscanf(inistring, "%i", &EMC_DEBUG)) { EMC_DEBUG = 0; } } else { // not found, use default EMC_DEBUG = 0; } if (NULL != (inistring = inifile.Find("NML_FILE", "EMC"))) { // copy to global strcpy(EMC_NMLFILE, inistring); } else { // not found, use default } for (t = 0; t < EMC_AXIS_MAX; t++) { jogPol[t] = 1; // set to default sprintf(displayString, "AXIS_%d", t); if (NULL != (inistring = inifile.Find("JOGGING_POLARITY", displayString)) && 1 == sscanf(inistring, "%d", &i) && i == 0) { // it read as 0, so override default jogPol[t] = 0; } } if (NULL != (inistring = inifile.Find("LINEAR_UNITS", "DISPLAY"))) { if (!strcmp(inistring, "AUTO")) { linearUnitConversion = LINEAR_UNITS_AUTO; } else if (!strcmp(inistring, "INCH")) { linearUnitConversion = LINEAR_UNITS_INCH; } else if (!strcmp(inistring, "MM")) { linearUnitConversion = LINEAR_UNITS_MM; } else if (!strcmp(inistring, "CM")) { linearUnitConversion = LINEAR_UNITS_CM; } } else { // not found, leave default alone } if (NULL != (inistring = inifile.Find("ANGULAR_UNITS", "DISPLAY"))) { if (!strcmp(inistring, "AUTO")) { angularUnitConversion = ANGULAR_UNITS_AUTO; } else if (!strcmp(inistring, "DEG")) { angularUnitConversion = ANGULAR_UNITS_DEG; } else if (!strcmp(inistring, "RAD")) { angularUnitConversion = ANGULAR_UNITS_RAD; } else if (!strcmp(inistring, "GRAD")) { angularUnitConversion = ANGULAR_UNITS_GRAD; } } else { // not found, leave default alone } // close it inifile.Close(); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?