diff --git a/api/basic_type.hpp b/api/basic_type.hpp index 682ce34..4dbe06e 100644 --- a/api/basic_type.hpp +++ b/api/basic_type.hpp @@ -1,5 +1,7 @@ #pragma once #include + +#include namespace iflytop { typedef uint8_t u8; typedef uint16_t u16; @@ -38,4 +40,6 @@ typedef enum { #endif -} // namespace iflytop \ No newline at end of file +typedef std::function action_cb_status_t; + +} // namespace iflytop diff --git a/api/i_pipette_module.hpp b/api/i_pipette_module.hpp index 4d2a634..af81d22 100644 --- a/api/i_pipette_module.hpp +++ b/api/i_pipette_module.hpp @@ -34,18 +34,17 @@ class I_PipetteModule { ZSTRUCT(tippara_t, uint8_t id; int16_t tiphight;); ZSTRUCT(platformpara_t, uint8_t id; int16_t take_tip_height_mm; int16_t remove_tip_height_mm; int16_t transfer_height_mm;); - ZSTRUCT(action_cb_status_t, u8 exec_status;); + // ZSTRUCT(action_cb_status_t, u8 exec_status;); virtual int32_t enable(u8 enable) = 0; virtual int32_t stop(u8 stop_type) = 0; - virtual int32_t zero_pos_calibrate(function exec_complete_cb) = 0; - virtual int32_t reset_device(function exec_complete_cb) = 0; + virtual int32_t zero_pos_calibrate(action_cb_status_t status_cb) = 0; + virtual int32_t reset_device(action_cb_status_t status_cb) = 0; - virtual int32_t take_tip(int tipid, function exec_complete_cb) = 0; - virtual int32_t remove_tip(function exec_complete_cb) = 0; + virtual int32_t take_tip(int tipid, action_cb_status_t status_cb) = 0; + virtual int32_t remove_tip(action_cb_status_t status_cb) = 0; // 取液(平台参数,试管参数, 取样体积,取样高度,摇匀次数,摇匀体积) - virtual int32_t take_and_split_liquid(u8 tube_id, s16 liquid_volume, s16 zhight, s16 abs_zhight, s16 shake_times, s16 shake_volume, // - function exec_complete_cb) = 0; + virtual int32_t take_and_split_liquid(u8 tube_id, s16 liquid_volume, s16 zhight, s16 abs_zhight, s16 shake_times, s16 shake_volume, action_cb_status_t status_cb) = 0; }; } // namespace iflytop diff --git a/api/i_step_motor_ctrl_module.hpp b/api/i_step_motor_ctrl_module.hpp index faa5815..b995a2f 100644 --- a/api/i_step_motor_ctrl_module.hpp +++ b/api/i_step_motor_ctrl_module.hpp @@ -17,30 +17,6 @@ class I_StepMotorCtrlModule { * ACTION * *******************************************************************************/ #pragma pack(1) - typedef struct { - int32_t exec_status; - int32_t tox; - } move_to_cb_status_t; - - typedef struct { - int32_t exec_status; - int32_t dx; - } move_by_cb_status_t; - - typedef struct { - int32_t exec_status; - } move_to_zero_cb_status_t; - - typedef struct { - int32_t exec_status; - int32_t zero_shift_x; - } move_to_zero_with_calibrate_cb_status_t; - - typedef struct { - int32_t exec_status; - int32_t lastforms; - } rotate_cb_status_t; - /******************************************************************************* * READ * *******************************************************************************/ @@ -91,16 +67,17 @@ class I_StepMotorCtrlModule { #pragma pack() public: - virtual bool isbusy() = 0; - - virtual int32_t move_to(int32_t x, function status_cb) = 0; - virtual int32_t move_by(int32_t dx, function status_cb) = 0; - virtual int32_t move_to_zero(function status_cb) = 0; - virtual int32_t move_to_zero_with_calibrate(int32_t x, function status_cb) = 0; - virtual int32_t enable(bool venable) = 0; - virtual int32_t stop(uint8_t stopType) = 0; - virtual int32_t force_change_current_pos(int32_t x) = 0; - virtual int32_t rotate(int32_t speed, int32_t lastforms, function status_cb) = 0; + virtual bool isbusy() = 0; + virtual int32_t get_last_exec_status() = 0; + + virtual int32_t move_to(int32_t x, action_cb_status_t status_cb) = 0; + virtual int32_t move_by(int32_t dx, action_cb_status_t status_cb) = 0; + virtual int32_t move_to_zero(action_cb_status_t status_cb) = 0; + virtual int32_t move_to_zero_with_calibrate(int32_t x, action_cb_status_t status_cb) = 0; + virtual int32_t rotate(int32_t speed, int32_t lastforms, action_cb_status_t status_cb) = 0; + virtual int32_t enable(bool venable) = 0; + virtual int32_t stop(uint8_t stopType) = 0; + virtual int32_t force_change_current_pos(int32_t x) = 0; virtual int32_t read_version(version_t& version) = 0; virtual int32_t read_status(status_t& status) = 0; diff --git a/zcancmder_protocol.hpp b/zcancmder_protocol.hpp index 8872542..9384263 100644 --- a/zcancmder_protocol.hpp +++ b/zcancmder_protocol.hpp @@ -236,12 +236,12 @@ ZPACKET_CMD_ACK(kcmd_xy_robot_ctrl_set_run_to_zero_param, CMD(u8 id; u8 opt_type ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_enable, CMD(u8 id; u8 enable;), ACK(u8 id;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_stop, CMD(u8 id; u8 stop_type;), ACK(u8 id;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero, CMD(u8 id;), ACK(u8 id;), REPORT(u8 id; I_StepMotorCtrlModule::move_to_zero_cb_status_t status;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero_with_calibrate, CMD(u8 id; s32 nowx; s32 nowy;), ACK(u8 id;), REPORT(u8 id; I_StepMotorCtrlModule::move_to_zero_with_calibrate_cb_status_t status;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to, CMD(u8 id; s32 x; s32 speed;), ACK(u8 id;), REPORT(u8 id; I_StepMotorCtrlModule::move_to_cb_status_t status;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_by, CMD(u8 id; s32 dx; s32 speed;), ACK(u8 id;), REPORT(u8 id; I_StepMotorCtrlModule::move_by_cb_status_t status;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero, CMD(u8 id;), ACK(u8 id;), REPORT(u8 id; int32_t exec_status;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero_with_calibrate, CMD(u8 id; s32 nowx; s32 nowy;), ACK(u8 id;), REPORT(u8 id; int32_t exec_status;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to, CMD(u8 id; s32 x; s32 speed;), ACK(u8 id;), REPORT(u8 id; int32_t exec_status;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_by, CMD(u8 id; s32 dx; s32 speed;), ACK(u8 id;), REPORT(u8 id; int32_t exec_status;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_force_change_current_pos, CMD(u8 id; s32 x;), ACK(u8 id;)); -ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_rotate, CMD(u8 id; s32 speed; s32 run_time;), ACK(u8 id;), REPORT(u8 id; I_StepMotorCtrlModule::rotate_cb_status_t status;)); +ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_rotate, CMD(u8 id; s32 speed; s32 run_time;), ACK(u8 id;), REPORT(u8 id; int32_t exec_status;)); // READ ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_version, CMD(u8 id;), ACK(u8 id; I_StepMotorCtrlModule::version_t ack;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_status, CMD(u8 id;), ACK(u8 id; I_StepMotorCtrlModule::status_t ack;));