Browse Source

支持拉杆箱

master
zhaohe 3 weeks ago
parent
commit
941011780d
  1. 7
      build_and_packet.bat
  2. 7
      src/app/transmit_disinfection/channel/transmit_disinfection_can_master.hpp
  3. 12
      src/app/transmit_disinfection/draw_bard_dm.cpp
  4. 129
      src/app/transmit_disinfection/utils/tabbuilder.cpp
  5. 4
      src/app_version.hpp
  6. 9
      src/protocol/zscanprotocol_com/zscanprotocol_com.hpp

7
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\

7
src/app/transmit_disinfection/channel/transmit_disinfection_can_master.hpp

@ -77,8 +77,6 @@ class TransmitDisinfectionCanMaster {
void blowerCtrl(int boardid, int power); void blowerCtrl(int boardid, int power);
void blowerCtrlSafeValve(int boardid, int valve_state); void blowerCtrlSafeValve(int boardid, int valve_state);
int blowerReadEI(int boardid); 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); } 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 airCompressorCtrl(int boardid, int power);
void airCompressorCtrlSafeValve(int boardid, int valve_state); void airCompressorCtrlSafeValve(int boardid, int valve_state);
int airCompressorReadEI(int boardid); 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 airCompressorIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_compressor_is_open, DEFUALT_OVERTIME)->getContent(0); }
int airTightnessTestACCtrl(int boardid, int32_t val); 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 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); } 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); } 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); } int extChSelectorGetCh(int boardid) { return m_com->callcmd0(boardid, kfn_ext_ch_selector_get_ch, DEFUALT_OVERTIME)->getContent(0); }

12
src/app/transmit_disinfection/draw_bard_dm.cpp

@ -19,15 +19,15 @@ DrawBardDM::DrawBardDM(QWidget *parent) : TransmitDisinfection(parent) {
tabBuilder.buildBoardBasicCtrl("功率板", FIXBOARDID_PC_BOARD); tabBuilder.buildBoardBasicCtrl("功率板", FIXBOARDID_PC_BOARD);
tabBuilder.buildHearterTab("功率板", FIXBOARDID_PC_BOARD); tabBuilder.buildHearterTab("功率板", FIXBOARDID_PC_BOARD);
tabBuilder.buildH2O2SensorTab("功率板", FIXBOARDID_PC_BOARD); tabBuilder.buildH2O2SensorTab("功率板", FIXBOARDID_PC_BOARD);
tabBuilder.buildBlowerTab("液路板", FIXBOARDID_LC_BOARD); //
tabBuilder.buildAirCompressorTab("功率板", FIXBOARDID_PC_BOARD); tabBuilder.buildAirCompressorTab("功率板", FIXBOARDID_PC_BOARD);
tabBuilder.buildAirTightnessTestACTab("功率板", 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); // tabBuilder.buildExtChSelectorTab("外置通道选择器", FIXBOARDID_EXT_CH_SELECTOR); //
} }

129
src/app/transmit_disinfection/utils/tabbuilder.cpp

@ -6,7 +6,8 @@ using namespace iflytop;
using namespace app_transmit_disinfection; using namespace app_transmit_disinfection;
using namespace transmit_disfection_protocol; 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) { static void readBoardInfo(int deviceId) {
ack_read_board_info_data_t ack = CAN_MASTER->readboardinfo(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, 1); });
box->newSubButton("失能上报", [this, boardid](int argn, const char **args) { CAN_MASTER->enableReport(boardid, 0); }); box->newSubButton("失能上报", [this, boardid](int argn, const char **args) { CAN_MASTER->enableReport(boardid, 0); });
box->newSubButtonEnd(); 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); }); box->newSubButton("复位板卡", [this, boardid](int argn, const char **args) { CAN_MASTER->resetBoard(boardid); });
} else { } else {
@ -214,52 +222,99 @@ void TabBuilder::buildWaterSensorTab(const char *tabname, int boardid) {
void TabBuilder::buildBlowerTab(const char *tabname, int boardid) { void TabBuilder::buildBlowerTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname); ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "风机", 4); 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->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) { void TabBuilder::buildAirCompressorTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname); ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "空压机", 4); 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->newSubButton("空压机关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->airCompressorCtrl(boardid, 0); });
box->newSubButtonEnd(); 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]);
}
}
}); });
} }

4
src/app_version.hpp

@ -1,8 +1,8 @@
#pragma once #pragma once
#define VERSION(main, sub, fix) (main << 16 | sub << 8 | fix << 0) #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_MAIN VERSION_MAIN(APP_VERSION)
#define APP_VERSION_SUB VERSION_SUB(APP_VERSION) #define APP_VERSION_SUB VERSION_SUB(APP_VERSION)

9
src/protocol/zscanprotocol_com/zscanprotocol_com.hpp

@ -44,6 +44,15 @@ class Receipt {
zcanbus_packet_t *getPacket() { return (zcanbus_packet_t *)receipt; } zcanbus_packet_t *getPacket() { return (zcanbus_packet_t *)receipt; }
int32_t getContent(int index) { return ((int32_t *)(getPacket()->params))[index]; } int32_t getContent(int index) { return ((int32_t *)(getPacket()->params))[index]; }
uint8_t *getByte() { return (uint8_t *)getPacket()->params; } 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 { class CanPacketRxBuffer {

Loading…
Cancel
Save