From 76b5c4752c3f1e1039f150b11c2cb31679f7f48f Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 23 Aug 2024 20:22:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=8E=E6=9C=BA=E6=B7=BB=E5=8A=A0=E4=B8=B2?= =?UTF-8?q?=E5=8F=A3=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=A3=80=E6=93=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usrc/app/dmapp.cpp | 2 +- usrc/module/blower_controller.hpp | 41 ++++++++++++++++++++++----------------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/usrc/app/dmapp.cpp b/usrc/app/dmapp.cpp index fd25f99..ddd4fb7 100644 --- a/usrc/app/dmapp.cpp +++ b/usrc/app/dmapp.cpp @@ -53,7 +53,7 @@ void DisinfectionApp::initialize() { else if (PORT::isPowerCtrlBoard() && (PORT::isPipeDM())) { LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); LargeSpaceDmPowerCtrlBoardHal::HUART2_INIT(9600, UART_STOPBITS_1); - blowerCtrler.initializeAsHighPowerUartBlower(&huart2, &hadc1, ADC_CHANNEL_1); + blowerCtrler.initializeAsHighPowerUartBlower(PC5, &huart2, &hadc1, ADC_CHANNEL_1); } /*********************************************************************************************************************** diff --git a/usrc/module/blower_controller.hpp b/usrc/module/blower_controller.hpp index 58c3038..16e20b8 100644 --- a/usrc/module/blower_controller.hpp +++ b/usrc/module/blower_controller.hpp @@ -41,7 +41,8 @@ class BlowerController { bindFn(); } - void initializeAsHighPowerUartBlower(UART_HandleTypeDef* huart, ADC_HandleTypeDef* iadc, uint32_t ich) { + void initializeAsHighPowerUartBlower(Pin_t ctrlGpio, UART_HandleTypeDef* huart, ADC_HandleTypeDef* iadc, uint32_t ich) { + m_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false); m_modbusblock.initialize(huart); m_iadc.initialize("Blower-iadc", iadc, ich); AppPeriodTaskMgr::ins()->regTask("AC-ADC", [this]() { periodTask(); }, 1000); @@ -69,24 +70,12 @@ class BlowerController { BIND_FN(BlowerController, this, fn_blower_is_error); BIND_FN(BlowerController, this, fn_blower_read_ei_adc_raw); BIND_FN(BlowerController, this, fn_blower_is_open); - } + } /*********************************************************************************************************************** * FN * ***********************************************************************************************************************/ - void blower_ctrl(int32_t val) { - if (m_blowerType == kIOBlower) { - m_ctrlGpio.write(val); - } else if (m_blowerType == kHighPowerUartBlower) { - if (val > 0) { - m_modbusblock.writeReg06(1, 0x2000, 1, 100); - } else { - m_modbusblock.writeReg06(1, 0x2000, 6, 100); - } - } else if (m_blowerType == kMiniPwmBlower) { - mini_pwm_blower_ctrl(val); - } - } + void blower_ctrl(int32_t val) {} void blower_ctrl_safe_valve(int32_t val) {} int32_t blower_read_ei() { if (m_blowerType == kIOBlower || m_blowerType == kHighPowerUartBlower) { @@ -114,9 +103,25 @@ class BlowerController { * PP * ***********************************************************************************************************************/ void fn_blower_ctrl(ProcessContext* cxt) { // - blower_ctrl(GET_PARAM(0)); - zcanbus_send_ack(cxt->packet, NULL, 0); - isopen = GET_PARAM(0) > 0 ? true : false; + int32_t val = GET_PARAM(0); + if (m_blowerType == kIOBlower) { + m_ctrlGpio.write(val); + zcanbus_send_ack(cxt->packet, NULL, 0); + isopen = GET_PARAM(0) > 0 ? true : false; + } else if (m_blowerType == kHighPowerUartBlower) { + m_ctrlGpio.write(val); + bool suc = val > 0 ? m_modbusblock.writeReg06(1, 0x2000, 1, 50) : m_modbusblock.writeReg06(1, 0x2000, 6, 50); + if (suc) { + m_ctrlGpio.write(val); + zcanbus_send_ack(cxt->packet, NULL, 0); + isopen = GET_PARAM(0) > 0 ? true : false; + } else { + zcanbus_send_errorack(cxt->packet, err::kerr_overtime); + } + + } else if (m_blowerType == kMiniPwmBlower) { + mini_pwm_blower_ctrl(val); + } } void fn_blower_ctrl_safe_valve(ProcessContext* cxt) { // blower_ctrl_safe_valve(GET_PARAM(0));