API中*pCmd含义解析及Cnc3DPrintCommand调用示例求助
问题解答
一、Cnc3DPrintCommand函数参数*pCmd的含义
CNC_3DPRINTING_COMMAND* pCmd是指向CNC_3DPRINTING_COMMAND结构体的指针,这个结构体是传递3D打印命令的载体:
cmdID:指定具体要执行的命令类型,对应CNC_3DP_COMMAND_ID枚举里的常量,比如设置挤出机温度、开关热床等d:CNC_3DP_CMD_DATA类型的结构体,根据cmdID的不同,使用其中对应的字段传递命令参数——比如设置温度时用floatVal.value,开关设备时用onOffVal.onOff
简单来说,你需要先创建并填充这个结构体,再把它的地址传给函数,以此告诉API要执行什么3D打印命令以及对应的参数。
二、设置挤出机温度(CNC_3DP_SET_EXTRUDER_TEMP)的调用示例
在QT代码中可以这样实现:
void MainWindow::on_setExtruderTemp_clicked() { // 声明命令结构体 CNC_3DPRINTING_COMMAND cmd; // 指定命令为设置挤出机温度 cmd.cmdID = CNC_3DP_SET_EXTRUDER_TEMP; // 设置目标温度,示例为200℃ cmd.d.floatVal.value = 200.0f; // 调用API函数 CNC_RC result = Cnc3DPrintCommand(&cmd); // 根据返回码判断执行结果(CNC_RC为API定义的返回码类型) if (result == CNC_RC_SUCCESS) { // 假设CNC_RC_SUCCESS是成功返回值 qDebug() << "挤出机温度设置成功"; } else { qDebug() << "挤出机温度设置失败,返回码:" << result; } }
附:相关API定义(中文翻译)
api.h中CncSetSpindleOutput函数定义
/* * 名称 : CncSetSpindleOutput * 输入参数 : onOff(开关状态)、direction(方向,0或1,传-1则忽略)、absSpeed(绝对转速) * 输出参数 : 无 * 返回值 : 参考CNC_RC枚举值 * 描述 : 设置主轴转速 */ CNC_RC EXP2DF __stdcall CncSetSpindleOutput(int onOff, int direction, double absSpeed);
QT应用中调用示例(原代码)
void MainWindow::on_pushButton_spindleOn_clicked() { CncSetSpindleOutput(1, 1, 1000); }
api.h中Cnc3DPrintCommand函数定义
/* * 名称 : Cnc3DPrintCommand * 输入参数 : pCmd - 3D打印机的命令/回复结构体,参考CNC_3DPRINTING_COMMAND的定义 * 输出参数 : 无 * 返回值 : 参考CNC_RC枚举值 * 描述 : 执行3D打印相关命令 */ CNC_RC EXP2DF __stdcall Cnc3DPrintCommand(CNC_3DPRINTING_COMMAND *pCmd);
api_types.h中相关类型定义
// 3D打印命令ID枚举 typedef enum { CNC_3DP_SET_EXTRUDER_ONOFF = 1, // 设置挤出机开关 CNC_3DP_SET_EXTRUDER_STANDBY = 2, // 设置挤出机待机状态 CNC_3DP_SET_EXTRUDER_PIDONOFF = 3, // 设置挤出机PID开关 CNC_3DP_SET_EXTRUDER_TEMP_MAX = 4, // 设置挤出机最高温度 CNC_3DP_SET_EXTRUDER_TEMP = 5, // 设置挤出机目标温度 CNC_3DP_SET_EXTRUDER_TEMP_WAIT = 6, // 设置挤出机温度并等待达到目标 CNC_3DP_SET_EXTRUDER_PARS = 7, // 设置挤出机参数 CNC_3DP_SET_EXTRUDER_POWER = 8, // 设置挤出机功率 CNC_3DP_SET_HEATBED_ONOFF = 9, // 设置热床开关 CNC_3DP_SET_HEATBED_STANDBY = 10, // 设置热床待机状态 CNC_3DP_SET_HEATBED_PIDONOFF = 11, // 设置热床PID开关 CNC_3DP_SET_HEATBED_TEMP_WAIT = 12, // 设置热床温度并等待达到目标 CNC_3DP_SET_HEATBED_TEMP = 13, // 设置热床目标温度 CNC_3DP_SET_HEATBED_PARS = 14, // 设置热床参数 CNC_3DP_SET_HEATBED_POWER = 15, // 设置热床功率 CNC_3DP_SET_WPFAN_ONOFF = 16, // 设置冷却风扇开关 CNC_3DP_SET_WPFAN_STANDBY = 17, // 设置冷却风扇待机状态 CNC_3DP_SET_WPFAN_POWER = 18, // 设置冷却风扇功率 CNC_3DP_SET_WPFAN_PARS = 19, // 设置冷却风扇参数 CNC_3DP_ALL_OFF = 20, // 关闭所有设备 CNC_3DP_DEFAULT_PARS = 21, // 恢复默认参数 CNC_3DP_EXTRUDER_RES_OVERRIDE = 22, // 覆盖挤出机分辨率 CNC_3DP_UPDATE_SHOW_AS_GO_FEED = 23 // 更新进给显示 } CNC_3DP_COMMAND_ID; // 开关状态数据结构体 typedef struct CNC_3DP_ONOFF_DATA { CNC_ONOFF onOff; // CNC_ONOFF为API定义的开关枚举(通常0代表关,1代表开) } CNC_3DP_ONOFF_DATA; // 浮点值数据结构体 typedef struct CNC_3DP_FLOATVAL_DATA { float value; // 存储温度、功率等浮点类型参数 } CNC_3DP_FLOATVAL_DATA; // 命令数据结构体 typedef struct { CNC_3DPRINTING_TEMP_PID_PARS pidPars; // PID参数结构体(用于PID相关命令) CNC_3DP_ONOFF_DATA onOffVal; // 开关参数(用于开关类命令) CNC_3DP_FLOATVAL_DATA floatVal; // 浮点参数(用于温度、功率类命令) } CNC_3DP_CMD_DATA; // 3D打印命令主结构体 typedef struct _CNC_3DPRINTING_COMMAND { CNC_3DP_COMMAND_ID cmdID; // 命令ID,指定要执行的命令类型 CNC_3DP_CMD_DATA d; // 对应命令的参数数据 } CNC_3DPRINTING_COMMAND;
内容的提问来源于stack exchange,提问作者JCN
相关产品推荐
相关产品推荐

