HwangKC 2025-03-25 22:12:59 +08:00
parent 1382bfb747
commit 81c1db0a90
6 changed files with 150 additions and 61 deletions

View File

@ -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"
}

View File

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

View File

@ -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:

View File

@ -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
}
]
}
]
}

View File

@ -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++;
}

View File

@ -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;