#pragma once #include #include #include "basic_type.hpp" // namespace iflytop { using namespace std; class I_PipetteModule { public: #pragma pack(1) ZSTRUCT(base_param_t, int16_t pad;); 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;); 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 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