Browse Source

update

change_pipette_api
zhaohe 2 years ago
parent
commit
ced01b81ca
  1. 6
      api/api.hpp
  2. 10
      api/reg_index.hpp
  3. 16
      api/zi_code_scaner.hpp
  4. 17
      api/zi_module.hpp
  5. 16
      api/zi_pipette_ctrl_module.hpp
  6. 21
      cmdid.hpp
  7. 21
      protocol_parser.cpp
  8. 25
      protocol_proxy.cpp
  9. 28
      protocol_proxy.hpp
  10. 19
      zmodule_device_manager.cpp
  11. 21
      zmodule_device_manager.hpp
  12. 27
      zmodule_device_script_cmder_paser.cpp

6
api/api.hpp

@ -21,4 +21,8 @@
//
#include "protocol_constant.hpp"
//
#include "reg_index.hpp"
#include "reg_index.hpp"
//
#include "zi_code_scaner.hpp"
//
#include "zi_pipette_ctrl_module.hpp"

10
api/reg_index.hpp

@ -17,7 +17,7 @@ typedef enum {
kreg_module_enableflag = REG_INDEX(0, 5), // 0idle,1busy,2error
kreg_module_errorbitflag0 = REG_INDEX(0, 6), // 模块异常标志,bit,每个模块自定义
kreg_module_errorbitflag1 = REG_INDEX(0, 7), //
kreg_module_input_state = REG_INDEX(0, 8), //
kreg_module_input_state = REG_INDEX(0, 8), //
kreg_module_output_state = REG_INDEX(0, 9), //
kreg_module_last_cmd_exec_status = REG_INDEX(20, 0), // 上一条指令执行的状态
kreg_module_last_cmd_exec_val0 = REG_INDEX(20, 1), // 上一条指令执行的结果0
@ -186,6 +186,14 @@ typedef enum {
kreg_pwm_pump3_speed_level = REG_INDEX(4040, 3), // PWM水泵0,1,2,3
kreg_pwm_pump4_speed_level = REG_INDEX(4040, 4), // PWM水泵0,1,2,3
/*******************************************************************************
* *
*******************************************************************************/
kreg_pipette_pos_ul = REG_INDEX(4100, 0), // 移液枪位置
kreg_pipette_capactitance_val = REG_INDEX(4100, 1), // 移液枪电容值
kreg_pipette_tip_state = REG_INDEX(4100, 2), // 移动液枪tip状态
kreg_pipette_limit_ul = REG_INDEX(4100, 3), // 移液枪ul限制
} reg_index_t;
} // namespace iflytop

16
api/zi_code_scaner.hpp

@ -0,0 +1,16 @@
#pragma once
#include <stdint.h>
#include <functional>
#include "errorcode.hpp"
namespace iflytop {
using namespace std;
class ZICodeScaner {
public:
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
};
} // namespace iflytop

17
api/zi_module.hpp

@ -7,6 +7,23 @@
namespace iflytop {
using namespace std;
class ModuleCMDExecStatus {
public:
int32_t exec_status = 0;
int32_t exec_val[6] = {0};
void set_exec_status(int32_t status, int32_t val0 = 0, int32_t val1 = 0, int32_t val2 = 0, int32_t val3 = 0, int32_t val4 = 0, int32_t val5 = 0) {
exec_status = status;
exec_val[0] = val0;
exec_val[1] = val1;
exec_val[2] = val2;
exec_val[3] = val3;
exec_val[4] = val4;
exec_val[5] = val5;
}
};
class ZIModule {
int32_t m_inited_flag = 0;

16
api/zi_pipette_ctrl_module.hpp

@ -0,0 +1,16 @@
#pragma once
#include <stdint.h>
#include <functional>
#include "errorcode.hpp"
namespace iflytop {
using namespace std;
class ZIPipetteCtrlModule {
public:
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
};
} // namespace iflytop

21
cmdid.hpp

@ -15,8 +15,8 @@ typedef enum {
kmodule_break = CMDID(1, 2), // para:{}, ack:{}
kmodule_get_last_exec_status = CMDID(1, 3), // para:{}, ack:{4}
kmodule_get_status = CMDID(1, 4), // para:{}, ack:{4}
kmodule_set_reg = CMDID(1, 5), // para:{4,4}, ack:{}
kmodule_get_reg = CMDID(1, 6), // para:{4}, ack:{4}I
kmodule_set_reg = CMDID(1, 5), // para:{4,4}, ack:{}
kmodule_get_reg = CMDID(1, 6), // para:{4}, ack:{4}I
kmodule_readio = CMDID(1, 7), // para:{}, ack:{4}
kmodule_writeio = CMDID(1, 8), // para:{4}, ack:{}
kmodule_read_adc = CMDID(1, 9), // para:{4}, ack:{4}
@ -90,8 +90,25 @@ typedef enum {
kxymotor_calculated_pos_by_move_to_zero = CMDID(3, 7), // para:{}, ack:{}
#if 0
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
kcode_scaner_start_scan = CMDID(4, 1), // para:{}, ack:{}
kcode_scaner_stop_scan = CMDID(4, 2), // para:{}, ack:{}
kcode_scaner_read_scaner_result = CMDID(4, 3), // para:{4,4}, ack:{4}
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
kpipette_ctrl_init_device = CMDID(5, 1), // para:{}, ack:{}
kpipette_ctrl_put_tip = CMDID(5, 2), // para:{}, ack:{}
kpipette_ctrl_move_to_ul = CMDID(5, 3), // para:{4}, ack:{}
} cmdid_t;
} // namespace zcr

21
protocol_parser.cpp

@ -202,7 +202,6 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in
virtual int32_t motor_calculated_pos_by_move_to_zero() { return err::koperation_not_support; }
#endif
PROCESS_PACKET_10(kmotor_enable, ZIMotor, motor_enable);
PROCESS_PACKET_30(kmotor_rotate, ZIMotor, motor_rotate);
@ -242,4 +241,24 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in
PROCESS_PACKET_00(kxymotor_move_to_zero_and_calculated_shift, ZIXYMotor, xymotor_move_to_zero_and_calculated_shift);
PROCESS_PACKET_02(kxymotor_read_pos, ZIXYMotor, xymotor_read_pos);
PROCESS_PACKET_00(kxymotor_calculated_pos_by_move_to_zero, ZIXYMotor, xymotor_calculated_pos_by_move_to_zero);
#if 0
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
PROCESS_PACKET_00(kcode_scaner_start_scan, ZICodeScaner, code_scaner_start_scan);
PROCESS_PACKET_00(kcode_scaner_stop_scan, ZICodeScaner, code_scaner_stop_scan);
PROCESS_BUF_REQUEST_1(kcode_scaner_read_scaner_result, ZICodeScaner, code_scaner_read_scaner_result);
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
PROCESS_PACKET_00(kpipette_ctrl_init_device, ZIPipetteCtrlModule, pipette_ctrl_init_device);
PROCESS_PACKET_00(kpipette_ctrl_put_tip, ZIPipetteCtrlModule, pipette_ctrl_put_tip);
PROCESS_PACKET_10(kpipette_ctrl_move_to_ul, ZIPipetteCtrlModule, pipette_ctrl_move_to_ul);
}

25
protocol_proxy.cpp

@ -176,3 +176,28 @@ int32_t ZIProtocolProxy::xymotor_move_to_zero() { PROXY_IMPL_00(kxymotor_move_to
int32_t ZIProtocolProxy::xymotor_move_to_zero_and_calculated_shift() { PROXY_IMPL_00(kxymotor_move_to_zero_and_calculated_shift, 30); }
int32_t ZIProtocolProxy::xymotor_read_pos(int32_t *ack0, int32_t *ack1) { PROXY_IMPL_02(kxymotor_read_pos, 30); }
int32_t ZIProtocolProxy::xymotor_calculated_pos_by_move_to_zero() { PROXY_IMPL_00(kxymotor_calculated_pos_by_move_to_zero, 30); }
#if 0
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
int32_t ZIProtocolProxy::code_scaner_start_scan() { PROXY_IMPL_00(kcode_scaner_start_scan, 30); }
int32_t ZIProtocolProxy::code_scaner_stop_scan() { PROXY_IMPL_00(kcode_scaner_stop_scan, 30); }
int32_t ZIProtocolProxy::code_scaner_read_scaner_result(int32_t para0, uint8_t *data, int32_t *len) {
int32_t param[1 + 1] = {0};
param[0] = para0;
int32_t ecode = m_cancmder->sendCmdAndReceiveBuf(kmodule_read_raw, m_id, param, 1, data, len, 100);
return ecode;
}
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
int32_t ZIProtocolProxy::pipette_ctrl_init_device() { PROXY_IMPL_00(kpipette_ctrl_init_device, 30); };
int32_t ZIProtocolProxy::pipette_ctrl_put_tip() { PROXY_IMPL_00(kpipette_ctrl_put_tip, 30); };
int32_t ZIProtocolProxy::pipette_ctrl_move_to_ul(int32_t para0) { PROXY_IMPL_10(kpipette_ctrl_move_to_ul, 30); };

28
protocol_proxy.hpp

@ -8,7 +8,9 @@
namespace iflytop {
class ZIProtocolProxy : public ZIMotor, //
public ZIXYMotor, //
public ZIModule {
public ZIModule,
public ZICodeScaner ,
public ZIPipetteCtrlModule{
private:
IZcanCmderMaster *m_cancmder;
int32_t m_id = 0;
@ -126,6 +128,30 @@ class ZIProtocolProxy : public ZIMotor, //
virtual int32_t xymotor_move_to_zero_and_calculated_shift() override;
virtual int32_t xymotor_read_pos(int32_t *x, int32_t *y) override;
virtual int32_t xymotor_calculated_pos_by_move_to_zero() override;
/*******************************************************************************
* ZICodeScaner *
*******************************************************************************/
#if 0
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
virtual int32_t code_scaner_start_scan() override;
virtual int32_t code_scaner_stop_scan() override;
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) override;
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
virtual int32_t pipette_ctrl_init_device() override;
virtual int32_t pipette_ctrl_put_tip() override;
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) override;
};
} // namespace iflytop

19
zmodule_device_manager.cpp

@ -109,3 +109,22 @@ int32_t ZModuleDeviceManager::xymotor_move_to_zero(uint16_t id) { PROXY_IMPL(ZIX
int32_t ZModuleDeviceManager::xymotor_move_to_zero_and_calculated_shift(uint16_t id) { PROXY_IMPL(ZIXYMotor, xymotor_move_to_zero_and_calculated_shift); }
int32_t ZModuleDeviceManager::xymotor_read_pos(uint16_t id, int32_t *x, int32_t *y) { PROXY_IMPL(ZIXYMotor, xymotor_read_pos, x, y); }
int32_t ZModuleDeviceManager::xymotor_calculated_pos_by_move_to_zero(uint16_t id) { PROXY_IMPL(ZIXYMotor, xymotor_calculated_pos_by_move_to_zero); }
#if 0
virtual int32_t code_scaner_start_scan(uint16_t id);
virtual int32_t code_scaner_stop_scan(uint16_t id);
virtual int32_t code_scaner_read_scaner_result(uint16_t id, int32_t startadd, uint8_t *data, int32_t *len);
#endif
int32_t ZModuleDeviceManager::code_scaner_start_scan(uint16_t id) { PROXY_IMPL(ZICodeScaner, code_scaner_start_scan); }
int32_t ZModuleDeviceManager::code_scaner_stop_scan(uint16_t id) { PROXY_IMPL(ZICodeScaner, code_scaner_stop_scan); }
int32_t ZModuleDeviceManager::code_scaner_read_scaner_result(uint16_t id, int32_t startadd, uint8_t *data, int32_t *len) { PROXY_IMPL(ZICodeScaner, code_scaner_read_scaner_result, startadd, data, len); }
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
int32_t ZModuleDeviceManager::pipette_ctrl_init_device(uint16_t id) { PROXY_IMPL(ZIPipetteCtrlModule, pipette_ctrl_init_device); }
int32_t ZModuleDeviceManager::pipette_ctrl_put_tip(uint16_t id) { PROXY_IMPL(ZIPipetteCtrlModule, pipette_ctrl_put_tip); }
int32_t ZModuleDeviceManager::pipette_ctrl_move_to_ul(uint16_t id, int32_t ul) { PROXY_IMPL(ZIPipetteCtrlModule, pipette_ctrl_move_to_ul, ul); }

21
zmodule_device_manager.hpp

@ -80,7 +80,6 @@ class ZModuleDeviceManager {
virtual int32_t module_flush_cfg(uint16_t id);
virtual int32_t module_active_cfg(uint16_t id);
virtual int32_t module_read_raw(uint16_t id, int32_t startadd, uint8_t *data, int32_t *len);
virtual int32_t module_enable(uint16_t id, int32_t enable);
@ -151,6 +150,26 @@ class ZModuleDeviceManager {
virtual int32_t xymotor_read_pos(uint16_t id, int32_t *x, int32_t *y);
virtual int32_t xymotor_calculated_pos_by_move_to_zero(uint16_t id);
#if 0
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
virtual int32_t code_scaner_start_scan(uint16_t id);
virtual int32_t code_scaner_stop_scan(uint16_t id);
virtual int32_t code_scaner_read_scaner_result(uint16_t id, int32_t startadd, uint8_t *data, int32_t *len);
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
virtual int32_t pipette_ctrl_init_device(uint16_t id);
virtual int32_t pipette_ctrl_put_tip(uint16_t id);
virtual int32_t pipette_ctrl_move_to_ul(uint16_t id, int32_t ul);
virtual ~ZModuleDeviceManager() {}
private:

27
zmodule_device_script_cmder_paser.cpp

@ -188,4 +188,31 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi
PROCESS_PACKET_10(xymotor_move_to_zero_and_calculated_shift, "(mid)");
PROCESS_PACKET_12(xymotor_read_pos, "(mid)");
PROCESS_PACKET_10(xymotor_calculated_pos_by_move_to_zero, "(mid)");
#if 0
virtual int32_t code_scaner_start_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_stop_scan() { return err::koperation_not_support; }
virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
PROCESS_PACKET_10(code_scaner_start_scan, "(mid)");
PROCESS_PACKET_10(code_scaner_stop_scan, "(mid)");
cancmder->regCMD("code_scaner_read_scaner_result", "(mid, pad0)", 2, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) {
if (atoi(paraV[2]) > (int32_t)sizeof(ack->rawdata)) {
ack->ecode = err::kbuffer_not_enough;
return;
}
ack->rawlen = sizeof(ack->rawdata);
ack->ecode = m_deviceManager->module_read_raw(atoi(paraV[0]), atoi(paraV[1]), ack->rawdata, &ack->rawlen);
ack->acktype = ICmdParserACK::kAckType_buf;
});
#if 0
virtual int32_t pipette_ctrl_init_device() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_put_tip() { return err::koperation_not_support; };
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) { return err::koperation_not_support; };
#endif
PROCESS_PACKET_10(pipette_ctrl_init_device, "(mid)");
PROCESS_PACKET_10(pipette_ctrl_put_tip, "(mid)");
PROCESS_PACKET_20(pipette_ctrl_move_to_ul, "(mid, ul)");
}
Loading…
Cancel
Save