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

📄 emcsh.cc

📁 Source code for an Numeric Cmputer
💻 CC
📖 第 1 页 / 共 5 页
字号:
    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;}static int sendAxisSetGains(int axis, double p, double i, double d,			    double ff0, double ff1, double ff2,			    double bias, double maxError, double deadband){    EMC_AXIS_SET_GAINS emc_axis_set_gains_msg;    emc_axis_set_gains_msg.axis = axis;    emc_axis_set_gains_msg.p = p;    emc_axis_set_gains_msg.i = i;    emc_axis_set_gains_msg.d = d;    emc_axis_set_gains_msg.ff0 = ff0;    emc_axis_set_gains_msg.ff1 = ff1;    emc_axis_set_gains_msg.ff2 = ff2;    emc_axis_set_gains_msg.bias = bias;    emc_axis_set_gains_msg.maxError = maxError;    emc_axis_set_gains_msg.deadband = deadband;    emc_axis_set_gains_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_axis_set_gains_msg);    if (emcWaitType == EMC_WAIT_RECEIVED) {	return emcCommandWaitReceived(emcCommandSerialNumber);    } else if (emcWaitType == EMC_WAIT_DONE) {	return emcCommandWaitDone(emcCommandSerialNumber);    }    return 0;}static 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;}static 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;}static 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;}static int sendAxisLoadComp(int axis, const char *file){    EMC_AXIS_LOAD_COMP emc_axis_load_comp_msg;    strcpy(emc_axis_load_comp_msg.file, file);    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;}static int sendAxisAlter(int axis, double alter){    EMC_AXIS_ALTER emc_axis_alter_msg;    emc_axis_alter_msg.alter = alter;    emc_axis_alter_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_axis_alter_msg);    if (emcWaitType == EMC_WAIT_RECEIVED) {	return emcCommandWaitReceived(emcCommandSerialNumber);    } else if (emcWaitType == EMC_WAIT_DONE) {	return emcCommandWaitDone(emcCommandSerialNumber);    }    return 0;}static 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;}static int sendSetProbeIndex(int index){    EMC_TRAJ_SET_PROBE_INDEX emc_set_probe_index_msg;    emc_set_probe_index_msg.index = index;    emc_set_probe_index_msg.serial_number = ++emcCommandSerialNumber;    emcCommandBuffer->write(emc_set_probe_index_msg);    if (emcWaitType == EMC_WAIT_RECEIVED) {	return emcCommandWaitReceived(emcCommandSerialNumber);    } else if (emcWaitType == EMC_WAIT_DONE) {	return emcCommandWaitDone(emcCommandSerialNumber);    }    return 0;}static int sendSetProbePolarity(int polarity){    EMC_TRAJ_SET_PROBE_POLARITY emc_set_probe_polarity_msg;    emc_set_probe_polarity_msg.serial_number = ++emcCommandSerialNumber;    emc_set_probe_polarity_msg.polarity = polarity;    emcCommandBuffer->write(emc_set_probe_polarity_msg);    if (emcWaitType == EMC_WAIT_RECEIVED) {	return emcCommandWaitReceived(emcCommandSerialNumber);    } else if (emcWaitType == EMC_WAIT_DONE) {	return emcCommandWaitDone(emcCommandSerialNumber);    }    return 0;}static 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;}static 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;}/* EMC command functions */static int emc_plat(ClientData clientdata,		    Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]){    if (objc == 1) {	Tcl_SetResult(interp, "Linux", TCL_VOLATILE);	return TCL_OK;    }    Tcl_SetResult(interp, "emc_plat: need no args", TCL_VOLATILE);    return TCL_ERROR;}static int emc_ini(ClientData clientdata,		   Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]){    Inifile inifile;    const char *inistring;    const char *varstr, *secstr, *defaultstr;    defaultstr = 0;    if (objc != 3 && objc != 4) {	Tcl_SetResult(interp, "emc_ini: need 'var' and 'section'",		      TCL_VOLATILE);	return TCL_ERROR;    }    // open it    if (inifile.open(EMC_INIFILE) == false) {	return TCL_OK;    }    varstr = Tcl_GetStringFromObj(objv[1], 0);    secstr = Tcl_GetStringFromObj(objv[2], 0);    if (objc == 4) {	defaultstr = Tcl_GetStringFromObj(objv[3], 0);    }    if (NULL == (inistring = inifile.find(varstr, secstr))) {	if (defaultstr != 0) {	    Tcl_SetResult(interp, (char *) defaultstr, TCL_VOLATILE);	}	return TCL_OK;    }    Tcl_SetResult(interp, (char *) inistring, TCL_VOLATILE);    // close it    inifile.close();    return TCL_OK;}static int emc_debug(ClientData clientdata,		     Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]){    Tcl_Obj *debug_obj;    int debug;    if (emcUpdateType == EMC_UPDATE_AUTO) {	updateStatus();    }    if (objc == 1) {	// no arg-- return current value	debug_obj = Tcl_NewIntObj(emcStatus->debug);	Tcl_SetObjResult(interp, debug_obj);	return TCL_OK;    }    if (objc == 2) {	if (0 != Tcl_GetIntFromObj(0, objv[1], &debug)) {	    Tcl_SetResult(interp, "emc_debug: need debug level as integer",			  TCL_VOLATILE);	    return TCL_ERROR;	}	sendDebug(debug);	EMC_DEBUG = debug;	return TCL_OK;    }    // wrong number of args    Tcl_SetResult(interp, "emc_debug: need zero or one arg", TCL_VOLATILE);    return TCL_ERROR;}static int emc_set_wait(ClientData clientdata,			Tcl_Interp * interp, int objc,			Tcl_Obj * CONST objv[]){    char *objstr;    if (objc == 1) {	switch (emcWaitType) {	case EMC_WAIT_NONE:	    Tcl_SetResult(interp, "none", TCL_VOLATILE);	    break;	case EMC_WAIT_RECEIVED:	    Tcl_SetResult(interp, "received", TCL_VOLATILE);	    break;	case EMC_WAIT_DONE:	    Tcl_SetResult(interp, "done", TCL_VOLATILE);	    break;	default:	    Tcl_SetResult(interp, "(invalid)", TCL_VOLATILE);	    break;	}	return TCL_OK;    }    if (objc == 2) {	objstr = Tcl_GetStringFromObj(objv[1], 0);	if (!strcmp(objstr, "none")) {	    emcWaitType = EMC_WAIT_NONE;	    return TCL_OK;	}	if (!strcmp(objstr, "received")) {	    emcWaitType = EMC_WAIT_RECEIVED;	    return TCL_OK;	}	if (!strcmp(objstr, "done")) {	    emcWaitType = EMC_WAIT_DONE;	    return TCL_OK;	}    }    Tcl_SetResult(interp,		  "emc_set_wait: need 'none', 'received', 'done', or no args",		  TCL_VOLATILE);    return TCL_ERROR;}static int emc_wait(ClientData clientdata,		    Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]){    char *objstr;    if (objc == 2) {	objstr = Tcl_GetStringFromObj(objv[1], 0);	if (!strcmp(objstr, "received")) {	    if (0 != emcCommandWaitReceived(emcCommandSerialNumber)) {		Tcl_SetResult(interp, "timeout", TCL_VOLATILE);	    }	    return TCL_OK;	}	if (!strcmp(objstr, "done")) {	    if (0 != emcCommandWaitDone(emcCommandSerialNumber)) {		Tcl_SetResult(interp, "timeout", TCL_VOLATILE);	    }	    return TCL_OK;	}    }    Tcl_SetResult(interp, "emc_wait: need 'received' or 'done'",		  TCL_VOLATILE);    return TCL_ERROR;}static int emc_set_timeout(ClientData clientdata,			   Tcl_Interp * interp, int objc,			   Tcl_Obj * CONST objv[]){    double timeout;    Tcl_Obj *timeout_obj;    if (objc == 1) {	timeout_obj = Tcl_NewDoubleObj(emcTimeout);	Tcl_SetObjResult(interp, timeout_obj);	return TCL_OK;    }    if (objc == 2) {	if (TCL_OK == Tcl_GetDoubleFromObj(0, objv[1], &timeout)) {	    emcTimeout = timeout;	    return TCL_OK;	}    }    Tcl_SetResult(interp, "emc_set_timeout: need time as real number",		  TCL_VOLATILE);    return TCL_ERROR;}static int emc_update(ClientData clientdata,		      Tcl_Interp * interp, int objc,		      Tcl_Obj * CONST objv[]){    char *objstr;    if (objc == 1) {	// no arg-- return status	updateStatus();	return TCL_OK;    }    if (objc == 2) {	objstr = Tcl_GetStringFromObj(objv[1], 0);	if (!strcmp(objstr, "none")) {	    emcUpdateType = EMC_UPDATE_NONE;	    return TCL_OK;	}	if (!strcmp(objstr, "auto")) {	    emcUpdateType = EMC_UPDATE_AUTO;	    return TCL_OK;	}    }    return TCL_OK;}static int emc_time(ClientData clientdata,		    Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]){    if (objc == 1) {#if defined(LINUX_KERNEL_2_2)	/*! \todo FIXME-- Linux 2.2 has gettimeofday() bug, so return 0 */	Tcl_SetObjResult(interp, Tcl_NewDoubleObj(0.0));#else	Tcl_SetObjResult(interp, Tcl_NewDoubleObj(etime()));#endif	return TCL_OK;    }    Tcl_SetResult(interp, "emc_time: needs no arguments", TCL_VOLATILE);    return TCL_ERROR;}static int emc_error(ClientData clientdata,		     Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]){    if (objc == 1) {	// get any new error, it's saved in global error_string[]	if (0 != updateError()) {	    Tcl_SetResult(interp, "emc_error: bad status from EMC",			  TCL_VOLATILE);	    return TCL_ERROR;	}	// put error on result list	if (error_string[0] == 0) {	    Tcl_SetResult(interp, "ok", TCL_VOLATILE);	} else {	    Tcl_SetResult(interp, error_string, TCL_VOLATILE);	    error_string[0] = 0;	}	return TCL_OK;    }    Tcl_SetResult(interp, "emc_error: need no args", TCL_VOLATILE);    return TCL_ERROR;}static int emc_operator_text(ClientData clientdata,			     Tcl_Interp * interp, int objc,			     Tcl_Obj * CONST objv[]){    if (objc == 1) {	// get any new string, it's saved in global operator_text_string[]	if (0 != updateError()) {	    Tcl_SetResult(interp, "emc_operator_text: bad status from EMC",			  TCL_VOLATILE);	    return TCL_ERROR;	}	// put error on result list	if (operator_text_string[0] == 0) {	    Tcl_SetResult(interp, "ok", TCL_VOLATILE);	    operator_text_string[0] = 0;	} else {	    Tcl_SetResult(interp, operator_text_string, TCL_VOLATILE);	}	return TCL_OK;    }    Tcl_SetResult(interp, "emc_operator_text: need no args", TCL_VOLATILE);    return TCL_ERROR;}static int emc_operator_display(ClientData clientdata,				Tcl_Interp * interp, int objc,				Tcl_Obj * CONST objv[]){    if (objc == 1) {	// get any new string, it's saved in global operator_display_string[]	if (0 != updateError()) {	    Tcl_SetResult(interp,

⌨️ 快捷键说明

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