|
|
@ -193,16 +193,24 @@ int32_t PipetteModule::pipette_zmotor_move_to_zero_point_quick() { |
|
|
|
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); // 默认配置
|
|
|
|
DO_IN_THREAD(m_smtp2.pump_init()); |
|
|
|
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); |
|
|
|
clearPipetteGunState(); |
|
|
|
}); |
|
|
@ -706,21 +714,30 @@ int32_t PipetteModule::pipette_pump_distribu_all() { |
|
|
|
*/ |
|
|
|
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_container_info_cpyid(dcfg->dest_container_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("platform_info", platform_info); |
|
|
|
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); |
|
|
|
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, "-->move to jet position"); |
|
|
|
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 { |
|
|
|
ZLOGI(TAG, "-->under liquid distribu"); |
|
|
|
// 移动到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位置
|
|
|
|
|
|
|
|
// 清空transport volume
|
|
|
|
if (liquidInGun_info->transport_volume != 0) { |
|
|
|
if (liquidInGuninfo->transport_volume != 0) { |
|
|
|
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 { |
|
|
|
ZLOGI(TAG, "-->clean transport volume,skip"); |
|
|
|
} |
|
|
@ -751,14 +768,14 @@ int32_t PipetteModule::pipette_pump_distribu_all() { |
|
|
|
|
|
|
|
// 分液
|
|
|
|
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速度)
|
|
|
|
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位置
|
|
|
|
|
|
|
|
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过量的空气,防挂液
|
|
|
|
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
|
|
|
|
//
|
|
|
|