diff --git a/applications/EmsShower/EmsShower.pro b/applications/EmsShower/EmsShower.pro index 9713d93..d526502 100644 --- a/applications/EmsShower/EmsShower.pro +++ b/applications/EmsShower/EmsShower.pro @@ -45,6 +45,7 @@ LIBS += -lws2_32 INCLUDEPATH += $$PWD/../../SDK/include CONFIG(debug, debug|debug) { +DEFINES += _DEBUG_ INCLUDEPATH += "D:/Visual Leak Detector/include" win32:LIBS += "D:/Visual Leak Detector/lib/Win64/vld.lib" } diff --git a/applications/EmsShower/customdisplaypanel.cpp b/applications/EmsShower/customdisplaypanel.cpp index 78ee39d..a30ae07 100644 --- a/applications/EmsShower/customdisplaypanel.cpp +++ b/applications/EmsShower/customdisplaypanel.cpp @@ -123,7 +123,7 @@ void CustomDisplayPanel::Build() // 设置列宽策略 tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed); - tableWidget->setColumnWidth(0, 150); + tableWidget->setColumnWidth(0, 200); tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); //tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch); diff --git a/applications/EmsShower/customdisplaypanel.h b/applications/EmsShower/customdisplaypanel.h index 3e1ac55..a71d9f9 100644 --- a/applications/EmsShower/customdisplaypanel.h +++ b/applications/EmsShower/customdisplaypanel.h @@ -37,14 +37,16 @@ protected: public: typedef enum _tagPanelType: int { - PANEL_TEMPERATURE = 1, - PANEL_BATTERY, - PANEL_POWER, - PANEL_AC, - PANEL_PV, - PANEL_ALARM, - PANEL_INVERTER, - PANEL_HOME, + PANEL_TEMPERATURE = 1, //温度传感器 + PANEL_BATTERY = 2, //电池Pack + PANEL_DCPOWER = 3, //直流电源 + PANEL_ACFAN = 4, //空调风扇 + PANEL_PV = 5, //太阳能 + PANEL_ALARM = 6, //告警 + PANEL_INVERTER = 7, //逆变器整流器 + PANEL_ACPOWER = 8, //交流电源 + PANEL_OTHER = 88, //其它 + PANEL_HOME = 99, //传感器,水浸门禁 } PanelType; public: diff --git a/applications/EmsShower/emsshower.json b/applications/EmsShower/emsshower.json index 256132d..0b58fda 100644 --- a/applications/EmsShower/emsshower.json +++ b/applications/EmsShower/emsshower.json @@ -182,9 +182,9 @@ "precision":1, "unit":"", "title_chn":"水浸传感器", - "title_eng":"Water ingress", + "title_eng":"Water Ingress", "display":1, - "skip":1 + "skip":0 }, { "comment":"烟雾传感器", @@ -256,7 +256,7 @@ "language":"en", "device_name_chn":"交流配电屏", "device_name_eng":"AC Power", - "device_type":7, + "device_type":8, "data": [ { "comment":"设备通讯状态", @@ -316,7 +316,7 @@ "title_chn":"输入频率", "title_eng":"Freq.", "display":2, - "skip":1 + "skip":0 }, { "comment":"交流总电量", @@ -354,7 +354,7 @@ "precision":1, "unit":"A", "title_chn":"输出电流C", - "title_eng":"ICAout", + "title_eng":"ICout", "display":2, "skip":0 }, @@ -374,7 +374,7 @@ "precision":1, "unit":"", "title_chn":"系统供电方式", - "title_eng":"Power Supply Mode", + "title_eng":"Pwr Supply Mode", "display":2, "skip":0 } @@ -2854,6 +2854,77 @@ "skip":0 } ] + }, + { + "start_addr":11774, + "quantity":6, + "bytes_per_register":2, + "language":"en", + "device_name_chn":"风机", + "device_name_eng":"Fan", + "device_type":4, + "data": [ + { + "comment":"设备通讯状态", + "order":0, + "precision":1, + "unit":"", + "title_chn":"设备通讯状态", + "title_eng":"Online", + "display":1, + "skip":0 + }, + { + "comment":"温度值", + "order":1, + "precision":1, + "unit":"℃", + "title_chn":"温度值", + "title_eng":"Temperature", + "display":1, + "skip":0 + }, + { + "comment":"风扇1状态", + "order":2, + "precision":1, + "unit":"", + "title_chn":"风扇#1 状态", + "title_eng":"Fan#1 Status", + "display":2, + "skip":0 + }, + { + "comment":"风扇2状态", + "order":3, + "precision":1, + "unit":"", + "title_chn":"风扇#2 状态", + "title_eng":"Fan#2 Status", + "display":2, + "skip":0 + }, + { + "comment":"风扇3状态", + "order":4, + "precision":1, + "unit":"", + "title_chn":"风扇#3 状态", + "title_eng":"Fan#3 Status", + "display":2, + "skip":0 + }, + { + "comment":"风扇4状态", + "order":5, + "precision":1, + "unit":"", + "title_chn":"风扇#4 状态", + "title_eng":"Fan#4 Status", + "display":2, + "skip":0 + } + ] } ] } diff --git a/applications/EmsShower/mainwindow.cpp b/applications/EmsShower/mainwindow.cpp index 7fe7798..aadf453 100644 --- a/applications/EmsShower/mainwindow.cpp +++ b/applications/EmsShower/mainwindow.cpp @@ -216,7 +216,11 @@ bool MainWindow::InitializeUI() //设置窗体透明 this->setAttribute(Qt::WA_TranslucentBackground, true); //设置无边框 +#ifndef _DEBUG_ this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); +#else + this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); +#endif //实例阴影shadow QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this); //设置阴影距离 @@ -257,27 +261,11 @@ bool MainWindow::InitializeUI() m_pPowerPanel->Build(); mainLayout->addWidget(m_pPowerPanel, 0, 1); - m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_POWER,m_pPowerPanel)); - -#if 0 - //空调 - m_pACPanel = new CustomDisplayPanel(this); - m_pACPanel->setImage(":/icons/main_ac.png"); - QStringList l4{QStringList{tr("Online"),tr("Machine"),tr("IFM"),tr("Compressor"),tr("OFM"),tr("Discharge Temp."),tr("Room Temp.")}}; - m_pACPanel->setLableCount(l4.count()); - m_pACPanel->setTableRowsCount(10); - m_pACPanel->setLables(l4); - m_pACPanel->setRowItems(QStringList{tr("露点"),tr("DO"),tr("DI1"),tr("DI2"),tr("高温"),tr("低温"),tr("高湿")}); - m_pACPanel->setMainLabel(tr("HVACR")); - m_pACPanel->Build(); - mainLayout->addWidget(m_pACPanel, 0, 3); - - m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_AC,m_pACPanel)); -#endif + m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_DCPOWER,m_pPowerPanel)); //整流模块 m_pInverterPanel = new CustomDisplayPanel(this); - m_pInverterPanel->setImage(":/icons/main_invertor.png"); + m_pInverterPanel->setImage(":/icons/main_peidian.png"); QStringList l5{QStringList{tr("Online"),tr("Vin AB/A"),tr("Vin BC/B"),tr("Vin CA/C")}}; m_pInverterPanel->setLableCount(l5.count()); m_pInverterPanel->setTableRowsCount(10); @@ -287,7 +275,23 @@ bool MainWindow::InitializeUI() m_pInverterPanel->Build(); mainLayout->addWidget(m_pInverterPanel, 0, 2); - m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_INVERTER,m_pInverterPanel)); + m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_ACPOWER,m_pInverterPanel)); + +#if 1 + //空调 + m_pACPanel = new CustomDisplayPanel(this); + m_pACPanel->setImage(":/icons/main_ac.png"); + QStringList l4{QStringList{tr("Online"),tr("T (℃)")}}; + m_pACPanel->setLableCount(l4.count()); + m_pACPanel->setTableRowsCount(10); + m_pACPanel->setLables(l4); + m_pACPanel->setRowItems(QStringList{tr("露点"),tr("DO"),tr("DI1"),tr("DI2"),tr("高温"),tr("低温"),tr("高湿")}); + m_pACPanel->setMainLabel(tr("Fan")); + m_pACPanel->Build(); + mainLayout->addWidget(m_pACPanel, 0, 3); + + m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_ACFAN,m_pACPanel)); +#endif //电池 m_pBatteryPanel = new CustomDisplayPanel(this); @@ -302,21 +306,6 @@ bool MainWindow::InitializeUI() mainLayout->addWidget(m_pBatteryPanel, 1, 0); m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_BATTERY,m_pBatteryPanel)); -#if 0 - //PV太阳能 - m_pPVPanel = new CustomDisplayPanel(this); - m_pPVPanel->setImage(":/icons/main_pv.png"); - QStringList l6{QStringList{tr("Online"),tr("Access Control"),tr("Water ingress"),tr("Smoke")}}; - m_pPVPanel->setLableCount(l6.count()); - m_pPVPanel->setTableRowsCount(10); - m_pPVPanel->setLables(l6); - m_pPVPanel->setRowItems(QStringList{tr("露点"),tr("DO"),tr("DI1"),tr("DI2"),tr("高温"),tr("低温"),tr("高湿")}); - m_pPVPanel->setMainLabel(tr("​PV Module")); - m_pPVPanel->Build(); - mainLayout->addWidget(m_pPVPanel, 1, 1); - - m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_PV,m_pPVPanel)); -#endif //门禁 m_pHomePanel = new CustomDisplayPanel(this); @@ -332,6 +321,22 @@ bool MainWindow::InitializeUI() m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_HOME,m_pHomePanel)); +#if 1 + //蒸馏模块 + m_pPVPanel = new CustomDisplayPanel(this); + m_pPVPanel->setImage(":/icons/main_invertor.png"); + QStringList l6{QStringList{tr("Online"),tr("Vout"),tr("Module Number")}}; + m_pPVPanel->setLableCount(l6.count()); + m_pPVPanel->setTableRowsCount(10); + m_pPVPanel->setLables(l6); + m_pPVPanel->setRowItems(QStringList{tr("露点"),tr("DO"),tr("DI1"),tr("DI2"),tr("高温"),tr("低温"),tr("高湿")}); + m_pPVPanel->setMainLabel(tr("Invertor")); + m_pPVPanel->Build(); + mainLayout->addWidget(m_pPVPanel, 1, 2); + + m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_INVERTER,m_pPVPanel)); +#endif + //告警 m_pAlarmPanel = new CustomWarningPanel(this); m_pAlarmPanel->setImage(":/icons/main_alarm.png"); @@ -343,7 +348,7 @@ bool MainWindow::InitializeUI() m_pAlarmPanel->setRowItems(QStringList{tr("")}); m_pAlarmPanel->setMainLabel(tr("Warning")); m_pAlarmPanel->Build(); - mainLayout->addWidget(m_pAlarmPanel, 1, 2); + mainLayout->addWidget(m_pAlarmPanel, 1, 3); m_Panels.insert(std::make_pair(CustomDisplayPanel::PANEL_ALARM,m_pAlarmPanel)); @@ -559,6 +564,8 @@ bool MainWindow::readRegister() DecodeSync(registers, *iterAddress, pDevice); + qDebug() << registers; + OpenJson json; if(CreateJson2(pDevice,json)) { @@ -566,7 +573,7 @@ bool MainWindow::readRegister() } else { - ui->statusbar->showMessage(tr("Failed to decode temperaure data")); //解析温度数据失败!")); + ui->statusbar->showMessage(tr("Failed to decode temperature data")); //解析温度数据失败!")); } delete pDevice; @@ -673,6 +680,9 @@ bool MainWindow::CreateJson2(DeviceData* pData,OpenJson& json) auto& nodeTable = json["table"]; for(; iter!=pDevice->m_PanelDisplayDataItems.end(); iter++) { + qDebug() << iter->title.c_str(); + qDebug() << iter->value; + if(iter->display_location == 1) //显示在面板 { nodeLabel[idx0]["value"] = iter->value * 1.0f / iter->precision; @@ -685,12 +695,14 @@ bool MainWindow::CreateJson2(DeviceData* pData,OpenJson& json) { nodeTable[idx1]["value"] = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss").toStdString(); nodeTable[idx1]["signal"] = "Time"; + idx1++; } - else + { nodeTable[idx1]["value"] = iter->value * 1.0f / iter->precision; nodeTable[idx1]["signal"] = iter->title; } + idx1++; } diff --git a/applications/EmsShower/slave_define.h b/applications/EmsShower/slave_define.h index c8b1e6f..62c8611 100644 --- a/applications/EmsShower/slave_define.h +++ b/applications/EmsShower/slave_define.h @@ -130,17 +130,20 @@ typedef struct __slaveAddress std::string device_name_chn; // " : "温湿度", 该寄存器数组代表的设备名称 std::string device_name_eng; // " : "温湿度", 该寄存器数组代表的设备名称,英文 + //参考slave_define.h //标识本地址的数据是哪一个类型的设备 /* - PANEL_TEMPERATURE = 1, - PANEL_BATTERY = 2, - PANEL_POWER = 3, - PANEL_AC = 4, - PANEL_PV = 5, - PANEL_ALARM = 6, - PANEL_INVERTER = 7, - PANEL_OTHER = 88, - PANEL_HOME = 99, + PANEL_TEMPERATURE = 1, //温度传感器 + PANEL_BATTERY = 2, //电池Pack + PANEL_DCPOWER = 3, //直流电源 + PANEL_ACFAN = 4, //空调风扇 + PANEL_PV = 5, //太阳能 + PANEL_ALARM = 6, //告警 + PANEL_INVERTER = 7, //逆变器整流器 + PANEL_ACPOWER = 8, //交流电源 + PANEL_OTHER = 88, //其它 + PANEL_HOME = 99, //传感器,水浸门禁 + } PanelType; * */ int device_type;