Browse Source

update

master
zhaohe 2 years ago
parent
commit
25c741a63c
  1. 22
      api/i_mini_servo_module.hpp
  2. 35
      api/i_pipette_module.hpp
  3. 3
      api/i_step_motor_ctrl_module.hpp
  4. 14
      zcancmder_protocol.hpp

22
api/i_mini_servo_module.hpp

@ -12,30 +12,32 @@ class I_MiniServoModule {
public: public:
typedef enum { kNormalStop, kBreakStop } StopType_t; typedef enum { kNormalStop, kBreakStop } StopType_t;
#pragma pack(1) #pragma pack(1)
#if 0
typedef struct { typedef struct {
u8 exec_status;
s32 exec_status;
s32 has_run_time; s32 has_run_time;
} rotate_cb_status_t; } rotate_cb_status_t;
typedef struct { typedef struct {
u8 exec_status;
s32 exec_status;
s32 pos; s32 pos;
} move_to_cb_status_t; } move_to_cb_status_t;
typedef struct { typedef struct {
u8 exec_status;
s32 exec_status;
s32 dpos; s32 dpos;
} move_by_cb_status_t; } move_by_cb_status_t;
typedef struct { typedef struct {
u8 exec_status;
s32 exec_status;
s32 has_run_time; s32 has_run_time;
} run_with_torque_cb_status_t; } run_with_torque_cb_status_t;
typedef struct { typedef struct {
u8 exec_status;
s32 exec_status;
s32 pos; s32 pos;
} move_by_nolimit_cb_status_t; } move_by_nolimit_cb_status_t;
#endif
/******************************************************************************* /*******************************************************************************
* READ * * READ *
@ -94,11 +96,11 @@ class I_MiniServoModule {
virtual int32_t stop(u8 stop_type) = 0; virtual int32_t stop(u8 stop_type) = 0;
virtual int32_t position_calibrate(s32 calibrate_pos) = 0; virtual int32_t position_calibrate(s32 calibrate_pos) = 0;
virtual int32_t rotate(s32 speed, s32 torque, s32 run_time, function<void(rotate_cb_status_t& status)> status_cb) = 0;
virtual int32_t move_to(s32 pos, s32 speed, s32 torque, function<void(move_to_cb_status_t& status)> status_cb) = 0;
virtual int32_t move_by(s32 pos, s32 speed, s32 torque, function<void(move_by_cb_status_t& status)> status_cb) = 0;
virtual int32_t run_with_torque(s32 torque, s32 run_time, function<void(run_with_torque_cb_status_t& status)> status_cb) = 0;
virtual int32_t move_by_nolimit(s32 pos, s32 speed, s32 torque, function<void(move_by_nolimit_cb_status_t& status)> status_cb) = 0;
virtual int32_t rotate(s32 speed, s32 torque, s32 run_time, action_cb_status_t status_cb) = 0;
virtual int32_t move_to(s32 pos, s32 speed, s32 torque, action_cb_status_t status_cb) = 0;
virtual int32_t move_by(s32 pos, s32 speed, s32 torque, action_cb_status_t status_cb) = 0;
virtual int32_t run_with_torque(s32 torque, s32 run_time, action_cb_status_t status_cb) = 0;
virtual int32_t move_by_nolimit(s32 pos, s32 speed, s32 torque, action_cb_status_t status_cb) = 0;
virtual int32_t read_version(version_t& version) = 0; virtual int32_t read_version(version_t& version) = 0;
virtual int32_t read_status(status_t& status) = 0; virtual int32_t read_status(status_t& status) = 0;

35
api/i_pipette_module.hpp

@ -13,13 +13,15 @@ class I_PipetteModule {
public: public:
#pragma pack(1) #pragma pack(1)
ZSTRUCT(base_param_t, int16_t pad;);
ZSTRUCT(base_param_t, s16 pad;);
typedef struct { typedef struct {
uint8_t status; // 设备状态
uint8_t io_state; // IO0:z_zero_io/IO1:hastip/
int16_t zpos_mm; // z轴位置
int16_t pipette_ul; // 移液枪液量
u8 status; // 模块状态
u8 pipette_gun_status; // 移液枪状态
u8 io_state; // IO0:z_zero_io
u8 has_tip; // 是否有tip
s16 zpos_mm; // z轴位置,如果有tip,则自动加上tip高度
s16 pipette_ul; // 移液枪液量
} status_t; } status_t;
#pragma pack() #pragma pack()
@ -32,14 +34,25 @@ class I_PipetteModule {
virtual int32_t zero_pos_calibrate(action_cb_status_t status_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 reset_device(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 take_tip(s16 vel, s16 height_mm, s16 tip_hight_mm, action_cb_status_t status_cb) = 0;
virtual int32_t remove_tip(s16 vel, s16 height_mm, 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 move_to(s16 vel, s16 height_mm, action_cb_status_t status_cb) = 0;
virtual int32_t move_to_with_lld(s16 vel, s16 lld_cap_thr, s16 lld_max_hight_mm, s16 lld_rela_hight_mm, action_cb_status_t status_cb) = 0;
virtual int32_t shake_volume(s16 shake_times, s16 shake_volume, action_cb_status_t status_cb) = 0;
virtual int32_t take_and_split_liquid(s16 take_volume_mm, action_cb_status_t status_cb) = 0;
/*******************************************************************************
* ReadStatus *
*******************************************************************************/
virtual int32_t get_status(status_t &status) = 0; virtual int32_t get_status(status_t &status) = 0;
/*******************************************************************************
* SETTING *
*******************************************************************************/
virtual int32_t set_z_motor_para(const I_StepMotorCtrlModule::base_param_t &z_motor_param) = 0;
virtual int32_t get_z_motor_para(I_StepMotorCtrlModule::base_param_t &z_motor_param) = 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;
}; };
} // namespace iflytop } // namespace iflytop

3
api/i_step_motor_ctrl_module.hpp

@ -90,6 +90,9 @@ class I_StepMotorCtrlModule {
virtual int32_t read_detailed_status(detailed_status_t& debug_info) = 0; virtual int32_t read_detailed_status(detailed_status_t& debug_info) = 0;
virtual int32_t read_pos(int32_t& pos) = 0; virtual int32_t read_pos(int32_t& pos) = 0;
virtual int32_t read_pos() = 0;
virtual bool read_zero_io_state() = 0;
virtual int32_t set_base_param(const base_param_t& param) = 0; virtual int32_t set_base_param(const base_param_t& param) = 0;
virtual int32_t get_base_param(base_param_t& param) = 0; virtual int32_t get_base_param(base_param_t& param) = 0;

14
zcancmder_protocol.hpp

@ -57,8 +57,8 @@ typedef enum {
kcmd_step_motor_ctrl_read_status = CMDID(1007, 51), // 读取模块精简状态信息 kcmd_step_motor_ctrl_read_status = CMDID(1007, 51), // 读取模块精简状态信息
kcmd_step_motor_ctrl_read_detailed_status = CMDID(1007, 52), // 读取模块详细状态信息 kcmd_step_motor_ctrl_read_detailed_status = CMDID(1007, 52), // 读取模块详细状态信息
kcmd_step_motor_ctrl_set_base_param = CMDID(1007, 100), // 设置运行参数
kcmd_step_motor_ctrl_get_base_param = CMDID(1007, 101), // 设置运行参数
kcmd_step_motor_ctrl_set_base_param = CMDID(1007, 100), // 设置运行参数
kcmd_step_motor_ctrl_get_base_param = CMDID(1007, 101), // 设置运行参数
/******************************************************************************* /*******************************************************************************
* |Module_1008: * * |Module_1008: *
@ -256,11 +256,11 @@ 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_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_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_AND_REPORT(kcmd_mini_servo_ctrl_rotate, CMD(u8 id; s32 speed; s32 torque; s32 run_time;), ACK(u8 id;), REPORT(u8 id; int32_t exec_status;));
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; int32_t exec_status;));
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; int32_t exec_status;));
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; int32_t exec_status;));
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; int32_t exec_status;));
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_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_status, CMD(u8 id;), ACK(u8 id; I_MiniServoModule::status_t ack;));

Loading…
Cancel
Save