You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

380 lines
19 KiB

#include "tabbuilder.hpp"
#include "../dep.hpp"
using namespace iflytop;
using namespace app_transmit_disinfection;
using namespace transmit_disfection_protocol;
#define CAN_MASTER TransmitDisinfectionCanMaster::ins()
static void readBoardInfo(int deviceId) {
ack_read_board_info_data_t ack = CAN_MASTER->readboardinfo(deviceId);
ISHOW("boardType :%s(%d)", BoardTypeId2Str(ack.boardType), ack.boardType);
ISHOW("projectId :%s(%d)", ProjectIDToString(ack.projectId), ack.projectId);
ISHOW("protcol_version :%d", ack.protcol_version);
ISHOW("software_version :%d", ack.software_version);
ISHOW("hardware_version :%d", ack.hardware_version);
}
static void readSysInfo(int deviceId) {
//
ack_sysinfo_t ack = CAN_MASTER->readsysinfo(deviceId);
ask_taskinfo_t task[20];
for (int i = 0; i < ack.taskNum; i++) {
task[i] = CAN_MASTER->readtaskinfo(deviceId, i);
}
ISHOW("=========================== sys info ===========================");
ISHOW("total_heap_size :%d", ack.total_heap_size);
ISHOW("free_heap_size :%d", ack.free_heap_size);
ISHOW("free_sys_heap_size :%d", ack.free_sys_heap_size);
ISHOW("sysHasRun :%d", ack.sysHasRun);
ISHOW("=");
ISHOW("=========================== task info ===========================");
ISHOW("taskoff name state stackRemainSize priority");
for (int i = 0; i < ack.taskNum; i++) {
ISHOW("%d %10s %c %d %d", i, task[i].taskName, task[i].state, task[i].stackRemindSize, task[i].priority);
}
ISHOW("=");
}
ZQVTabPage *TabBuilder::getTab(const char *tabname) {
if (tabMap.find(tabname) == tabMap.end()) {
ZQVTabPage *tab = new ZQVTabPage(fathertab, tabname);
tabMap[tabname] = tab;
}
return tabMap[tabname];
}
// int blowserIsOpen(int boardid) {}
// int airCompressorIsOpen(int boardid) {}
// int airTightnessTestACIsOpen(int boardid) {}
// int heaterIsOpen(int boardid) {}
// extChSelectorGetCh
// int airTightnessTestIsCutoff(int boardid) { return m_com->callcmd0(boardid, kfn_air_tightness_test_is_cutoff, DEFUALT_OVERTIME)->getContent(0); }
// void warningLightReadState(int boardid, int *r, int *g, int *b, int *warning);
void TabBuilder::buildBoardBasicCtrl(const char *tabname, int boardid) { //
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "通用", 4);
box->newSubButton("PingAll", [this, boardid](int argn, const char **args) { CAN_MASTER->pingAllBoard(); });
box->newSubButtonEnd();
if (boardid >= 0) {
box->newSubButton("读取板卡信息", [this, boardid](int argn, const char **args) { readBoardInfo(boardid); });
box->newSubButton("读取系统信息", [this, boardid](int argn, const char **args) { readSysInfo(boardid); });
box->newSubButtonEnd();
box->newSubButton("清除复位标识", [this, boardid](int argn, const char **args) { CAN_MASTER->clearResetFlag(boardid); });
// enableReport
box->newSubButtonEnd();
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->resetBoard(boardid); });
} else {
box->newFunc("读取板卡信息", {"boardid"}, [this](int argn, const char **args) { readBoardInfo(atoi(args[0])); });
box->newFunc("读取系统信息", {"boardid"}, [this](int argn, const char **args) { readSysInfo(atoi(args[0])); });
box->newFunc("清除复位标识", {"boardid"}, [this](int argn, const char **args) { CAN_MASTER->clearResetFlag(atoi(args[0])); });
box->newFunc("使能上报", {"boardid"}, [this](int argn, const char **args) { CAN_MASTER->enableReport(atoi(args[0]), 1); });
box->newFunc("失能上报", {"boardid"}, [this](int argn, const char **args) { CAN_MASTER->enableReport(atoi(args[0]), 0); });
box->newFunc("复位板卡", {"boardid"}, [this](int argn, const char **args) { CAN_MASTER->resetBoard(atoi(args[0])); });
}
}
void TabBuilder::buildFnPumpCtrl(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "泵机控制(0:加液泵, 1:喷液泵)", 6);
box->newFunc("pumpRotate", {"subid", "rpm"}, [](int argn, const char **args) { //
CAN_MASTER->pumpRotate(kFixBoardId_LiquidCtrl, atoi(args[0]), atoi(args[1]));
});
box->newFunc("pumpStop", {"subid"}, [](int argn, const char **args) { //
CAN_MASTER->pumpStop(kFixBoardId_LiquidCtrl, atoi(args[0]));
});
box->newFunc("pumpSetIholdIrunIdelay", {"subid", "ihold", "irun", "idelay"}, [](int argn, const char **args) { //
CAN_MASTER->pumpSetIholdIrunIdelay(kFixBoardId_LiquidCtrl, atoi(args[0]), atoi(args[1]), atoi(args[2]), atoi(args[3]));
});
// pumpSetTzw
box->newFunc("pumpSetTzw", {"subid", "tzw"}, [](int argn, const char **args) { //
CAN_MASTER->pumpSetTzw(kFixBoardId_LiquidCtrl, atoi(args[0]), atoi(args[1]));
});
box->newFunc("pumpSetRamp", {"subid", "vs", "a1", "amx", "v1"}, [](int argn, const char **args) { //
CAN_MASTER->pumpSetRamp(kFixBoardId_LiquidCtrl, atoi(args[0]), atoi(args[1]), atoi(args[2]), atoi(args[3]), atoi(args[4]));
});
box->newFunc("pumpSetSubicReg", {"subid", "regadd", "val"}, [](int argn, const char **args) { //
CAN_MASTER->pumpSetSubicReg(kFixBoardId_LiquidCtrl, atoi(args[0]), atoi(args[1]), atoi(args[2]));
});
box->newFunc("pumpGetSubicReg", {"subid", "regadd"}, [](int argn, const char **args) { //
int val = CAN_MASTER->pumpGetSubicReg(kFixBoardId_LiquidCtrl, atoi(args[0]), atoi(args[1]));
ISHOW("val:%x", val);
});
box->newFunc("pumpIsRun", {"subid"}, [](int argn, const char **args) { //
int val = CAN_MASTER->pumpIsRun(kFixBoardId_LiquidCtrl, atoi(args[0]));
ISHOW("val:%d", val);
});
}
void TabBuilder::buildHearterTab(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->heaterCtrl(boardid, 1); });
box->newSubButton("加热关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->heaterCtrl(boardid, 0); });
box->newSubButtonEnd();
box->newSubButton("加热安全阀打开", [this, boardid](int argn, const char **args) { CAN_MASTER->heaterCtrlSafeValve(boardid, 1); });
box->newSubButton("加热安全阀关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->heaterCtrlSafeValve(boardid, 0); });
box->newSubButtonEnd();
box->newSubButton("读取电流", [this, boardid](int argn, const char **args) {
int val = CAN_MASTER->heaterReadEI(boardid);
ISHOW("val:%d", val);
});
box->newSubButton("读取温度", [this, boardid](int argn, const char **args) {
int val = CAN_MASTER->heaterReadTemperature(boardid);
ISHOW("val:%d", val);
});
box->newSubButton("读取电流ADC", [this, boardid](int argn, const char **args) {
int val = CAN_MASTER->heaterReadEIAdcRaw(boardid);
ISHOW("val:%d", val);
});
box->newSubButton("读取温度Adc", [this, boardid](int argn, const char **args) {
int val = CAN_MASTER->heaterReadTemperatureAdcRaw(boardid);
ISHOW("val:%d", val);
});
box->newSubButton("是否运行", [this, boardid](int argn, const char **args) {
bool val = CAN_MASTER->heaterIsOpen(boardid);
ISHOW("val:%d", val);
});
}
void TabBuilder::buildH2O2SensorTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "H2O2", 4);
if (boardid >= 0) {
box->newFunc("H2O2传感器读取校准日期", {}, [boardid](int argn, const char **args) {
int32_t year, month, day;
CAN_MASTER->h2o2SensorReadCalibrationDate(boardid, &year, &month, &day);
ISHOW("year:%d,month:%d,day:%d", year, month, day);
});
box->newFunc("H2O2传感器读取IC错误码", {}, [boardid](int argn, const char **args) {
int val = CAN_MASTER->h2o2SensorReadSubIcErrorcode(boardid);
ISHOW("val:%d", val);
});
box->newFunc("H2O2传感器读取IC寄存器", {"reg", "num"}, [boardid](int argn, const char **args) {
uint8_t *val = CAN_MASTER->h2o2SensorReadSubIcReg(boardid, atoi(args[0]), atoi(args[1]));
ISHOW("val:%s", zhex2str(val, atoi(args[1]) * 2).c_str());
});
} else {
box->newFunc("H2O2传感器读取校准日期", {"boardid"}, [this](int argn, const char **args) {
int32_t year, month, day;
CAN_MASTER->h2o2SensorReadCalibrationDate(atoi(args[0]), &year, &month, &day);
ISHOW("year:%d,month:%d,day:%d", year, month, day);
});
box->newFunc("H2O2传感器读取IC错误码", {"boardid"}, [this](int argn, const char **args) {
int val = CAN_MASTER->h2o2SensorReadSubIcErrorcode(atoi(args[0]));
ISHOW("val:%d", val);
});
box->newFunc("H2O2传感器读取IC寄存器", {"boardid", "reg", "num"}, [this](int argn, const char **args) {
uint8_t *val = CAN_MASTER->h2o2SensorReadSubIcReg(atoi(args[0]), atoi(args[1]), atoi(args[2]));
ISHOW("val:%s", zhex2str(val, atoi(args[2]) * 2).c_str());
});
}
}
void TabBuilder::buildTripleWarningLightTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "三色警报灯", 4);
box->newFunc("三色指示灯控制", {"r", "g", "b", "warning"}, [this, boardid](int argn, const char **args) { //
CAN_MASTER->warningLightSetState(boardid, atoi(args[0]), atoi(args[1]), atoi(args[2]), atoi(args[3]));
});
box->newFunc("读取三色指示灯状态", {}, [this, boardid](int argn, const char **args) {
int r, g, b, warning;
CAN_MASTER->warningLightReadState(boardid, &r, &g, &b, &warning);
ISHOW("r:%d,g:%d,b:%d,warning:%d", r, g, b, warning);
});
}
void TabBuilder::buildWaterSensorTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "水浸", 4);
box->newSubButton("读取-蒸发桶水浸传感器-状态", [this, boardid](int argn, const char **args) {
int state = CAN_MASTER->evaporationTankWSReadState(boardid);
ISHOW("state:%d", state);
});
box->newSubButton("读取-设备底部水浸传感器-状态", [this, boardid](int argn, const char **args) {
int state = CAN_MASTER->bottomWSReadState(boardid);
ISHOW("state:%d", state);
});
}
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->newSubButton("风机读取电流ADC", [this, boardid](int argn, const char **args) {
int val = CAN_MASTER->blowerReadEIAdcRaw(boardid);
ISHOW("val:%d", val);
});
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);
});
}
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, 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);
});
}
void TabBuilder::buildAirTightnessTestACTab(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->airTightnessTestACCtrl(boardid, 1); });
box->newSubButton("关闭", [this, boardid](int argn, const char **args) { CAN_MASTER->airTightnessTestACCtrl(boardid, 0); });
box->newSubButtonEnd();
box->newSubButton("是否打开", [this, boardid](int argn, const char **args) {
bool val = CAN_MASTER->airTightnessTestACIsOpen(boardid);
ISHOW("val:%d", val);
});
}
void TabBuilder::buildPSBusTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "PSBus", 4);
box->newFunc("读数据", {"subid"}, [this, boardid](int argn, const char **args) {
int32_t val = CAN_MASTER->psBusReadData(boardid, atoi(args[0]));
ISHOW("val:%d", val);
});
box->newSubButton("读取扫描结果", [this, boardid](int argn, const char **args) {
auto result = CAN_MASTER->psBusScan(boardid);
for (int i = 0; i < 10; i++) {
if (result.sensor[i].isOnline) {
ISHOW("id %d, subid %d, ptype %s, uint %s, precision %d, zero %d, full %d", //
i, result.sensor[i].subid, PSType2Str(result.sensor[i].ptype), p100uint2Str(result.sensor[i].uint), result.sensor[i].precision, result.sensor[i].zero, result.sensor[i].full);
} else {
ISHOW("id %d, offline", i);
}
}
});
box->newSubButtonEnd();
box->newSubButton("开始上报", [this, boardid](int argn, const char **args) { CAN_MASTER->psBusStartReport(boardid, 1000); });
box->newSubButton("停止上报", [this, boardid](int argn, const char **args) { CAN_MASTER->psBusStopReport(boardid); });
}
void TabBuilder::buildProportionalTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "比例阀", 4);
box->newFunc("设置比例阀", {"valveId(1->255)", "valveValue(0->255)"}, [this, boardid](int argn, const char **args) { //
CAN_MASTER->proportionalSetValve(boardid, atoi(args[0]), atoi(args[1]));
});
box->newFunc("读取比例阀位置", {}, [this, boardid](int argn, const char **args) { //
int32_t val = CAN_MASTER->proportionalReadPos(boardid);
ISHOW("val:%d", val);
});
box->newFunc("比例阀是否忙", {}, [this, boardid](int argn, const char **args) { //
int32_t val = CAN_MASTER->proportionalIsBusy(boardid);
ISHOW("val:%d", val);
});
}
void TabBuilder::buildAirTightnessTestTab(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->getCanProtocolCom()->callcmd1(boardid, kfn_air_leak_test_set_mode, 0, DEFUALT_OVERTIME);
});
box->newSubButton("打气模式", [this, boardid](int argn, const char **args) { //
CAN_MASTER->getCanProtocolCom()->callcmd1(boardid, kfn_air_leak_test_set_mode, 1, DEFUALT_OVERTIME);
});
box->newSubButton("气压测试模式", [this, boardid](int argn, const char **args) { //
CAN_MASTER->getCanProtocolCom()->callcmd1(boardid, kfn_air_leak_test_set_mode, 2, DEFUALT_OVERTIME);
});
box->newSubButtonEnd();
box->newSubButton("读取模式(0:消毒,1:打气,2:气压测试)", [this, boardid](int argn, const char **args) { //
shared_ptr<Receipt> receipt = CAN_MASTER->getCanProtocolCom()->callcmd0(boardid, kfn_air_leak_test_get_mode, DEFUALT_OVERTIME);
ISHOW("val:%d", receipt->getContent(0));
});
}
void TabBuilder::buildExtChSelectorTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "外部通道选择", 4);
box->newFunc("设置外部通道(0:消毒 1:降解 2:除湿)", {"ch"}, [this, boardid](int argn, const char **args) { //
CAN_MASTER->extChSelectorSetCh(boardid, atoi(args[0]));
});
box->newFunc("读取外部通道", {}, [this, boardid](int argn, const char **args) { //
int val = CAN_MASTER->extChSelectorGetCh(boardid);
ISHOW("val:%d", val);
});
}
void TabBuilder::buildValveCtrlTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "电磁阀", 4);
box->newFunc("加液进气电磁阀(打开,可以正常加液排液,关闭后加液泵倒转可以排空管路)", {"open(1)/cloce(0)"}, [this, boardid](int argn, const char **args) { //
CAN_MASTER->getCanProtocolCom()->callcmd1(boardid, kfn_set_add_fluid_channel_selector_valve, atoi(args[0]), DEFUALT_OVERTIME);
});
}
// void TabBuilder::buildValveCtrlTab(const char *tabname, int boardid) {
// ZQVTabPage *tab = getTab(tabname);
// ZQFunctionListBox *box = new ZQFunctionListBox(tab, "电磁阀", 4);
// box->newFunc("加液进气电磁阀(打开,可以正常加液排液,关闭后加液泵倒转可以排空管路)", {"open(1)/cloce(0)"}, [this, boardid](int argn, const char **args) { //
// CAN_MASTER->getCanProtocolCom()->callcmd1(boardid, kfn_set_add_fluid_channel_selector_valve, atoi(args[0]), DEFUALT_OVERTIME);
// });
// }
void TabBuilder::buildLiquidLevelStateReaderTab(const char *tabname, int boardid) {
ZQVTabPage *tab = getTab(tabname);
ZQFunctionListBox *box = new ZQFunctionListBox(tab, "液位(IO版)状态读取", 4);
box->newFunc("读取状态(如果是IO0:低液位,IO1:中液位,IO2:高液位)", {}, [this, boardid](int argn, const char **args) { //
shared_ptr<Receipt> receipt = CAN_MASTER->getCanProtocolCom()->callcmd0(boardid, kfn_liquid_level_read_io_state, DEFUALT_OVERTIME);
ISHOW("IO0:%d", receipt->getContent(0) & 0x01);
ISHOW("IO1:%d", (receipt->getContent(0) >> 1) & 0x01);
ISHOW("IO2:%d", (receipt->getContent(0) >> 2) & 0x01);
});
}
void TabBuilder::buildEnd() {
for (auto &it : tabMap) {
it.second->addSpacer();
}
}