diff --git a/api/i_mini_servo_module.hpp b/api/i_mini_servo_module.hpp index 766482e..6b8a806 100644 --- a/api/i_mini_servo_module.hpp +++ b/api/i_mini_servo_module.hpp @@ -13,32 +13,27 @@ class I_MiniServoModule { typedef enum { kNormalStop, kBreakStop } StopType_t; #pragma pack(1) typedef struct { - u8 id; - u8 status; + u8 exec_status; s32 has_run_time; } rotate_cb_status_t; typedef struct { - u8 id; - u8 status; + u8 exec_status; s32 pos; } move_to_cb_status_t; typedef struct { - u8 id; - u8 status; + u8 exec_status; s32 dpos; } move_by_cb_status_t; typedef struct { - u8 id; - u8 status; + u8 exec_status; s32 has_run_time; } run_with_torque_cb_status_t; typedef struct { - u8 id; - u8 status; + u8 exec_status; s32 pos; } move_by_nolimit_cb_status_t; diff --git a/zcancmder_protocol.hpp b/zcancmder_protocol.hpp index 171c531..8872542 100644 --- a/zcancmder_protocol.hpp +++ b/zcancmder_protocol.hpp @@ -2,6 +2,7 @@ #include #include "api/basic_type.hpp" +#include "api/i_mini_servo_module.hpp" #include "api/i_step_motor_ctrl_module.hpp" #include "api/i_xyrobot_ctrl_module.hpp" #include "zcancmder_protocol_basic.hpp" @@ -32,8 +33,8 @@ typedef enum { kcmd_xy_robot_ctrl_move_by = CMDID(1006, 5), // 机器人移动指定距离 kcmd_xy_robot_ctrl_force_change_current_pos = CMDID(1006, 6), // 强制修改当前位置 - kcmd_xy_robot_ctrl_read_version = CMDID(1006, 50), // 读取模块型号版本信息 - kcmd_xy_robot_ctrl_read_status = CMDID(1006, 51), // 读取模块精简状态信息 + kcmd_xy_robot_ctrl_read_version = CMDID(1006, 50), // 读取模块型号版本信息 + kcmd_xy_robot_ctrl_read_status = CMDID(1006, 51), // 读取模块精简状态信息 kcmd_xy_robot_ctrl_read_detailed_status = CMDID(1006, 52), // 读取模块详细状态信息 kcmd_xy_robot_ctrl_set_run_param = CMDID(1006, 100), // 设置运行参数 @@ -52,8 +53,8 @@ typedef enum { kcmd_step_motor_ctrl_force_change_current_pos = CMDID(1007, 6), // 相对移动 kcmd_step_motor_ctrl_rotate = CMDID(1007, 7), // 相对移动 - kcmd_step_motor_ctrl_read_version = CMDID(1007, 50), // 读取模块型号版本信息 - kcmd_step_motor_ctrl_read_status = CMDID(1007, 51), // 读取模块精简状态信息 + kcmd_step_motor_ctrl_read_version = CMDID(1007, 50), // 读取模块型号版本信息 + kcmd_step_motor_ctrl_read_status = CMDID(1007, 51), // 读取模块精简状态信息 kcmd_step_motor_ctrl_read_detailed_status = CMDID(1007, 52), // 读取模块详细状态信息 kcmd_step_motor_ctrl_set_run_param = CMDID(1007, 100), // 设置运行参数 @@ -72,14 +73,16 @@ typedef enum { kcmd_mini_servo_ctrl_run_with_torque = CMDID(1008, 6), // 开环扭矩模式 kcmd_mini_servo_ctrl_move_by_nolimit = CMDID(1008, 7), // 相对移动,位置模式无限制,移动不受最大位置和最小位置限制,但无法读取到当前位置 - kcmd_mini_servo_ctrl_read_version = CMDID(1008, 50), // 读取模块型号版本信息 - kcmd_mini_servo_ctrl_read_status = CMDID(1008, 51), // 读取模块精简状态信息 + kcmd_mini_servo_ctrl_read_version = CMDID(1008, 50), // 读取模块型号版本信息 + kcmd_mini_servo_ctrl_read_status = CMDID(1008, 51), // 读取模块精简状态信息 kcmd_mini_servo_ctrl_read_detailed_status = CMDID(1008, 52), // 读取模块详细状态信息 kcmd_mini_servo_ctrl_set_run_param = CMDID(1008, 100), kcmd_mini_servo_ctrl_get_run_param = CMDID(1008, 101), - kcmd_mini_servo_ctrl_set_warning_limit_param = CMDID(1008, 101), - kcmd_mini_servo_ctrl_get_warning_limit_param = CMDID(1008, 102), + kcmd_mini_servo_ctrl_set_warning_limit_param = CMDID(1008, 102), + kcmd_mini_servo_ctrl_get_warning_limit_param = CMDID(1008, 103), + kcmd_mini_servo_ctrl_set_basic_param = CMDID(1008, 104), + kcmd_mini_servo_ctrl_get_basic_param = CMDID(1008, 105), /******************************************************************************* * |Module_1009:EEPROM * @@ -100,8 +103,8 @@ typedef enum { kcmd_heater_ctrl_module_start_ctrl_temperature = CMDID(1011, 0), // 设置目标温度 kcmd_heater_ctrl_module_read_stop_temperature = CMDID(1011, 1), // 读取停止温度 - kcmd_heater_ctrl_module_read_version = CMDID(1011, 50), // 读取模块型号版本信息 - kcmd_heater_ctrl_module_read_status = CMDID(1011, 51), // 读取模块精简状态信息 + kcmd_heater_ctrl_module_read_version = CMDID(1011, 50), // 读取模块型号版本信息 + kcmd_heater_ctrl_module_read_status = CMDID(1011, 51), // 读取模块精简状态信息 kcmd_heater_ctrl_module_read_detailed_status = CMDID(1011, 52), // 读取模块详细状态信息 kcmd_heater_ctrl_module_set_run_param = CMDID(1011, 100), // 设置运行参数 @@ -118,8 +121,8 @@ typedef enum { kcmd_optical_barcode_reader_motor_stop = CMDID(1012, 8), // 电机停止 kcmd_optical_barcode_reader_motor_enable = CMDID(1012, 9), // 电机使能 - kcmd_optical_barcode_reader_read_version = CMDID(1012, 50), // 读取模块型号版本信息 - kcmd_optical_barcode_reader_read_status = CMDID(1012, 51), // 读取模块精简状态信息 + kcmd_optical_barcode_reader_read_version = CMDID(1012, 50), // 读取模块型号版本信息 + kcmd_optical_barcode_reader_read_status = CMDID(1012, 51), // 读取模块精简状态信息 kcmd_optical_barcode_reader_read_detailed_status = CMDID(1012, 52), // 读取模块详细状态信息 kcmd_optical_barcode_reader_set_run_param = CMDID(1012, 100), // 设置运行参数 @@ -138,8 +141,8 @@ typedef enum { kcmd_board_clamp_module_moter_stop = CMDID(1013, 5), // 电机停止 kcmd_board_clamp_module_moter_enable = CMDID(1013, 6), // 电机使能 - kcmd_board_clamp_module_read_version = CMDID(1013, 50), // 读取模块型号版本信息 - kcmd_board_clamp_module_read_status = CMDID(1013, 51), // 读取模块精简状态信息 + kcmd_board_clamp_module_read_version = CMDID(1013, 50), // 读取模块型号版本信息 + kcmd_board_clamp_module_read_status = CMDID(1013, 51), // 读取模块精简状态信息 kcmd_board_clamp_module_read_detailed_status = CMDID(1013, 52), // 读取模块详细状态信息 kcmd_board_clamp_module_set_run_param = CMDID(1013, 100), // 设置运行参数 @@ -150,8 +153,8 @@ typedef enum { /******************************************************************************* * |Module_1014:风扇 * *******************************************************************************/ - kcmd_fan_module_fan_ctrl = CMDID(1014, 0), // 风扇控制 - kcmd_fan_module_fan_read_status = CMDID(1014, 50), // 读取模块精简状态信息 + kcmd_fan_module_fan_ctrl = CMDID(1014, 0), // 风扇控制 + kcmd_fan_module_fan_read_status = CMDID(1014, 50), // 读取模块精简状态信息 kcmd_fan_module_fan_read_detailed_status = CMDID(1014, 51), // 读取模块详细状态信息 // 串口透传 @@ -179,8 +182,8 @@ typedef enum { kcmd_pipette_module_take_tip = CMDID(1016, 6), // 取tip kcmd_pipette_module_remove_tip = CMDID(1016, 7), // 移除tip - kcmd_pipette_module_read_version = CMDID(1016, 50), // 读取模块型号版本信息 - kcmd_pipette_module_read_status = CMDID(1016, 51), // 读取模块精简状态信息 + kcmd_pipette_module_read_version = CMDID(1016, 50), // 读取模块型号版本信息 + kcmd_pipette_module_read_status = CMDID(1016, 51), // 读取模块精简状态信息 kcmd_pipette_module_read_detailed_status = CMDID(1016, 52), // 读取模块详细状态信息 kcmd_pipette_module_set_run_param = CMDID(1016, 100), // 设置运行参数 @@ -251,37 +254,28 @@ ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_run_to_zero_param, CMD(u8 id; u8 opt_ty /******************************************************************************* * |Module_1008:舵机 * *******************************************************************************/ +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_enable, CMD(u8 id; u8 enable;), ACK(u8 id;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_stop, CMD(u8 id; u8 stop_type;), ACK(u8 id;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_position_calibrate, CMD(u8 id; s32 calibrate_pos;), ACK(u8 id;)); -ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_enable, - CMD(u8 id; u8 enable;), // - ACK(u8 id;)); -ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_stop, - CMD(u8 id; u8 stop_type;), // - ACK(u8 id;)); -ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_position_calibrate, - CMD(u8 id; s32 calibrate_pos;), // - ACK(u8 id;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_rotate, CMD(u8 id; s32 speed; s32 torque; s32 run_time;), ACK(u8 id;), REPORT(u8 id; I_MiniServoModule::rotate_cb_status_t report;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_move_to, CMD(u8 id; s32 pos; s32 speed; s32 torque;), ACK(u8 id;), REPORT(u8 id; I_MiniServoModule::move_to_cb_status_t report;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_move_by, CMD(u8 id; s32 pos; s32 speed; s32 torque;), ACK(u8 id;), REPORT(u8 id; I_MiniServoModule::move_by_cb_status_t report;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_run_with_torque, CMD(u8 id; s32 torque; s32 run_time;), ACK(u8 id;), REPORT(u8 id; I_MiniServoModule::run_with_torque_cb_status_t report;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_move_by_nolimit, CMD(u8 id; s32 pos; s32 speed; s32 torque;), ACK(u8 id;), REPORT(u8 id; I_MiniServoModule::move_by_nolimit_cb_status_t report;)); + +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_read_version, CMD(u8 id;), ACK(u8 id; I_MiniServoModule::version_t ack;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_read_status, CMD(u8 id;), ACK(u8 id; I_MiniServoModule::status_t ack;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_read_detailed_status, CMD(u8 id;), ACK(u8 id; I_MiniServoModule::detailed_status_t ack;)); + +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_set_run_param, CMD(u8 id; u8 opt_type; I_MiniServoModule::run_param_t param;), ACK(u8 id; I_MiniServoModule::run_param_t ack;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_set_basic_param, CMD(u8 id; u8 opt_type; I_MiniServoModule::basic_param_t param;), ACK(u8 id; I_MiniServoModule::basic_param_t ack;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_set_warning_limit_param, CMD(u8 id; u8 opt_type; I_MiniServoModule::warning_limit_param_t param;), ACK(u8 id; I_MiniServoModule::warning_limit_param_t ack;)); + +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_get_run_param, CMD(u8 id; u8 opt_type;), ACK(u8 id; I_MiniServoModule::run_param_t ack;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_get_basic_param, CMD(u8 id; u8 opt_type;), ACK(u8 id; I_MiniServoModule::basic_param_t ack;)); +ZPACKET_CMD_ACK(kcmd_mini_servo_ctrl_get_warning_limit_param, CMD(u8 id; u8 opt_type;), ACK(u8 id; I_MiniServoModule::warning_limit_param_t ack;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_rotate, - CMD(u8 id; s32 speed; s32 run_time;), // - ACK(u8 id;), // - REPORT(u8 id; u8 status; s32 has_run_time;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_move_to, - CMD(u8 id; s32 pos; s32 speed; s32 torque;), // - ACK(u8 id;), // - REPORT(u8 id; u8 status; s32 pos;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_move_by, - CMD(u8 id; s32 pos; s32 speed; s32 torque;), // - ACK(u8 id;), // - REPORT(u8 id; u8 status; s32 pos;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_run_with_torque, - CMD(u8 id; s32 torque; s32 run_time;), // - ACK(u8 id;), // - REPORT(u8 id; u8 status; s32 has_run_time;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_mini_servo_ctrl_move_by_nolimit, - CMD(u8 id; s32 pos; s32 speed; s32 torque;), // - ACK(u8 id;), // - REPORT(u8 id; u8 status; s32 pos;)); /******************************************************************************* * |Module_1009:EEPROM * *******************************************************************************/