Browse Source

update

master
zhaohe 1 year ago
parent
commit
1845c474e6
  1. 38
      components/pipette_module/pipette_ctrl_module_v2.cpp
  2. 9
      components/pipette_module/pipette_ctrl_module_v2.hpp
  3. 18
      components/zcancmder/zcan_protocol_parser.cpp
  4. 3
      components/zcancmder/zcan_protocol_parser.hpp

38
components/pipette_module/pipette_ctrl_module_v2.cpp

@ -146,12 +146,12 @@ int32_t PipetteModule::pipette_mlld(int32_t zdpos, int32_t c_threshold, int32_t
int32_t PipetteModule::pipette_aspirate(int32_t ul) {
ZLOGI(TAG, "pipette_aspirate %d", ul);
if (creg.module_status == 1) return err::kdevice_is_busy;
return do_pipette_aspirate(ul);
return do_pipette_aspirate(ul, 0, 0);
};
int32_t PipetteModule::pipette_distribut(int32_t ul) {
ZLOGI(TAG, "pipette_distribut %d", ul);
if (creg.module_status == 1) return err::kdevice_is_busy;
return do_pipette_distribut(ul);
return do_pipette_distribut(ul, 0, 0);
};
int32_t PipetteModule::pipette_shake_up(int32_t ul, int32_t times) {
ZLOGI(TAG, "pipette_shake_up %d %d", ul, times);
@ -164,6 +164,21 @@ int32_t PipetteModule::pipette_lld_is_detect_liquid(int32_t *detect_liquid) { /
return 0;
}
int32_t PipetteModule::pipette_aspirate_llf(int32_t ul, int32_t dpos, int32_t zmotor_v) { //
ZLOGI(TAG, "pipette_aspirate_llf %d %d %d", ul, dpos, zmotor_v);
if (creg.module_status == 1) return err::kdevice_is_busy;
return do_pipette_aspirate(ul, dpos, zmotor_v);
}
int32_t PipetteModule::pipette_distribut_llf(int32_t ul, int32_t dpos, int32_t zmotor_v) { //
ZLOGI(TAG, "pipette_distribut_llf %d %d %d", ul, dpos, zmotor_v);
if (creg.module_status == 1) return err::kdevice_is_busy;
return do_pipette_distribut(ul, dpos, zmotor_v);
}
int32_t PipetteModule::pipette_shake_up_llf(int32_t ul, int32_t dpos, int32_t zmotor_v, int32_t times) { //
ZLOGI(TAG, "pipette_shake_up_llf %d %d %d %d", ul, dpos, zmotor_v, times);
return 0;
}
/***********************************************************************************************************************
* ACTION *
***********************************************************************************************************************/
@ -467,7 +482,7 @@ int32_t PipetteModule::do_pipette_lld(lld_mode_t mode, int32_t zdpos, int32_t c_
);
return 0;
}
int32_t PipetteModule::do_pipette_aspirate(int32_t ul) {
int32_t PipetteModule::do_pipette_aspirate(int32_t ul, int32_t dpos, int32_t zmotor_v) {
/**
* @brief
*/
@ -481,8 +496,13 @@ int32_t PipetteModule::do_pipette_aspirate(int32_t ul) {
m_thread.stop();
creg.module_status = 1;
m_thread.start(
[this, ul]() { //
[this, ul, dpos, zmotor_v]() { //
auto submotor = m_zmotor->getMotor();
DO_IN_THREAD(befor_run());
if (dpos != 0) {
submotor->moveBy(dpos, zmotor_v);
}
DO_IN_THREAD(m_smtp2.pump_aspirate(m_config.aspirate_distribut_pump_vel, ul));
while (true) {
if (!check_when_run()) break;
@ -498,6 +518,7 @@ int32_t PipetteModule::do_pipette_aspirate(int32_t ul) {
[this]() { // exit fn
after_run();
m_smtp2.pump_stop();
m_zmotor->getMotor()->stop();
m_state.load_val_ul = m_state.load_val_ul + m_state.dul;
if (m_state.load_val_ul < 0) {
m_state.load_val_ul = 0;
@ -509,7 +530,7 @@ int32_t PipetteModule::do_pipette_aspirate(int32_t ul) {
);
return 0;
}
int32_t PipetteModule::do_pipette_distribut(int32_t ul) {
int32_t PipetteModule::do_pipette_distribut(int32_t ul, int32_t dpos, int32_t zmotor_v) {
/**
* @brief
*/
@ -519,9 +540,13 @@ int32_t PipetteModule::do_pipette_distribut(int32_t ul) {
m_thread.stop();
creg.module_status = 1;
m_thread.start(
[this, ul]() { //
[this, ul, dpos, zmotor_v]() { //
auto submotor = m_zmotor->getMotor();
DO_IN_THREAD(befor_run());
DO_IN_THREAD(m_smtp2.pump_distribut(m_config.aspirate_distribut_pump_vel, ul));
if (dpos != 0) {
submotor->moveBy(-dpos, zmotor_v);
}
while (true) {
if (!check_when_run()) break;
if (m_thread.getExitFlag()) break;
@ -536,6 +561,7 @@ int32_t PipetteModule::do_pipette_distribut(int32_t ul) {
[this]() { // exit fn
after_run();
m_smtp2.pump_stop();
m_zmotor->getMotor()->stop();
m_state.load_val_ul = m_state.load_val_ul + m_state.dul;
if (m_state.load_val_ul < 0) {

9
components/pipette_module/pipette_ctrl_module_v2.hpp

@ -146,6 +146,10 @@ class PipetteModule : public ZIModule, public ZIPipetteCtrlModule {
virtual int32_t pipette_distribut(int32_t ul) override;
virtual int32_t pipette_shake_up(int32_t ul, int32_t times) override;
virtual int32_t pipette_aspirate_llf(int32_t ul, int32_t dpos, int32_t zmotor_v) override;
virtual int32_t pipette_distribut_llf(int32_t ul, int32_t dpos, int32_t zmotor_v) override;
virtual int32_t pipette_shake_up_llf(int32_t ul, int32_t dpos, int32_t zmotor_v, int32_t times) override;
virtual int32_t pipette_enable_zmotor(int32_t enable);
virtual int32_t pipette_write_cmd_direct(uint8_t *tx, int32_t len, uint8_t *rx, int32_t *rxlen) override;
virtual int32_t pipette_get_sensor_sample_data(int32_t index, int32_t *motor_pos, int32_t *cval, int32_t *pval) override; //
@ -157,8 +161,9 @@ class PipetteModule : public ZIModule, public ZIPipetteCtrlModule {
int32_t do_pipette_ctrl_move_to_ul(int32_t ul);
int32_t do_pipette_lld_prepare();
int32_t do_pipette_lld(lld_mode_t mode, int32_t zdpos, int32_t c_threshold, int32_t p_threshold);
int32_t do_pipette_aspirate(int32_t ul);
int32_t do_pipette_distribut(int32_t ul);
int32_t do_pipette_aspirate(int32_t ul, int32_t dpos, int32_t zmotor_v);
int32_t do_pipette_distribut(int32_t ul, int32_t dpos, int32_t zmotor_v);
private:
int32_t befor_run();

18
components/zcancmder/zcan_protocol_parser.cpp

@ -79,6 +79,9 @@ void ZCanProtocolParser::initialize(IZCanReceiver* cancmder) {
REGFN(pipette_aspirate);
REGFN(pipette_distribut);
REGFN(pipette_shake_up);
REGFN(pipette_aspirate_llf);
REGFN(pipette_distribut_llf);
REGFN(pipette_shake_up_llf);
REGFN(pipette_enable_zmotor);
REGFN(pipette_write_cmd_direct);
@ -538,6 +541,21 @@ int32_t ZCanProtocolParser::pipette_shake_up(cmdcontxt_t* cxt) {
return module->pipette_shake_up(cxt->params[0], cxt->params[1]);
}
int32_t ZCanProtocolParser::pipette_aspirate_llf(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(3);
return module->pipette_aspirate_llf(cxt->params[0], cxt->params[1], cxt->params[2]);
}
int32_t ZCanProtocolParser::pipette_distribut_llf(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(3);
return module->pipette_distribut_llf(cxt->params[0], cxt->params[1], cxt->params[2]);
}
int32_t ZCanProtocolParser::pipette_shake_up_llf(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(4);
return module->pipette_shake_up_llf(cxt->params[0], cxt->params[1], cxt->params[2], cxt->params[3]);
}
int32_t ZCanProtocolParser::pipette_enable_zmotor(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(1);
return module->pipette_enable_zmotor(cxt->params[0]);

3
components/zcancmder/zcan_protocol_parser.hpp

@ -115,6 +115,9 @@ class ZCanProtocolParser : public IZCanReceiverListener {
CMDFN(pipette_aspirate);
CMDFN(pipette_distribut);
CMDFN(pipette_shake_up);
CMDFN(pipette_aspirate_llf);
CMDFN(pipette_distribut_llf);
CMDFN(pipette_shake_up_llf);
CMDFN(pipette_enable_zmotor);
CMDFN(pipette_write_cmd_direct);

Loading…
Cancel
Save