halui.cc

来自「CNC 的开放码,EMC2 V2.2.8版」· CC 代码 · 共 1,793 行 · 第 1/5 页

CC
1,793
字号
    EMC_LUBE_OFF emc_lube_off_msg;    emc_lube_off_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_lube_off_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}// programStartLine is the saved valued of the line that// sendProgramRun(int line) sentstatic int programStartLine = 0;static int sendProgramRun(int line){    EMC_TASK_PLAN_RUN emc_task_plan_run_msg;    updateStatus();    if (0 == emcStatus->task.file[0]) {	return -1; // no program open    }    // 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);    return emcCommandWaitReceived(emcCommandSerialNumber);}static 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);    return emcCommandWaitReceived(emcCommandSerialNumber);}static 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);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSetBlockDelete(bool state){    EMC_TASK_PLAN_SET_BLOCK_DELETE emc_task_plan_set_block_delete_msg;    emc_task_plan_set_block_delete_msg.state = state;    emc_task_plan_set_block_delete_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_task_plan_set_block_delete_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static 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);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendProgramStep(){    EMC_TASK_PLAN_STEP emc_task_plan_step_msg;    emc_task_plan_step_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_task_plan_step_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSpindleForward(){    EMC_SPINDLE_ON emc_spindle_on_msg;    if (emcStatus->task.activeSettings[2] != 0) {	emc_spindle_on_msg.speed = fabs(emcStatus->task.activeSettings[2]);    } else {	emc_spindle_on_msg.speed = +500;    }    emc_spindle_on_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_on_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSpindleReverse(){    EMC_SPINDLE_ON emc_spindle_on_msg;    if (emcStatus->task.activeSettings[2] != 0) {	emc_spindle_on_msg.speed =	    -1 * fabs(emcStatus->task.activeSettings[2]);    } else {	emc_spindle_on_msg.speed = -500;    }    emc_spindle_on_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_on_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSpindleOff(){    EMC_SPINDLE_OFF emc_spindle_off_msg;    emc_spindle_off_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_off_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSpindleIncrease(){    EMC_SPINDLE_INCREASE emc_spindle_increase_msg;    emc_spindle_increase_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_increase_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSpindleDecrease(){    EMC_SPINDLE_DECREASE emc_spindle_decrease_msg;    emc_spindle_decrease_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_decrease_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSpindleConstant(){    EMC_SPINDLE_CONSTANT emc_spindle_constant_msg;    emc_spindle_constant_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_constant_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendBrakeEngage(){    EMC_SPINDLE_BRAKE_ENGAGE emc_spindle_brake_engage_msg;    emc_spindle_brake_engage_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_brake_engage_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendBrakeRelease(){    EMC_SPINDLE_BRAKE_RELEASE emc_spindle_brake_release_msg;    emc_spindle_brake_release_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_spindle_brake_release_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static 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);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendAbort(){    EMC_TASK_ABORT task_abort_msg;    task_abort_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(task_abort_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendJogStop(int axis){    EMC_AXIS_ABORT emc_axis_abort_msg;        // in case of TELEOP mode we really need to send an TELEOP_VECTOR message    // not a simple AXIS_ABORT, as more than one axis would be moving    // (hint TELEOP mode is for nontrivial kinematics)    EMC_TRAJ_SET_TELEOP_VECTOR emc_set_teleop_vector;    if ((emcStatus->task.state != EMC_TASK_STATE_ON) || (emcStatus->task.mode != EMC_TASK_MODE_MANUAL))	return -1;    if (axis < 0 || axis >= EMC_AXIS_MAX) {	return -1;    }    if (emcStatus->motion.traj.mode != EMC_TRAJ_MODE_TELEOP) {	emc_axis_abort_msg.serial_number = ++emcCommandSerialNumber;	emc_axis_abort_msg.axis = axis;	emcCommandBuffer->write(emc_axis_abort_msg);        return emcCommandWaitReceived(emcCommandSerialNumber);    } else {	emc_set_teleop_vector.serial_number = ++emcCommandSerialNumber;	emc_set_teleop_vector.vector.tran.x = 0;	emc_set_teleop_vector.vector.tran.y = 0;	emc_set_teleop_vector.vector.tran.z = 0;	emc_set_teleop_vector.vector.a = 0;	emc_set_teleop_vector.vector.b = 0;	emc_set_teleop_vector.vector.c = 0;	emcCommandBuffer->write(emc_set_teleop_vector);        return emcCommandWaitReceived(emcCommandSerialNumber);    }}static int sendJogCont(int axis, double speed){    EMC_AXIS_JOG emc_axis_jog_msg;    EMC_TRAJ_SET_TELEOP_VECTOR emc_set_teleop_vector;    if ((emcStatus->task.state != EMC_TASK_STATE_ON) || (emcStatus->task.mode != EMC_TASK_MODE_MANUAL))	return -1;    if (axis < 0 || axis >= EMC_AXIS_MAX) {	return -1;    }    if (emcStatus->motion.traj.mode != EMC_TRAJ_MODE_TELEOP) {	emc_axis_jog_msg.serial_number = ++emcCommandSerialNumber;	emc_axis_jog_msg.axis = axis;	emc_axis_jog_msg.vel = speed / 60.0;	emcCommandBuffer->write(emc_axis_jog_msg);    } else {	emc_set_teleop_vector.serial_number = ++emcCommandSerialNumber;	emc_set_teleop_vector.vector.tran.x = 0.0;	emc_set_teleop_vector.vector.tran.y = 0.0;	emc_set_teleop_vector.vector.tran.z = 0.0;	switch (axis) {	case 0:	    emc_set_teleop_vector.vector.tran.x = speed / 60.0;	    break;	case 1:	    emc_set_teleop_vector.vector.tran.y = speed / 60.0;	    break;	case 2:	    emc_set_teleop_vector.vector.tran.z = speed / 60.0;	    break;	case 3:	    emc_set_teleop_vector.vector.a = speed / 60.0;	    break;	case 4:	    emc_set_teleop_vector.vector.b = speed / 60.0;	    break;	case 5:	    emc_set_teleop_vector.vector.c = speed / 60.0;	    break;	}	emcCommandBuffer->write(emc_set_teleop_vector);    }    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendFeedOverride(double override){    EMC_TRAJ_SET_SCALE emc_traj_set_scale_msg;    if (override < 0.0) {	override = 0.0;    }    if (override > maxFeedOverride) {	override = maxFeedOverride;    }        emc_traj_set_scale_msg.serial_number = ++emcCommandSerialNumber;    emc_traj_set_scale_msg.scale = override;    emcCommandBuffer->write(emc_traj_set_scale_msg);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int sendSpindleOverride(double override){    EMC_TRAJ_SET_SPINDLE_SCALE emc_traj_set_spindle_scale_msg;    if (override < minSpindleOverride) {	override = minSpindleOverride;    }    if (override > maxSpindleOverride) {	override = maxSpindleOverride;    }        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);    return emcCommandWaitReceived(emcCommandSerialNumber);}static int iniLoad(const char *filename){    IniFile inifile;    const char *inistring;    double d;    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    }    if (NULL != (inistring = inifile.Find("MAX_FEED_OVERRIDE", "DISPLAY"))) {	if (1 == sscanf(inistring, "%lf", &d) && d > 0.0) {	    maxFeedOverride =  d;	}	else {    	    // error-- no value provided, use 100% as max	    maxFeedOverride =  1.0;	}    }    else {	// no line at all        maxFeedOverride =  1.0;    }    if (NULL != (inistring = inifile.Find("MIN_SPINDLE_OVERRIDE", "DISPLAY"))) {	if (1 == sscanf(inistring, "%lf", &d) && d > 0.0) {	    minSpindleOverride =  d;	}	else {    	    // error-- no value provided, use 100% as max	    minSpindleOverride =  1.0;	}    }    else {	// no line at all        minSpindleOverride =  1.0;    }        if (NULL != (inistring = inifile.Find("MAX_SPINDLE_OVERRIDE", "DISPLAY"))) {	if (1 == sscanf(inistring, "%lf", &d) && d > 0.0) {

⌨️ 快捷键说明

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