From aabd57af837b421c823acccfb888615b753947ef Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 20 May 2025 00:57:45 +0800 Subject: [PATCH] update --- .vscode/settings.json | 3 ++- sdk/components/pipette_module/base/pipette_cfg.hpp | 10 ++++---- .../pipette_module/pipette_ctrl_module.cpp | 29 ++++++++++++++++++++++ .../pipette_module/pipette_ctrl_module.hpp | 1 + .../zcan_protocol_parser/zcan_protocol_parser.cpp | 12 ++++++--- .../zcan_protocol_parser/zcan_protocol_parser.hpp | 1 + usrc/a8000_protocol/protocol/cmdid.hpp | 9 ++++--- 7 files changed, 52 insertions(+), 13 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f2dc6e5..778ac6f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,7 +4,8 @@ "freertos.h": "c", "cmsis_os.h": "c", "*.bak": "cpp", - "compare": "cpp" + "compare": "cpp", + "random": "cpp" }, "files.autoGuessEncoding": false, "files.encoding": "utf8" diff --git a/sdk/components/pipette_module/base/pipette_cfg.hpp b/sdk/components/pipette_module/base/pipette_cfg.hpp index b74f53e..651a6b3 100644 --- a/sdk/components/pipette_module/base/pipette_cfg.hpp +++ b/sdk/components/pipette_module/base/pipette_cfg.hpp @@ -122,10 +122,10 @@ typedef enum { * 容器参数 * ***********************************************************************************************************************/ typedef struct { + int32_t container_type; // 容器类型 0:平面 1:flat(平底) 2:conical(锥底) 3:round(圆底) int32_t container_neck_pos; // 容器,瓶口位置(相对位置0.1mm) int32_t container_depth; // 容器,深度(0.1mm) int32_t container_round; // 容器,直径(0.1mm) - int32_t container_bottom_section_type; // 容器,瓶底类型//flat(平底),conical(锥底) round(圆底) int32_t container_bottom_section_height; // 容器,瓶底高度(0.1mm) int32_t immersion_depth; // 侵入液面高度,即液面以下的高度,精度0.1mm int32_t leaving_height; // 离开液面高度,此位置ZEUS开始缓慢进入液面或离开液面,精度0.1mm @@ -136,10 +136,10 @@ typedef struct { } container_info_t; typedef enum { - kcontainer_info_container_neck_pos = 600, - kcontainer_info_container_depth = 601, - kcontainer_info_container_round = 602, - kcontainer_info_container_bottom_section_type = 603, + kcontainer_info_container_type = 600, + kcontainer_info_container_neck_pos = 601, + kcontainer_info_container_depth = 602, + kcontainer_info_container_round = 603, kcontainer_info_container_bottom_section_height = 604, kcontainer_info_immersion_depth = 605, kcontainer_info_leaving_height = 606, diff --git a/sdk/components/pipette_module/pipette_ctrl_module.cpp b/sdk/components/pipette_module/pipette_ctrl_module.cpp index 746d455..318cb9a 100644 --- a/sdk/components/pipette_module/pipette_ctrl_module.cpp +++ b/sdk/components/pipette_module/pipette_ctrl_module.cpp @@ -260,6 +260,35 @@ int32_t PipetteModule::pipette_pump_put_tip(int32_t pos) { }); return 0; } + +int32_t PipetteModule::pipette_pump_aspirate_set_param(aspiration_paramid_t param, int32_t val) { +#define CASE_ITEM(param, item, val) \ + case param: { \ + ZLOGI(TAG, "pipette_pump_aspirate_set_param set %s %d", #item, val); \ + m_aspiration_param.item = val; \ + break; \ + } + + switch (param) { + CASE_ITEM(kaspiration_paramid_x100nl, x100nl, val); + CASE_ITEM(kaspiration_paramid_container_info_index, container_info_index, val); + CASE_ITEM(kaspiration_paramid_liquid_cfg_index, liquid_cfg_index, val); + CASE_ITEM(kaspiration_paramid_aspiration_mode, aspiration_mode, val); + CASE_ITEM(kaspiration_paramid_lld_type, lld_type, val); + CASE_ITEM(kaspiration_paramid_lld_enable_protect, lld_enable_protect, val); + CASE_ITEM(kaspiration_paramid_mix_llf_enable, mix_llf_enable, val); + CASE_ITEM(kaspiration_paramid_llf_enable, llf_enable, val); + CASE_ITEM(kaspiration_paramid_mix_volume, mix_volume, val); + CASE_ITEM(kaspiration_paramid_mix_times, mix_times, val); + default: { + ZLOGE(TAG, "pipette_pump_aspirate_set_param fail,paramid == %d not support", param); + return err::kparam_out_of_range; + } + } +#undef CASE_ITEM + return 0; +} + int32_t PipetteModule::pipette_pump_aspirate() { /** * @brief diff --git a/sdk/components/pipette_module/pipette_ctrl_module.hpp b/sdk/components/pipette_module/pipette_ctrl_module.hpp index 031c43c..80279ed 100644 --- a/sdk/components/pipette_module/pipette_ctrl_module.hpp +++ b/sdk/components/pipette_module/pipette_ctrl_module.hpp @@ -117,6 +117,7 @@ class PipetteModule : public ZIModule { virtual int32_t pipette_pump_init_device(); virtual int32_t pipette_pump_take_tip(int32_t tip_pos); virtual int32_t pipette_pump_put_tip(int32_t pos); + virtual int32_t pipette_pump_pierce_through(int32_t pos); virtual int32_t pipette_pump_aspirate_set_param(aspiration_paramid_t param, int32_t val); virtual int32_t pipette_pump_aspirate(); diff --git a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp index f32506e..e69643f 100644 --- a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp +++ b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.cpp @@ -6,15 +6,15 @@ // #include "public_service\ext_board_impl.hpp" #include "sdk\components\mini_servo_motor\mini_servo_motor_ctrl_module.hpp" +#include "sdk\components\pipette_module\pipette_ctrl_module.hpp" #include "sdk\components\sensors\m3078\m3078_code_scaner.hpp" #include "sdk\components\step_motor_ctrl_module\step_motor_ctrl_module.hpp" #include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module.hpp" #include "sdk\components\xy_robot_ctrl_module\xy_robot_ctrl_module.hpp" -#include "subboards\subboard40_and_50_temperature_ctrl\zcan_fan_ctrl_module.hpp" -#include "subboards\subboard90_optical_module\optical_module_v2.hpp" #include "subboards\subboard100_idcard_reader\eeprom_service.hpp" #include "subboards\subboard20_plate_clamp_case\plate_code_scaner_module.hpp" -#include "sdk\components\pipette_module\pipette_ctrl_module.hpp" +#include "subboards\subboard40_and_50_temperature_ctrl\zcan_fan_ctrl_module.hpp" +#include "subboards\subboard90_optical_module\optical_module_v2.hpp" // #include "sdk/os/zos.hpp" @@ -162,6 +162,7 @@ void ZCanProtocolParser::initialize(ZCanReceiver* cancmder) { REGFN(pipette_pump_init_device); REGFN(pipette_pump_take_tip); REGFN(pipette_pump_put_tip); + REGFN(pipette_pump_aspirate_set_param); REGFN(pipette_pump_aspirate); REGFN(pipette_pump_distribu); REGFN(pipette_get_sensor_sample_data); @@ -937,6 +938,11 @@ int32_t ZCanProtocolParser::pipette_pump_put_tip(cmdcontxt_t* cxt) { return module->pipette_pump_put_tip(cxt->params[0]); } +int32_t ZCanProtocolParser::pipette_pump_aspirate_set_param(cmdcontxt_t* cxt) { + CHECK_AND_GET_MODULE(2); + return module->pipette_pump_aspirate_set_param((aspiration_paramid_t)cxt->params[0], cxt->params[1]); +} + int32_t ZCanProtocolParser::pipette_pump_aspirate(cmdcontxt_t* cxt) { CHECK_AND_GET_MODULE(0); return module->pipette_pump_aspirate(); diff --git a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp index 5e79cc6..91bd103 100644 --- a/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp +++ b/sdk/components/zcan_protocol_parser/zcan_protocol_parser.hpp @@ -183,6 +183,7 @@ class ZCanProtocolParser : public IZCanRxProcesser { CMDFN(pipette_pump_init_device); CMDFN(pipette_pump_take_tip); CMDFN(pipette_pump_put_tip); + CMDFN(pipette_pump_aspirate_set_param); CMDFN(pipette_pump_aspirate); CMDFN(pipette_pump_distribu); CMDFN(pipette_get_sensor_sample_data); diff --git a/usrc/a8000_protocol/protocol/cmdid.hpp b/usrc/a8000_protocol/protocol/cmdid.hpp index 98cb8e4..f82f74d 100644 --- a/usrc/a8000_protocol/protocol/cmdid.hpp +++ b/usrc/a8000_protocol/protocol/cmdid.hpp @@ -145,10 +145,11 @@ typedef enum { kpipette_pump_init_device = 0x7550, kpipette_pump_take_tip = 0x7551, kpipette_pump_put_tip = 0x7552, - kpipette_pump_aspirate = 0x7553, - kpipette_pump_distribu = 0x7554, - kpipette_get_sensor_sample_data = 0x7555, - kpipette_get_sensor_sample_data_num = 0x7556, + kpipette_pump_aspirate_set_param = 0x7553, + kpipette_pump_aspirate = 0x7554, + kpipette_pump_distribu = 0x7555, + kpipette_get_sensor_sample_data = 0x7556, + kpipette_get_sensor_sample_data_num = 0x7557, } cmdid_t;