⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emctaskmain.cc

📁 CNC 的开放码,EMC2 V2.2.8版
💻 CC
📖 第 1 页 / 共 5 页
字号:
	/* pause on the interp list is queued, so wait until all are done */	return EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO;	break;    case EMC_TASK_PLAN_END_TYPE:	return EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO;	break;    case EMC_TASK_PLAN_INIT_TYPE:    case EMC_TASK_PLAN_RUN_TYPE:    case EMC_TASK_PLAN_SYNCH_TYPE:    case EMC_TASK_PLAN_EXECUTE_TYPE:	return EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO;	break;    case EMC_TRAJ_DELAY_TYPE:	return EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO;	break;    case EMC_MOTION_SET_AOUT_TYPE:	if (((EMC_MOTION_SET_AOUT *) cmd)->now) {    	    return EMC_TASK_EXEC_WAITING_FOR_MOTION;	}	return EMC_TASK_EXEC_DONE;	break;    case EMC_MOTION_SET_DOUT_TYPE:	if (((EMC_MOTION_SET_DOUT *) cmd)->now) {    	    return EMC_TASK_EXEC_WAITING_FOR_MOTION;	}	return EMC_TASK_EXEC_DONE;	break;    case EMC_MOTION_ADAPTIVE_TYPE:	return EMC_TASK_EXEC_WAITING_FOR_MOTION;	break;    default:	// unrecognized command	if (EMC_DEBUG & EMC_DEBUG_TASK_ISSUE) {	    rcs_print_error("preconditions: unrecognized command %d:%s\n",			    cmd->type, emc_symbol_lookup(cmd->type));	}	return EMC_TASK_EXEC_ERROR;	break;    }    return EMC_TASK_EXEC_DONE;}// puts command on interp listint emcTaskQueueCommand(NMLmsg * cmd){    if (0 == cmd) {	return 0;    }    interp_list.append(cmd);    return 0;}// issues command immediatelystatic int emcTaskIssueCommand(NMLmsg * cmd){    int retval = 0;    int execRetval = 0;    if (0 == cmd) {        if (EMC_DEBUG & EMC_DEBUG_TASK_ISSUE) {            printf("emcTaskIssueCommand() null command\n");        }	return 0;    }    if (EMC_DEBUG & EMC_DEBUG_TASK_ISSUE) {	rcs_print("Issuing %s -- \t (%s)\n", emcSymbolLookup(cmd->type),		  emcCommandBuffer->msg2str(cmd));    }    switch (cmd->type) {	// general commands    case EMC_OPERATOR_ERROR_TYPE:	retval = emcOperatorError(((EMC_OPERATOR_ERROR *) cmd)->id,				  ((EMC_OPERATOR_ERROR *) cmd)->error);	break;    case EMC_OPERATOR_TEXT_TYPE:	retval = emcOperatorText(((EMC_OPERATOR_TEXT *) cmd)->id,				 ((EMC_OPERATOR_TEXT *) cmd)->text);	break;    case EMC_OPERATOR_DISPLAY_TYPE:	retval = emcOperatorDisplay(((EMC_OPERATOR_DISPLAY *) cmd)->id,				    ((EMC_OPERATOR_DISPLAY *) cmd)->				    display);	break;    case EMC_SYSTEM_CMD_TYPE:	retval = emcSystemCmd(((EMC_SYSTEM_CMD *) cmd)->string);	break;	// axis commands    case EMC_AXIS_DISABLE_TYPE:	disable_msg = (EMC_AXIS_DISABLE *) cmd;	retval = emcAxisDisable(disable_msg->axis);	break;    case EMC_AXIS_ENABLE_TYPE:	enable_msg = (EMC_AXIS_ENABLE *) cmd;	retval = emcAxisEnable(enable_msg->axis);	break;    case EMC_AXIS_HOME_TYPE:	home_msg = (EMC_AXIS_HOME *) cmd;	retval = emcAxisHome(home_msg->axis);	break;    case EMC_AXIS_JOG_TYPE:	jog_msg = (EMC_AXIS_JOG *) cmd;	retval = emcAxisJog(jog_msg->axis, jog_msg->vel);	break;    case EMC_AXIS_ABORT_TYPE:	axis_abort_msg = (EMC_AXIS_ABORT *) cmd;	retval = emcAxisAbort(axis_abort_msg->axis);	break;    case EMC_AXIS_INCR_JOG_TYPE:	incr_jog_msg = (EMC_AXIS_INCR_JOG *) cmd;	retval = emcAxisIncrJog(incr_jog_msg->axis,				incr_jog_msg->incr, incr_jog_msg->vel);	break;    case EMC_AXIS_ABS_JOG_TYPE:	abs_jog_msg = (EMC_AXIS_ABS_JOG *) cmd;	retval = emcAxisAbsJog(abs_jog_msg->axis,			       abs_jog_msg->pos, abs_jog_msg->vel);	break;    case EMC_AXIS_SET_BACKLASH_TYPE:	set_backlash_msg = (EMC_AXIS_SET_BACKLASH *) cmd;	retval =	    emcAxisSetBacklash(set_backlash_msg->axis,			       set_backlash_msg->backlash);	break;    case EMC_AXIS_SET_HOMING_PARAMS_TYPE:	set_homing_params_msg = (EMC_AXIS_SET_HOMING_PARAMS *) cmd;	retval = emcAxisSetHomingParams(set_homing_params_msg->axis,					set_homing_params_msg->home,					set_homing_params_msg->offset,					set_homing_params_msg->search_vel,					set_homing_params_msg->latch_vel,					set_homing_params_msg->use_index,					set_homing_params_msg->ignore_limits,					set_homing_params_msg->is_shared,					set_homing_params_msg->home_sequence);	break;    case EMC_AXIS_SET_FERROR_TYPE:	set_ferror_msg = (EMC_AXIS_SET_FERROR *) cmd;	retval = emcAxisSetFerror(set_ferror_msg->axis,				  set_ferror_msg->ferror);	break;    case EMC_AXIS_SET_MIN_FERROR_TYPE:	set_min_ferror_msg = (EMC_AXIS_SET_MIN_FERROR *) cmd;	retval = emcAxisSetMinFerror(set_min_ferror_msg->axis,				     set_min_ferror_msg->ferror);	break;    case EMC_AXIS_SET_MAX_POSITION_LIMIT_TYPE:	set_max_limit_msg = (EMC_AXIS_SET_MAX_POSITION_LIMIT *) cmd;	retval = emcAxisSetMaxPositionLimit(set_max_limit_msg->axis,					    set_max_limit_msg->limit);	break;    case EMC_AXIS_SET_MIN_POSITION_LIMIT_TYPE:	set_min_limit_msg = (EMC_AXIS_SET_MIN_POSITION_LIMIT *) cmd;	retval = emcAxisSetMinPositionLimit(set_min_limit_msg->axis,					    set_min_limit_msg->limit);	break;    case EMC_AXIS_HALT_TYPE:	axis_halt_msg = (EMC_AXIS_HALT *) cmd;	retval = emcAxisHalt(axis_halt_msg->axis);	break;    case EMC_AXIS_OVERRIDE_LIMITS_TYPE:	axis_lim_msg = (EMC_AXIS_OVERRIDE_LIMITS *) cmd;	retval = emcAxisOverrideLimits(axis_lim_msg->axis);	break;    case EMC_AXIS_LOAD_COMP_TYPE:	axis_load_comp_msg = (EMC_AXIS_LOAD_COMP *) cmd;	retval = emcAxisLoadComp(axis_load_comp_msg->axis,				 axis_load_comp_msg->file,				 axis_load_comp_msg->type);	break;	// traj commands    case EMC_TRAJ_SET_SCALE_TYPE:	emcTrajSetScaleMsg = (EMC_TRAJ_SET_SCALE *) cmd;	retval = emcTrajSetScale(emcTrajSetScaleMsg->scale);	break;    case EMC_TRAJ_SET_SPINDLE_SCALE_TYPE:	emcTrajSetSpindleScaleMsg = (EMC_TRAJ_SET_SPINDLE_SCALE *) cmd;	retval = emcTrajSetSpindleScale(emcTrajSetSpindleScaleMsg->scale);	break;    case EMC_TRAJ_SET_FO_ENABLE_TYPE:	retval = emcTrajSetFOEnable(((EMC_TRAJ_SET_FO_ENABLE *) cmd)->mode);  // feed override enable/disable	break;    case EMC_TRAJ_SET_FH_ENABLE_TYPE:	retval = emcTrajSetFHEnable(((EMC_TRAJ_SET_FH_ENABLE *) cmd)->mode); //feed hold enable/disable	break;    case EMC_TRAJ_SET_SO_ENABLE_TYPE:	retval = emcTrajSetSOEnable(((EMC_TRAJ_SET_SO_ENABLE *) cmd)->mode); //spindle speed override enable/disable	break;    case EMC_TRAJ_SET_VELOCITY_TYPE:	emcTrajSetVelocityMsg = (EMC_TRAJ_SET_VELOCITY *) cmd;	retval = emcTrajSetVelocity(emcTrajSetVelocityMsg->velocity,			emcTrajSetVelocityMsg->ini_maxvel);	break;    case EMC_TRAJ_SET_ACCELERATION_TYPE:	emcTrajSetAccelerationMsg = (EMC_TRAJ_SET_ACCELERATION *) cmd;	retval = emcTrajSetAcceleration(emcTrajSetAccelerationMsg->acceleration);	break;    case EMC_TRAJ_LINEAR_MOVE_TYPE:	emcTrajLinearMoveMsg = (EMC_TRAJ_LINEAR_MOVE *) cmd;        retval = emcTrajLinearMove(emcTrajLinearMoveMsg->end,                emcTrajLinearMoveMsg->type, emcTrajLinearMoveMsg->vel,                emcTrajLinearMoveMsg->ini_maxvel, emcTrajLinearMoveMsg->acc);	break;    case EMC_TRAJ_CIRCULAR_MOVE_TYPE:	emcTrajCircularMoveMsg = (EMC_TRAJ_CIRCULAR_MOVE *) cmd;        retval = emcTrajCircularMove(emcTrajCircularMoveMsg->end,                emcTrajCircularMoveMsg->center, emcTrajCircularMoveMsg->normal,                emcTrajCircularMoveMsg->turn, emcTrajCircularMoveMsg->type,                emcTrajCircularMoveMsg->vel,                emcTrajCircularMoveMsg->ini_maxvel,                emcTrajCircularMoveMsg->acc);	break;    case EMC_TRAJ_PAUSE_TYPE:	retval = emcTrajPause();	break;    case EMC_TRAJ_RESUME_TYPE:	retval = emcTrajResume();	break;    case EMC_TRAJ_ABORT_TYPE:	retval = emcTrajAbort();	break;    case EMC_TRAJ_DELAY_TYPE:	emcTrajDelayMsg = (EMC_TRAJ_DELAY *) cmd;	// set the timeout clock to expire at 'now' + delay time	taskExecDelayTimeout = etime() + emcTrajDelayMsg->delay;	retval = 0;	break;    case EMC_TRAJ_SET_TERM_COND_TYPE:	emcTrajSetTermCondMsg = (EMC_TRAJ_SET_TERM_COND *) cmd;	retval = emcTrajSetTermCond(emcTrajSetTermCondMsg->cond, emcTrajSetTermCondMsg->tolerance);	break;    case EMC_TRAJ_SET_SPINDLESYNC_TYPE:        emcTrajSetSpindlesyncMsg = (EMC_TRAJ_SET_SPINDLESYNC *) cmd;        retval = emcTrajSetSpindleSync(emcTrajSetSpindlesyncMsg->feed_per_revolution, emcTrajSetSpindlesyncMsg->velocity_mode);        break;    case EMC_TRAJ_SET_OFFSET_TYPE:	// update tool offset	emcStatus->task.toolOffset.tran.z =	    ((EMC_TRAJ_SET_OFFSET *) cmd)->offset.tran.z;	emcStatus->task.toolOffset.tran.x =	    ((EMC_TRAJ_SET_OFFSET *) cmd)->offset.tran.x;	retval = 0;	break;    case EMC_TRAJ_SET_ORIGIN_TYPE:	// struct-copy program origin	emcStatus->task.origin = ((EMC_TRAJ_SET_ORIGIN *) cmd)->origin;	retval = 0;	break;    case EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG_TYPE:	retval = emcTrajClearProbeTrippedFlag();	break;    case EMC_TRAJ_PROBE_TYPE:	retval = emcTrajProbe(	    ((EMC_TRAJ_PROBE *) cmd)->pos, 	    ((EMC_TRAJ_PROBE *) cmd)->type,	    ((EMC_TRAJ_PROBE *) cmd)->vel,            ((EMC_TRAJ_PROBE *) cmd)->ini_maxvel,  	    ((EMC_TRAJ_PROBE *) cmd)->acc);	break;    case EMC_AUX_INPUT_WAIT_TYPE:	emcAuxInputWaitMsg = (EMC_AUX_INPUT_WAIT *) cmd;	if (emcAuxInputWaitMsg->timeout == WAIT_MODE_IMMEDIATE) { //nothing to do, CANON will get the needed value when asked by the interp	    emcStatus->task.input_timeout = 0; // no timeout can occur	    emcAuxInputWaitIndex = -1;	} else {	    emcAuxInputWaitType = emcAuxInputWaitMsg->wait_type; // remember what we are waiting for 	    emcAuxInputWaitIndex = emcAuxInputWaitMsg->index; // remember the input to look at	    emcStatus->task.input_timeout = 2; // set timeout flag, gets cleared if input changes before timeout happens	    // set the timeout clock to expire at 'now' + delay time	    taskExecDelayTimeout = etime() + emcAuxInputWaitMsg->timeout;	}	break;    case EMC_TRAJ_RIGID_TAP_TYPE:	retval = emcTrajRigidTap(((EMC_TRAJ_RIGID_TAP *) cmd)->pos,	        ((EMC_TRAJ_RIGID_TAP *) cmd)->vel,        	((EMC_TRAJ_RIGID_TAP *) cmd)->ini_maxvel,  		((EMC_TRAJ_RIGID_TAP *) cmd)->acc);	break;    case EMC_TRAJ_SET_TELEOP_ENABLE_TYPE:	if (((EMC_TRAJ_SET_TELEOP_ENABLE *) cmd)->enable) {	    retval = emcTrajSetMode(EMC_TRAJ_MODE_TELEOP);	} else {	    retval = emcTrajSetMode(EMC_TRAJ_MODE_FREE);	}	break;    case EMC_TRAJ_SET_TELEOP_VECTOR_TYPE:	retval =	    emcTrajSetTeleopVector(((EMC_TRAJ_SET_TELEOP_VECTOR *) cmd)->				   vector);	break;    case EMC_MOTION_SET_AOUT_TYPE:	retval = emcMotionSetAout(((EMC_MOTION_SET_AOUT *) cmd)->index,				  ((EMC_MOTION_SET_AOUT *) cmd)->start,				  ((EMC_MOTION_SET_AOUT *) cmd)->end,				  ((EMC_MOTION_SET_AOUT *) cmd)->now);	break;    case EMC_MOTION_SET_DOUT_TYPE:	retval = emcMotionSetDout(((EMC_MOTION_SET_DOUT *) cmd)->index,				  ((EMC_MOTION_SET_DOUT *) cmd)->start,				  ((EMC_MOTION_SET_DOUT *) cmd)->end,				  ((EMC_MOTION_SET_DOUT *) cmd)->now);	break;    case EMC_MOTION_ADAPTIVE_TYPE:	retval = emcTrajSetAFEnable(((EMC_MOTION_ADAPTIVE *) cmd)->status);	break;    case EMC_SET_DEBUG_TYPE:	/* set the debug level here */	EMC_DEBUG = ((EMC_SET_DEBUG *) cmd)->debug;	/* and in IO and motion */	emcIoSetDebug(EMC_DEBUG);	emcMotionSetDebug(EMC_DEBUG);	/* and reflect it in the status-- this isn't updated continually */	emcStatus->debug = EMC_DEBUG;	break;	// unimplemented ones	// IO commands    case EMC_SPINDLE_ON_TYPE:	spindle_on_msg = (EMC_SPINDLE_ON *) cmd;	retval = emcSpindleOn(spindle_on_msg->speed, spindle_on_msg->factor, spindle_on_msg->xoffset);	break;    case EMC_SPINDLE_OFF_TYPE:	retval = emcSpindleOff();	break;    case EMC_SPINDLE_BRAKE_RELEASE_TYPE:	retval = emcSpindleBrakeRelease();	break;    case EMC_SPINDLE_INCREASE_TYPE:	retval = emcSpindleIncrease();	break;    case EMC_SPINDLE_DECREASE_TYPE:	retval = emcSpindleDecrease();	break;    case EMC_SPINDLE_CONSTANT_TYPE:	retval = emcSpindleConstant();	break;    case EMC_SPINDLE_BRAKE_ENGAGE_TYPE:	retval = emcSpindleBrakeEngage();	break;    case EMC_COOLANT_MIST_ON_TYPE:	retval = emcCoolantMistOn();	break;    case EMC_COOLANT_MIST_OFF_TYPE:	retval = emcCoolantMistOff();	break;    case EMC_COOLANT_FLOOD_ON_TYPE:	retval = emcCoolantFloodOn();	break;    case EMC_COOLANT_FLOOD_OFF_TYPE:	retval = emcCoolantFloodOff();	break;    case EMC_LUBE_ON_TYPE:	retval = emcLubeOn();	break;    case EMC_LUBE_OFF_TYPE:	retval = emcLubeOff();	break;    case EMC_TOOL_PREPARE_TYPE:	tool_prepare_msg = (EMC_TOOL_PREPARE *) cmd;	retval = emcToolPrepare(tool_prepare_msg->tool);	break;    case EMC_TOOL_LOAD_TYPE:	retval = emcToolLoad();	break;    case EMC_TOOL_UNLOAD_TYPE:	retval = emcToolUnload();	break;    case EMC_TOOL_LOAD_TOOL_TABLE_TYPE:	load_tool_table_msg = (EMC_TOOL_LOAD_TOOL_TABLE *) cmd;	retval = emcToolLoadToolTable(load_tool_table_msg->file);	break;    case EMC_TOOL_SET_OFFSET_TYPE:	emc_tool_set_offset_msg = (EMC_TOOL_SET_OFFSET *) cmd;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -