Browse Source

update

master
zhaohe 2 years ago
parent
commit
3703970068
  1. 6
      api/basic_type.hpp
  2. 45
      api/i_pipette_module.hpp
  3. 38
      api/i_step_motor_ctrl_module.hpp
  4. 10
      zcancmder_protocol.hpp

6
api/basic_type.hpp

@ -27,9 +27,9 @@ typedef enum {
} MotorStopType_t; } MotorStopType_t;
typedef enum { 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; } module_statu_type_t;
#ifndef ZSTRUCT #ifndef ZSTRUCT

45
api/i_pipette_module.hpp

@ -11,28 +11,22 @@ namespace iflytop {
using namespace std; using namespace std;
class I_PipetteModule { class I_PipetteModule {
public: 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;); // 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 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(int tipid, 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 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_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 } // namespace iflytop

38
api/i_step_motor_ctrl_module.hpp

@ -41,29 +41,25 @@ class I_StepMotorCtrlModule {
*******************************************************************************/ *******************************************************************************/
typedef struct { typedef struct {
u8 x_shaft;
u8 ihold;
u8 irun;
u16 iholddelay;
s32 x_shaft;
s32 distance_scale; // 0.001 s32 distance_scale; // 0.001
s32 shift_x;
s32 ihold;
s32 irun;
u16 iholddelay;
s32 acc; s32 acc;
s32 dec; s32 dec;
s32 maxspeed; s32 maxspeed;
s32 min_x; s32 min_x;
s32 max_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() #pragma pack()
public: public:
@ -79,12 +75,16 @@ class I_StepMotorCtrlModule {
virtual int32_t stop(uint8_t stopType) = 0; virtual int32_t stop(uint8_t stopType) = 0;
virtual int32_t force_change_current_pos(int32_t x) = 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_version(version_t& version) = 0;
virtual int32_t read_status(status_t& status) = 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 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 } // namespace iflytop

10
zcancmder_protocol.hpp

@ -57,9 +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_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: * * |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_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;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_detailed_status, CMD(u8 id;), ACK(u8 id; I_StepMotorCtrlModule::detailed_status_t ack;));
// SET // 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: * * |Module_1008: *

Loading…
Cancel
Save