From 941011780d1268256f18dcf3791c8fec800c1f87 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 12 Jul 2025 14:14:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8B=89=E6=9D=86=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build_and_packet.bat | 7 ++ .../channel/transmit_disinfection_can_master.hpp | 7 -- src/app/transmit_disinfection/draw_bard_dm.cpp | 12 +- src/app/transmit_disinfection/utils/tabbuilder.cpp | 129 +++++++++++++++------ src/app_version.hpp | 4 +- .../zscanprotocol_com/zscanprotocol_com.hpp | 9 ++ 6 files changed, 116 insertions(+), 52 deletions(-) create mode 100644 build_and_packet.bat diff --git a/build_and_packet.bat b/build_and_packet.bat new file mode 100644 index 0000000..d28a537 --- /dev/null +++ b/build_and_packet.bat @@ -0,0 +1,7 @@ +cd build +make -j8 +cd .. +copy build\TransmitDisinfection.exe TransmitDisinfection\ + +.\tools\makesfx.exe -ic -mf -ft -we -di -un -oo .\TransmitDisinfection\ .\dist\TransmitDisinfection.exe .\logo.ico .\TransmitDisinfection\TransmitDisinfection.exe +explorer .\dist\ \ No newline at end of file diff --git a/src/app/transmit_disinfection/channel/transmit_disinfection_can_master.hpp b/src/app/transmit_disinfection/channel/transmit_disinfection_can_master.hpp index d2822d2..b75921f 100644 --- a/src/app/transmit_disinfection/channel/transmit_disinfection_can_master.hpp +++ b/src/app/transmit_disinfection/channel/transmit_disinfection_can_master.hpp @@ -77,8 +77,6 @@ class TransmitDisinfectionCanMaster { void blowerCtrl(int boardid, int power); void blowerCtrlSafeValve(int boardid, int valve_state); int blowerReadEI(int boardid); - // int blowerReadEIAdcRaw(int boardid); - // int blowerReadElectricIsError(int boardid); int blowserIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_blower_is_open, DEFUALT_OVERTIME)->getContent(0); } /*********************************************************************************************************************** @@ -87,7 +85,6 @@ class TransmitDisinfectionCanMaster { void airCompressorCtrl(int boardid, int power); void airCompressorCtrlSafeValve(int boardid, int valve_state); int airCompressorReadEI(int boardid); - // int airCompressorReadEIAdcRaw(int boardid); int airCompressorIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_compressor_is_open, DEFUALT_OVERTIME)->getContent(0); } int airTightnessTestACCtrl(int boardid, int32_t val); @@ -125,10 +122,6 @@ class TransmitDisinfectionCanMaster { int proportionalReadPos(int boardid) { return m_com->callcmd0(boardid, kfn_proportional_read_pos, DEFUALT_OVERTIME)->getContent(0); } int proportionalIsBusy(int boardid) { return m_com->callcmd0(boardid, kfn_proportional_is_busy, DEFUALT_OVERTIME)->getContent(0); } - // kfn_air_tightness_test_is_cutoff - // void airTightnessTestCloseOffCh(int boardid) { m_com->callcmd1(boardid, kfn_air_leak_detect_ac_ctrl,1, DEFUALT_OVERTIME); } - // void airTightnessTestOpenCh(int boardid) { m_com->callcmd1(boardid, kfn_air_leak_detect_ac_ctrl, 0,DEFUALT_OVERTIME); } - // int airTightnessTestIsCutoff(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_detect_ac_is_open, DEFUALT_OVERTIME)->getContent(0); } void extChSelectorSetCh(int boardid, int ch) { m_com->callcmd1(boardid, kfn_ext_ch_selector_set_ch, ch, DEFUALT_OVERTIME); } int extChSelectorGetCh(int boardid) { return m_com->callcmd0(boardid, kfn_ext_ch_selector_get_ch, DEFUALT_OVERTIME)->getContent(0); } diff --git a/src/app/transmit_disinfection/draw_bard_dm.cpp b/src/app/transmit_disinfection/draw_bard_dm.cpp index 086eba5..2a61de9 100644 --- a/src/app/transmit_disinfection/draw_bard_dm.cpp +++ b/src/app/transmit_disinfection/draw_bard_dm.cpp @@ -19,15 +19,15 @@ DrawBardDM::DrawBardDM(QWidget *parent) : TransmitDisinfection(parent) { tabBuilder.buildBoardBasicCtrl("功率板", FIXBOARDID_PC_BOARD); tabBuilder.buildHearterTab("功率板", FIXBOARDID_PC_BOARD); tabBuilder.buildH2O2SensorTab("功率板", FIXBOARDID_PC_BOARD); + tabBuilder.buildBlowerTab("液路板", FIXBOARDID_LC_BOARD); // tabBuilder.buildAirCompressorTab("功率板", FIXBOARDID_PC_BOARD); tabBuilder.buildAirTightnessTestACTab("功率板", FIXBOARDID_PC_BOARD); - tabBuilder.buildBoardBasicCtrl("液路板", FIXBOARDID_LC_BOARD); // - tabBuilder.buildBlowerTab("液路板", FIXBOARDID_LC_BOARD); // 风机 - tabBuilder.buildFnPumpCtrl("液路板", FIXBOARDID_LC_BOARD); // 泵机 - tabBuilder.buildWaterSensorTab("液路板", FIXBOARDID_LC_BOARD); // - tabBuilder.buildPSBusTab("液路板", FIXBOARDID_LC_BOARD); // - tabBuilder.buildAirTightnessTestTab("液路板", FIXBOARDID_LC_BOARD); // + tabBuilder.buildBoardBasicCtrl("液路板", FIXBOARDID_LC_BOARD); // + tabBuilder.buildFnPumpCtrl("液路板", FIXBOARDID_LC_BOARD); // + tabBuilder.buildWaterSensorTab("液路板", FIXBOARDID_LC_BOARD); // 水浸传感器 + tabBuilder.buildPSBusTab("液路板", FIXBOARDID_LC_BOARD); // 压力传感器 + tabBuilder.buildAirTightnessTestTab("液路板", FIXBOARDID_LC_BOARD); // tabBuilder.buildExtChSelectorTab("外置通道选择器", FIXBOARDID_EXT_CH_SELECTOR); // } diff --git a/src/app/transmit_disinfection/utils/tabbuilder.cpp b/src/app/transmit_disinfection/utils/tabbuilder.cpp index e1b54a0..3760cd2 100644 --- a/src/app/transmit_disinfection/utils/tabbuilder.cpp +++ b/src/app/transmit_disinfection/utils/tabbuilder.cpp @@ -6,7 +6,8 @@ using namespace iflytop; using namespace app_transmit_disinfection; using namespace transmit_disfection_protocol; -#define CAN_MASTER TransmitDisinfectionCanMaster::ins() +#define CAN_MASTER TransmitDisinfectionCanMaster::ins() +#define CAN_MASTER_COM CAN_MASTER->getCanProtocolCom() static void readBoardInfo(int deviceId) { ack_read_board_info_data_t ack = CAN_MASTER->readboardinfo(deviceId); @@ -71,6 +72,13 @@ void TabBuilder::buildBoardBasicCtrl(const char *tabname, int boardid) { // box->newSubButton("使能上报", [this, boardid](int argn, const char **args) { CAN_MASTER->enableReport(boardid, 1); }); box->newSubButton("失能上报", [this, boardid](int argn, const char **args) { CAN_MASTER->enableReport(boardid, 0); }); box->newSubButtonEnd(); + box->newSubButton("使能周期日志", [this, boardid](int argn, const char **args) { // + CAN_MASTER_COM->callcmd1(boardid, kfn_enable_period_log, 1); + }); + box->newSubButton("失能周期日志", [this, boardid](int argn, const char **args) { // + CAN_MASTER_COM->callcmd1(boardid, kfn_enable_period_log, 0); + }); + box->newSubButtonEnd(); box->newSubButton("复位板卡", [this, boardid](int argn, const char **args) { CAN_MASTER->resetBoard(boardid); }); } else { @@ -214,52 +222,99 @@ void TabBuilder::buildWaterSensorTab(const char *tabname, int boardid) { void TabBuilder::buildBlowerTab(const char *tabname, int boardid) { ZQVTabPage *tab = getTab(tabname); ZQFunctionListBox *box = new ZQFunctionListBox(tab, "风机", 4); - box->newSubButton("风机打开", [this, boardid](int argn, const char **args) { CAN_MASTER->blowerCtrl(boardid, 1); }); - box->newSubButton("风机关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->blowerCtrl(boardid, 0); }); - box->newSubButtonEnd(); - box->newSubButton("风机安全阀打开", [this, boardid](int argn, const char **args) { CAN_MASTER->blowerCtrlSafeValve(boardid, 1); }); - box->newSubButton("风机安全阀关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->blowerCtrlSafeValve(boardid, 0); }); - box->newSubButtonEnd(); - box->newSubButton("风机读取电流", [this, boardid](int argn, const char **args) { - int val = CAN_MASTER->blowerReadEI(boardid); - ISHOW("val:%d", val); + + box->newFunc("风机打开(0->100)", {"val"}, [this, boardid](int argn, const char **args) { // + // CAN_MASTER->extChSelectorSetCh(boardid, atoi(args[0])); + CAN_MASTER->blowerCtrl(boardid, atoi(args[0])); + // CAN_MASTER->blowerCtrl(boardid, 1); }); - // box->newSubButton("风机读取电流ADC", [this, boardid](int argn, const char **args) { - // int val = CAN_MASTER->blowerReadEIAdcRaw(boardid); - // ISHOW("val:%d", val); - // }); + + + // box->newSubButton("风机打开", [this, boardid](int argn, const char **args) { CAN_MASTER->blowerCtrl(boardid, 1); }); + box->newSubButton("风机关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->blowerCtrl(boardid, 0); }); box->newSubButtonEnd(); - // box->newSubButton("风机是否错误", [this, boardid](int argn, const char **args) { - // bool val = CAN_MASTER->blowerReadElectricIsError(boardid); - // ISHOW("val:%d", val); - // }); - box->newSubButton("风机是否打开", [this, boardid](int argn, const char **args) { - bool val = CAN_MASTER->blowserIsOpen(boardid); - ISHOW("val:%d", val); + box->newSubButton("风机读取状态与类型", [this, boardid](int argn, const char **args) { + // kNotSet, + // kIOBlower, + // kHighPowerUartBlower, + // kMiniPwmBlower, + int32_t type; + int16_t state[10] = {0}; + int32_t stateNum = 0; + type = CAN_MASTER_COM->callcmd0(boardid, kfn_blower_read_type, DEFUALT_OVERTIME)->getContent(0); + auto receipt = CAN_MASTER_COM->callcmd0(boardid, kfn_blower_read_state, DEFUALT_OVERTIME); + for (int i = 0; i < receipt->getContent16Num(); i++) { + state[i] = receipt->getContent16(i); + } + + switch (type) { + case 1: + ISHOW("type:IOBlower"); + ISHOW("state[0] powerVal : %d", state[0]); + ISHOW("state[1] blowserI : %d", state[1]); + + break; + case 2: + ISHOW("type:HighPowerUartBlower"); + ISHOW("state[0] powerVal : %d", state[0]); + ISHOW("state[1] coolingFanI : %d", state[1]); + ISHOW("state[2] ecode : %d", state[2]); + break; + case 3: + ISHOW("type:MiniPwmBlower"); + ISHOW("state[0] powerVal : %d", state[0]); + ISHOW("state[1] maxCnt : %d", (uint16_t)state[1]); + break; + default: + ISHOW("type:Unknown(%d)", type); + for (size_t i = 0; i < receipt->getContent16Num(); i++) { + ISHOW("state[%d] : %d", i, state[i]); + } + } }); } void TabBuilder::buildAirCompressorTab(const char *tabname, int boardid) { ZQVTabPage *tab = getTab(tabname); ZQFunctionListBox *box = new ZQFunctionListBox(tab, "空压机", 4); - box->newSubButton("空压机打开", [this, boardid](int argn, const char **args) { CAN_MASTER->airCompressorCtrl(boardid, 1); }); + // box->newSubButton("空压机打开", [this, boardid](int argn, const char **args) { CAN_MASTER->airCompressorCtrl(boardid, 1); }); + + box->newFunc("空压机打开(0->100)", {"val"}, [this, boardid](int argn, const char **args) { // + // CAN_MASTER->extChSelectorSetCh(boardid, atoi(args[0])); + CAN_MASTER->airCompressorCtrl(boardid, atoi(args[0])); + // CAN_MASTER->blowerCtrl(boardid, 1); + }); + box->newSubButton("空压机关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->airCompressorCtrl(boardid, 0); }); box->newSubButtonEnd(); - // box->newFunc("空压机安全阀控制", {"valve_state"}, [this, boardid](int argn, const char **args) { CAN_MASTER->airCompressorCtrlSafeValve(boardid, atoi(args[0])); }); - box->newSubButton("空压机安全阀打开", [this, boardid](int argn, const char **args) { CAN_MASTER->airCompressorCtrlSafeValve(boardid, 1); }); - box->newSubButton("空压机安全阀关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->airCompressorCtrlSafeValve(boardid, 0); }); - box->newSubButtonEnd(); - box->newFunc("空压机读取电流", {}, [this, boardid](int argn, const char **args) { - int val = CAN_MASTER->airCompressorReadEI(boardid); - ISHOW("val:%d", val); - }); - // box->newFunc("空压机读取电流ADC", {}, [this, boardid](int argn, const char **args) { - // int val = CAN_MASTER->airCompressorReadEIAdcRaw(boardid); - // ISHOW("val:%d", val); - // }); - box->newFunc("空压机是否打开", {}, [this, boardid](int argn, const char **args) { - bool val = CAN_MASTER->airCompressorIsOpen(boardid); - ISHOW("val:%d", val); + box->newSubButton("空压机读取状态", [this, boardid](int argn, const char **args) { + int32_t type; + int16_t state[10] = {0}; + int32_t stateNum = 0; + type = CAN_MASTER_COM->callcmd0(boardid, kfn_air_compressor_read_type, DEFUALT_OVERTIME)->getContent(0); + auto receipt = CAN_MASTER_COM->callcmd0(boardid, kfn_air_compressor_read_state, DEFUALT_OVERTIME); + for (int i = 0; i < receipt->getContent16Num(); i++) { + state[i] = receipt->getContent16(i); + } + + switch (type) { + case 1: + ISHOW("type:IO-AireCompressor"); + ISHOW("state[0] powerVal : %d", state[0]); + ISHOW("state[1] acI : %d", state[1]); + + break; + case 2: + ISHOW("type:MiniPwmAirPump"); + ISHOW("state[0] powerVal : %d", state[0]); + ISHOW("state[1] fbCnt : %d", (uint16_t)state[1]); + break; + default: + ISHOW("type:Unknown(%d)", type); + for (size_t i = 0; i < receipt->getContent16Num(); i++) { + ISHOW("state[%d] : %d", i, state[i]); + } + } }); } diff --git a/src/app_version.hpp b/src/app_version.hpp index e4d72b5..8ce9dcf 100644 --- a/src/app_version.hpp +++ b/src/app_version.hpp @@ -1,8 +1,8 @@ #pragma once #define VERSION(main, sub, fix) (main << 16 | sub << 8 | fix << 0) -#define APP_VERSION VERSION(1, 0, 6) -#define APP_VERSION_STR "1.0.6" +#define APP_VERSION VERSION(1, 0, 7) +#define APP_VERSION_STR "1.0.7" #define APP_VERSION_MAIN VERSION_MAIN(APP_VERSION) #define APP_VERSION_SUB VERSION_SUB(APP_VERSION) diff --git a/src/protocol/zscanprotocol_com/zscanprotocol_com.hpp b/src/protocol/zscanprotocol_com/zscanprotocol_com.hpp index bf320c4..fd83726 100644 --- a/src/protocol/zscanprotocol_com/zscanprotocol_com.hpp +++ b/src/protocol/zscanprotocol_com/zscanprotocol_com.hpp @@ -44,6 +44,15 @@ class Receipt { zcanbus_packet_t *getPacket() { return (zcanbus_packet_t *)receipt; } int32_t getContent(int index) { return ((int32_t *)(getPacket()->params))[index]; } uint8_t *getByte() { return (uint8_t *)getPacket()->params; } + + int16_t getContent16(int index) { + if (index < 0 || index * 2 + 1 >= receiptLen) return 0; + return ((int16_t *)(getPacket()->params))[index]; + } + int32_t getContent16Num() { + if (receiptLen < sizeof(zcanbus_packet_t)) return 0; + return (receiptLen - sizeof(zcanbus_packet_t)) / 2; + } }; class CanPacketRxBuffer {