You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:07:43