diff --git a/api/basic_type.hpp b/api/basic_type.hpp index 4dbe06e..5f3b6f6 100644 --- a/api/basic_type.hpp +++ b/api/basic_type.hpp @@ -27,9 +27,9 @@ typedef enum { } MotorStopType_t; typedef enum { - kmodule_statu_idle, - kmodule_statu_work, - kmodule_statu_exception, + kmodule_statu_idle = 0, + kmodule_statu_work = 1, + kmodule_statu_exception = 2, } module_statu_type_t; #ifndef ZSTRUCT diff --git a/api/i_pipette_module.hpp b/api/i_pipette_module.hpp index af81d22..b5285e6 100644 --- a/api/i_pipette_module.hpp +++ b/api/i_pipette_module.hpp @@ -11,28 +11,22 @@ namespace iflytop { using namespace std; class I_PipetteModule { public: -#if 0 - 0. 设备信息 - 1. Z轴步数和高度的换算系数 - 2. Z轴偏移 - 3. Z轴最大高度 - - 1. 预设参数(试管信息) - 1.触底高度 - 2.平台移动高度 - 3.体积高度公式 - 4.液面跟随 - -3. 平台参数设置(平台信息) - 1. 取tip高度 - 2. 丢tip高度 - 3. 转移高度 - 4. tip头型号 -#endif - ZSTRUCT(devicepara_t, u8 z_shaft; s16 z_shift; s16 z_step2mm; u16 z_max_height_mm;); - ZSTRUCT(tubepara_t, uint8_t id; int16_t bottom_height_mm; uint8_t follow_liquid;); - 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;); +#pragma pack(1) + + ZSTRUCT(base_param_t, + int16_t take_tip_height_mm; // + int16_t remove_tip_height_mm; // + int16_t transfer_height_mm; // + int16_t tiphight;); + + typedef struct { + uint8_t status; // 设备状态 + uint8_t io_state; // IO0:z_zero_io/IO1:hastip/ + int16_t zpos_mm; // z轴位置 + int16_t pipette_ul; // 移液枪液量 + } status_t; + +#pragma pack() // ZSTRUCT(action_cb_status_t, u8 exec_status;); @@ -42,9 +36,14 @@ class I_PipetteModule { 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, action_cb_status_t status_cb) = 0; - virtual int32_t remove_tip(action_cb_status_t status_cb) = 0; + virtual int32_t take_tip(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, action_cb_status_t status_cb) = 0; + + virtual int32_t set_base_param(const base_param_t &base_param) = 0; + virtual int32_t get_base_param(base_param_t &base_param) = 0; + + virtual int32_t get_status(status_t &status) = 0; }; } // namespace iflytop diff --git a/api/i_step_motor_ctrl_module.hpp b/api/i_step_motor_ctrl_module.hpp index b995a2f..09c3a00 100644 --- a/api/i_step_motor_ctrl_module.hpp +++ b/api/i_step_motor_ctrl_module.hpp @@ -41,29 +41,25 @@ class I_StepMotorCtrlModule { *******************************************************************************/ typedef struct { - u8 x_shaft; - u8 ihold; - u8 irun; - u16 iholddelay; + s32 x_shaft; s32 distance_scale; // 0.001 - s32 shift_x; + s32 ihold; + s32 irun; + u16 iholddelay; + s32 acc; s32 dec; s32 maxspeed; s32 min_x; s32 max_x; - } run_param_t; - - typedef struct { - uint8_t pad; - } warning_limit_param_t; + // + s32 shift_x; + s32 run_to_zero_move_to_zero_max_d; + s32 run_to_zero_leave_from_zero_max_d; + s32 run_to_zero_speed; + s32 run_to_zero_dec; + } base_param_t; - typedef struct { - u32 move_to_zero_max_d; - u32 leave_from_zero_max_d; - u32 speed; - u32 dec; - } run_to_zero_param_t; #pragma pack() public: @@ -79,12 +75,16 @@ class I_StepMotorCtrlModule { virtual int32_t stop(uint8_t stopType) = 0; virtual int32_t force_change_current_pos(int32_t x) = 0; + virtual int32_t move_to_block(int32_t tox) = 0; + virtual int32_t move_by_block(int32_t dx) = 0; + virtual int32_t move_to_zero_block() = 0; + virtual int32_t move_to_zero_with_calibrate_block(int32_t x) = 0; + virtual int32_t read_version(version_t& version) = 0; virtual int32_t read_status(status_t& status) = 0; virtual int32_t read_detailed_status(detailed_status_t& debug_info) = 0; - virtual int32_t set_run_param(uint8_t operation, const run_param_t& param, run_param_t& ack) = 0; - virtual int32_t set_run_to_zero_param(uint8_t operation, const run_to_zero_param_t& param, run_to_zero_param_t& ack) = 0; - virtual int32_t set_warning_limit_param(uint8_t operation, const warning_limit_param_t& param, warning_limit_param_t& ack) = 0; + virtual int32_t set_base_param(const base_param_t& param) = 0; + virtual int32_t get_base_param(base_param_t& param) = 0; }; } // namespace iflytop \ No newline at end of file diff --git a/zcancmder_protocol.hpp b/zcancmder_protocol.hpp index 9384263..35d4d5a 100644 --- a/zcancmder_protocol.hpp +++ b/zcancmder_protocol.hpp @@ -57,9 +57,8 @@ typedef enum { 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), // 设置运行参数 - kcmd_step_motor_ctrl_set_warning_limit_param = CMDID(1007, 101), // 设置警告限制参数 - kcmd_step_motor_ctrl_set_run_to_zero_param = CMDID(1007, 102), // 设置归零参数 + kcmd_step_motor_ctrl_set_base_param = CMDID(1007, 100), // 设置运行参数 + kcmd_step_motor_ctrl_get_base_param = CMDID(1007, 101), // 设置运行参数 /******************************************************************************* * |Module_1008:舵机 * @@ -247,9 +246,8 @@ ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_version, CMD(u8 id;), ACK(u8 id; I_Ste ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_status, CMD(u8 id;), ACK(u8 id; I_StepMotorCtrlModule::status_t ack;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_detailed_status, CMD(u8 id;), ACK(u8 id; I_StepMotorCtrlModule::detailed_status_t ack;)); // SET -ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_run_param, CMD(u8 id; u8 opt_type; I_StepMotorCtrlModule::run_param_t param;), ACK(u8 id; I_StepMotorCtrlModule::run_param_t ack;)); -ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_warning_limit_param, CMD(u8 id; u8 opt_type; I_StepMotorCtrlModule::warning_limit_param_t param;), ACK(u8 id; I_StepMotorCtrlModule::warning_limit_param_t ack;)); -ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_run_to_zero_param, CMD(u8 id; u8 opt_type; I_StepMotorCtrlModule::run_to_zero_param_t param;), ACK(u8 id; I_StepMotorCtrlModule::run_to_zero_param_t ack;)); +ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_base_param, CMD(u8 id; u8 opt_type; I_StepMotorCtrlModule::base_param_t param;), ACK(u8 id;)); +ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_get_base_param, CMD(u8 id;), ACK(u8 id; I_StepMotorCtrlModule::base_param_t ack;)); /******************************************************************************* * |Module_1008:舵机 *