Browse Source

风机添加串口发送消息失败检擦

moveToEndTestVersion
zhaohe 12 months ago
parent
commit
76b5c4752c
  1. 2
      usrc/app/dmapp.cpp
  2. 41
      usrc/module/blower_controller.hpp

2
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);
}
/***********************************************************************************************************************

41
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));

Loading…
Cancel
Save