#pragma once #include #include #include "basic_type.hpp" #include "i_step_motor_ctrl_module.hpp" // namespace iflytop { using namespace std; class I_PipetteModule { public: #pragma pack(1) ZSTRUCT(base_param_t, s16 pad;); typedef struct { 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; #pragma pack() // 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(action_cb_status_t status_cb) = 0; // virtual int32_t reset_device(action_cb_status_t status_cb) = 0; virtual int32_t zmotor_reset(action_cb_status_t status_cb) = 0; virtual int32_t pipette_reset(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 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(s16 shake_times, s16 shake_volume, action_cb_status_t status_cb) = 0; virtual int32_t pipette_move_to_ul(s16 take_volume_mm, action_cb_status_t status_cb) = 0; /******************************************************************************* * ReadStatus * *******************************************************************************/ 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; virtual ~I_PipetteModule() {} }; } // namespace iflytop