Browse Source

update

master
zhaohe 2 months ago
parent
commit
db2bcac0ab
  1. 10
      sdk/components/pipette_module/base/pipette_action_param.hpp
  2. 3
      sdk/components/pipette_module/base/pipette_cfg.hpp
  3. 55
      sdk/components/pipette_module/pipette_ctrl_module.cpp

10
sdk/components/pipette_module/base/pipette_action_param.hpp

@ -115,9 +115,9 @@ typedef struct {
// //
// 目标容器信息 // 目标容器信息
// //
int32_t dest_container_cpyid; // 目标容器配置索引
int32_t __dest_container_is_empty; // 占位
int32_t dest_liquid_cfg_index; // 目标容器中的液体类型
int32_t dest_container_cpyid; // 目标容器配置索引
int32_t dest_container_has_liquid; // 目标容器中是否有液体
int32_t dest_liquid_cfg_index; // 目标容器中的液体类型
// //
// 分配方式 // 分配方式
@ -146,7 +146,7 @@ typedef enum {
// 目标容器信息 // 目标容器信息
// //
kdistribu_all_paramid_dest_container_cpyid, kdistribu_all_paramid_dest_container_cpyid,
kdistribu_all_paramid_dest_container_is_empty,
kdistribu_all_paramid_dest_container_has_liquid,
kdistribu_all_paramid_dest_liquid_cfg_index, kdistribu_all_paramid_dest_liquid_cfg_index,
// //
// 分配方式 // 分配方式
@ -168,7 +168,7 @@ static inline const char *distribu_all_paramid_to_string(distribu_all_paramid_t
switch (index) { switch (index) {
CASE_ENUM_TO_STRING(kdistribu_all_paramid_container_pos); CASE_ENUM_TO_STRING(kdistribu_all_paramid_container_pos);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_container_cpyid); CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_container_cpyid);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_container_is_empty);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_container_has_liquid);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_liquid_cfg_index); CASE_ENUM_TO_STRING(kdistribu_all_paramid_dest_liquid_cfg_index);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_distribu_type); CASE_ENUM_TO_STRING(kdistribu_all_paramid_distribu_type);
CASE_ENUM_TO_STRING(kdistribu_all_paramid_mix_volume); CASE_ENUM_TO_STRING(kdistribu_all_paramid_mix_volume);

3
sdk/components/pipette_module/base/pipette_cfg.hpp

@ -16,17 +16,20 @@
typedef struct { typedef struct {
int32_t pressure_record_enable; int32_t pressure_record_enable;
int32_t platform_info_cpyid; // 平台信息的副本ID
int32_t max; int32_t max;
} common_cfg_t; } common_cfg_t;
typedef enum { typedef enum {
kpipette_common_cfg_pressure_record_enable, kpipette_common_cfg_pressure_record_enable,
kpipette_common_cfg_platform_info_cpyid, // 平台信息的副本ID
kpipette_common_cfg_max, kpipette_common_cfg_max,
} pipette_common_cfg_index_t; } pipette_common_cfg_index_t;
static inline const char *common_cfg_index_to_string(pipette_common_cfg_index_t index) { static inline const char *common_cfg_index_to_string(pipette_common_cfg_index_t index) {
switch (index) { switch (index) {
CASE_ENUM_TO_STRING(kpipette_common_cfg_pressure_record_enable) CASE_ENUM_TO_STRING(kpipette_common_cfg_pressure_record_enable)
CASE_ENUM_TO_STRING(kpipette_common_cfg_platform_info_cpyid) // 平台信息的副本ID
CASE_ENUM_TO_STRING(kpipette_common_cfg_max) CASE_ENUM_TO_STRING(kpipette_common_cfg_max)
} }
return "unknown"; return "unknown";

55
sdk/components/pipette_module/pipette_ctrl_module.cpp

@ -193,16 +193,24 @@ int32_t PipetteModule::pipette_zmotor_move_to_zero_point_quick() {
return 0; return 0;
} }
int32_t PipetteModule::pipette_pump_init_device(int32_t platinfo_cpyid) {
thread_start_work(__FUNCTION__, [this, platinfo_cpyid]() {
ZLOGI(TAG, "pipette_pump_init_device platinfo_cpyid: %d", platinfo_cpyid);
check_platinfo_cpyid(platinfo_cpyid);
int32_t PipetteModule::pipette_pump_init_device(int32_t param__platinfo_cpyid) {
thread_start_work(__FUNCTION__, [this, param__platinfo_cpyid]() {
ZLOGI(TAG, "pipette_pump_init_device param__platinfo_cpyid: %d", param__platinfo_cpyid);
int32_t platinfo_cpyid_setval = param__platinfo_cpyid;
if (platinfo_cpyid_setval < 0) {
platinfo_cpyid_setval = m_common_cfg.platform_info_cpyid;
ZLOGI(TAG, "pipette_pump_init_device use common_cfg platinfo_cpyid: %d", platinfo_cpyid_setval);
}
check_platinfo_cpyid(platinfo_cpyid_setval);
pump_apply_vcfg(kpm_v_max); // 默认配置 pump_apply_vcfg(kpm_v_max); // 默认配置
DO_IN_THREAD(m_smtp2.pump_init()); DO_IN_THREAD(m_smtp2.pump_init());
pump_waitfor_stop(); pump_waitfor_stop();
m_state.platinfo_cpyid = platinfo_cpyid;
m_state.platinfo_cpyid = platinfo_cpyid_setval;
platinfo_t *platform_info = get_platinfo_smart(m_state.platinfo_cpyid, &m_now_platinfo); platinfo_t *platform_info = get_platinfo_smart(m_state.platinfo_cpyid, &m_now_platinfo);
clearPipetteGunState(); clearPipetteGunState();
}); });
@ -706,21 +714,30 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
*/ */
auto *dcfg = &m_distribu_all_param; auto *dcfg = &m_distribu_all_param;
check_liquid_info_cpyid(dcfg->dest_liquid_cfg_index);
if (dcfg->dest_container_has_liquid) check_liquid_info_cpyid(dcfg->dest_liquid_cfg_index);
check_liquid_info_cpyid(m_pump_gun_state.liquid_type_cpyidx); check_liquid_info_cpyid(m_pump_gun_state.liquid_type_cpyidx);
check_container_info_cpyid(dcfg->dest_container_cpyid); check_container_info_cpyid(dcfg->dest_container_cpyid);
check_platinfo_cpyid(m_state.platinfo_cpyid); check_platinfo_cpyid(m_state.platinfo_cpyid);
platinfo_t *platform_info = get_platinfo_smart(m_state.platinfo_cpyid, &m_now_platinfo);
liquid_info_t *liquidinfo = get_liquid_info_smart(dcfg->dest_liquid_cfg_index, &m_now_liquid_info);
container_info_t *container_cfg = get_container_info_smart(dcfg->dest_container_cpyid, &m_now_container_info);
liquid_info_t *liquidInGun_info = get_liquid_info_smart(m_pump_gun_state.liquid_type_cpyidx, &m_now_liquid_in_gun_info);
platinfo_t *platform_info = nullptr;
container_info_t *container_cfg = nullptr;
liquid_info_t *liquidInGuninfo = nullptr;
liquid_info_t *liquidinfo = nullptr;
platform_info = get_platinfo_smart(m_state.platinfo_cpyid, &m_now_platinfo);
container_cfg = get_container_info_smart(dcfg->dest_container_cpyid, &m_now_container_info);
liquidInGuninfo = get_liquid_info_smart(m_pump_gun_state.liquid_type_cpyidx, &m_now_liquid_in_gun_info);
if (dcfg->dest_container_has_liquid) {
liquidinfo = get_liquid_info_smart(dcfg->dest_liquid_cfg_index, &m_now_liquid_info);
} else {
liquidinfo = liquidInGuninfo;
}
dump("distribu_all_param", dcfg); dump("distribu_all_param", dcfg);
dump("platform_info", platform_info); dump("platform_info", platform_info);
dump("container_info", container_cfg); dump("container_info", container_cfg);
dump("liquid_info", liquidinfo);
dump("liquid_in_gun_info", liquidInGun_info);
if (dcfg->dest_container_has_liquid) dump("liquid_info", liquidinfo);
dump("liquid_in_gun_info", liquidInGuninfo);
adjust_container_pos(&dcfg->container_pos, m_state.platinfo_cpyid); adjust_container_pos(&dcfg->container_pos, m_state.platinfo_cpyid);
int32_t container_pos = dcfg->container_pos; int32_t container_pos = dcfg->container_pos;
@ -730,7 +747,7 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
ZLOGI(TAG, "-->jet mode distribu"); ZLOGI(TAG, "-->jet mode distribu");
ZLOGI(TAG, "-->move to jet position"); ZLOGI(TAG, "-->move to jet position");
zm_move_to_jet_pos_block(container_pos, -1, container_cfg, kzm_v_default, 0); // 移动到jet位置 zm_move_to_jet_pos_block(container_pos, -1, container_cfg, kzm_v_default, 0); // 移动到jet位置
pump_move_to_x100nl_block(0, liquidInGun_info->jet_pm_vcpyid); // 快速喷射出所有液体(使用jet速度)
pump_move_to_x100nl_block(0, liquidInGuninfo->jet_pm_vcpyid); // 快速喷射出所有液体(使用jet速度)
} else { } else {
ZLOGI(TAG, "-->under liquid distribu"); ZLOGI(TAG, "-->under liquid distribu");
// 移动到swap位置 // 移动到swap位置
@ -738,9 +755,9 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
zm_move_to_leaving_height_pos_block(container_pos, -1, container_cfg, kzm_v_default, 0); // 移动到swap位置 zm_move_to_leaving_height_pos_block(container_pos, -1, container_cfg, kzm_v_default, 0); // 移动到swap位置
// 清空transport volume // 清空transport volume
if (liquidInGun_info->transport_volume != 0) {
if (liquidInGuninfo->transport_volume != 0) {
ZLOGI(TAG, "-->clean transport volume"); ZLOGI(TAG, "-->clean transport volume");
pump_move_by_x100nl_block(-liquidInGun_info->transport_volume, liquidInGun_info->transport_volume_pm_vcpyid); // 清空transport volume
pump_move_by_x100nl_block(-liquidInGuninfo->transport_volume, liquidInGuninfo->transport_volume_pm_vcpyid); // 清空transport volume
} else { } else {
ZLOGI(TAG, "-->clean transport volume,skip"); ZLOGI(TAG, "-->clean transport volume,skip");
} }
@ -751,14 +768,14 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
// 分液 // 分液
ZLOGI(TAG, "-->distribu liquid"); ZLOGI(TAG, "-->distribu liquid");
int32_t distribu_volume = calibrate_liquid_volume(liquidInGun_info, m_pump_gun_state.liquid_volume);
pump_move_by_x100nl_block(-distribu_volume, liquidInGun_info->distribu_pm_vpyid); // 分液
int32_t distribu_volume = calibrate_liquid_volume(liquidInGuninfo, m_pump_gun_state.liquid_volume);
pump_move_by_x100nl_block(-distribu_volume, liquidInGuninfo->distribu_pm_vpyid); // 分液
// 移动到swap位置,快速清空tip,使用(emptyTip速度) // 移动到swap位置,快速清空tip,使用(emptyTip速度)
ZLOGI(TAG, "-->move to swap position and clean tip"); ZLOGI(TAG, "-->move to swap position and clean tip");
zm_move_to_leaving_height_pos_block(container_pos, -1, container_cfg, kzm_v_swap_out, 0); // 移动到swap位置 zm_move_to_leaving_height_pos_block(container_pos, -1, container_cfg, kzm_v_swap_out, 0); // 移动到swap位置
pump_move_to_x100nl_block(0, liquidInGun_info->empty_tip_pm_vcpyid); // 快速清空tip,使用(emptyTip速度)
pump_move_to_x100nl_block(0, liquidInGuninfo->empty_tip_pm_vcpyid); // 快速清空tip,使用(emptyTip速度)
} }
// //
@ -780,7 +797,7 @@ int32_t PipetteModule::pipette_pump_distribu_all() {
} }
// 吸入10ul过量的空气,防挂液 // 吸入10ul过量的空气,防挂液
pump_move_by_x100nl_block(100, liquidInGun_info->transport_volume_pm_vcpyid);
pump_move_by_x100nl_block(100, liquidInGuninfo->transport_volume_pm_vcpyid);
// //
// 如果需要归零,则移动到transform_pos // 如果需要归零,则移动到transform_pos
// //

Loading…
Cancel
Save