3500/mainwindow.cpp

537 lines
17 KiB
C++
Raw Normal View History

2023-04-14 19:30:30 +08:00
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include "quihelper.h"
#include "NetMgr.h"
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
g_SqliteDB->OpenDataBase();
g_NetMgr = new NetMgr(this);
g_FtpClient = new FtpClient();
this->initWindow();
this->initStyle();
this->initLeft();
this->initLeft2();
this->initLeft3();
this->initLeft4();
myTimer = new QTimer(this);
myTimer->start(1000);
connect(myTimer,SIGNAL(timeout()),this,SLOT(GetDateTime()));
this ->setWindowFlags(Qt::Window);
//this ->showFullScreen();
pRealTimeForm = NULL;
pChannelSetting = NULL;
pUnitSetting = NULL;
pBoardSetting = NULL;
pChannelList = NULL;
pWorkCondition = NULL;
pTriggerConfig = NULL;
pFileServerConfig = NULL;
pNTPServerConfig = NULL;
pPSConfig = NULL;
pCharacteristcList = NULL;
pWaveDisPlay = NULL;
pConfiguration = NULL;
pRealTimeAlarm = NULL;
pHistoryAlarm = NULL;
pTrendGraph = NULL;
pTerminalInfo = NULL;
pSystemSelfcheck = NULL;
pDIOBoard = NULL;
ui->tabWidget_main->tabBar()->hide();
ui->tabWidget_Configuration->tabBar()->hide();
ui->tabWidget_sysConfig->tabBar()->hide();
ui->tabWidget_accidentTracing->tabBar()->hide();
if(pRealTimeForm == NULL)
pRealTimeForm = new CRealTimeForm (this);
ui->stackedWidget->setCurrentIndex(0);
if(pCharacteristcList == NULL)
pCharacteristcList = new CCharacteristicList (this);
ui->tabWidget_main->addTab(pRealTimeForm,"");
ui->tabWidget_main->addTab(pCharacteristcList,"");
connect(pRealTimeForm,SIGNAL(sigWCStatus(QString&)), this, SLOT(slotWCStatus(QString&)));
connect(pRealTimeForm,SIGNAL(sigRPM(QString&)), this, SLOT(slotRPM(QString&)));
2023-04-27 19:48:15 +08:00
mqttclient = new MqttClient(this);
mqttclient->ConnectMQTT(IP);
m_strTriggerEnevtTopic = QString("up/%1/trigger").arg(MAC);//订阅
mqttclient->subscribed(m_strTriggerEnevtTopic);
connect(mqttclient, SIGNAL(Recevive_sig(QString,QByteArray)), this, SLOT(mqttReceive_slot(QString,QByteArray)));
2023-04-14 19:30:30 +08:00
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::initWindow()
{
//设置无边框
//QUIHelper::setFramelessForm(this);
ui->widgetTitle->setProperty("form", "title");
//关联事件过滤器用于双击放大
ui->widgetTitle->installEventFilter(this);
ui->widgetTop->setProperty("nav", "top");
ui->widgetStatus->setProperty("nav", "bottom");
//ui->verticalLayout_2->setProperty("nav", "leftbtn");
ui->widgetLeft->setProperty("flag", "left");
ui->widgetLeft->setProperty("nav", "left");
ui->widgetLeft2->setProperty("nav", "left");
ui->widgetLeft2->setProperty("flag", "left");
ui->widgetLeft3->setProperty("nav", "left");
ui->widgetLeft3->setProperty("flag", "left");
ui->widgetLeft4->setProperty("nav", "left");
ui->widgetLeft4->setProperty("flag", "left");
this->resize(1920,1080);
QFont font;
font.setPixelSize(25);
// ui->LOGO->setFont(font);
// ui->LOGO->setText("南瑞nari南瑞nari");
// ui->LOGO->setPixmap(QPixmap(":/image/logo.png").scaled(288, 108));
this->setWindowTitle("DataWatch3500");
font.setPixelSize(30);
font.setFamily(QStringLiteral("黑体"));
ui->label_Name->setFont(font);
ui->label_Name->setText("南瑞SJ90C状态检测装置状态检测软件V1.0");
font.setPixelSize(20);
ui->label_IP->setFont(font);
ui->label_Status->setFont(font);
ui->label_Status->setText("安徽绩溪抽水蓄能电站1号机组");
if(QUIHelper::getLocalIPs().size() > 0)
ui->label_IP->setText("IP:" + QUIHelper::getLocalIPs()[0]);
else
ui->label_IP->setText("IP: 未获取到");
font.setPixelSize(35);
ui->label_RPM->setFont(font);
ui->label_RPM->setText("0");
//设置顶部导航按钮
QList<QAbstractButton *> tbtns = ui->widgetTop->findChildren<QAbstractButton *>();
foreach (QAbstractButton *btn, tbtns) {
//btn->setIconSize(icoSize);
//btn->setMinimumWidth(icoWidth);
btn->setCheckable(true);
connect(btn, SIGNAL(clicked()), this, SLOT(buttonClick()));
}
QString tableName = "t_DeviceInfo";
QString col = "IP,MAC";
QString str = g_SqliteDB->GetSingelLine(tableName,col);
QStringList strList = str.split(",");
IP = strList[0];
MAC = strList[1];
qDebug() << "IP" << IP << "MAC" << MAC<< endl;
g_MapChannelType.insert("ACCELEROMETER","加速度");
g_MapChannelType.insert("MICROPHONE","声音");
2023-04-17 17:40:26 +08:00
g_MapChannelType.insert("THRUST","轴向位移");
2023-04-14 19:30:30 +08:00
g_MapChannelType.insert("VELOCITY","速度");
g_MapChannelType.insert("TACHOMETER","转速");
2023-04-17 17:40:26 +08:00
g_MapChannelType.insert("PROXIMETER","径向振动位移");
2023-04-14 19:30:30 +08:00
g_MapChannelType.insert("FAST_VOLTAGE","动态电压");
g_MapChannelType.insert("SLOW_CURRENT","低速电流");
g_MapChannelType.insert("PULSE_CURRENT","高速电流");
g_MapChannelType.insert("DI","开入");
g_MapChannelType.insert("DO","开出");
}
2023-04-17 17:40:26 +08:00
2023-04-14 19:30:30 +08:00
void MainWindow::initStyle()
{
//加载样式表
QString qss;
QFile file(":/qss/blacksoft.css");
if (file.open(QFile::ReadOnly)) {
qss = QLatin1String(file.readAll());
QString paletteColor = qss.mid(20, 7);
qApp->setPalette(QPalette(paletteColor));
qApp->setStyleSheet(qss);
file.close();
}
}
void MainWindow::initLeft()
{
btnsConfig << ui->mainMonitorBtn << ui->characBtn << ui->waveBtn << ui->DIOBtn ;
int count = btnsConfig.count();
for (int i = 0; i < count; ++i) {
QToolButton *btn = (QToolButton *)btnsConfig.at(i);
btn->setCheckable(true);
btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
connect(btn, SIGNAL(clicked(bool)), this, SLOT(leftConfigClick()));
}
ui->mainMonitorBtn->setChecked(true);
}
void MainWindow::leftConfigClick()
{
QToolButton *b = (QToolButton *)sender();
QString name = b->text();
int count = btnsConfig.count();
for (int i = 0; i < count; ++i) {
QAbstractButton *btn = btnsConfig.at(i);
btn->setChecked(btn == b);
}
if(name == "主监视图"){
ui->tabWidget_main->setCurrentWidget(pRealTimeForm);
}else if(name == "特征值列表"){
ui->tabWidget_main->setCurrentWidget(pCharacteristcList);
}else if(name == "气隙监测"){
}else if(name == "波形图"){
if(pWaveDisPlay == NULL)
pWaveDisPlay = new CWaveDisPlay(this);
ui->tabWidget_main->addTab(pWaveDisPlay,"");
ui->tabWidget_main->setCurrentWidget(pWaveDisPlay);
}else if(name == "开入开出"){
if(pDIOBoard == NULL)
pDIOBoard = new CDIO_Board(this);
ui->tabWidget_main->addTab(pDIOBoard,"");
ui->tabWidget_main->setCurrentWidget(pDIOBoard);
}
//ui->label->setText(name);
}
void MainWindow::initLeft2()
{
btnsConfig2 << ui->realTimeClockBtn << ui->historyClockBtn << ui->analysisBtn ;
int count = btnsConfig2.count();
for (int i = 0; i < count; ++i) {
QToolButton *btn = (QToolButton *)btnsConfig2.at(i);
btn->setCheckable(true);
btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
connect(btn, SIGNAL(clicked(bool)), this, SLOT(leftConfigClick2()));
}
ui->realTimeClockBtn->setChecked(true);
}
void MainWindow::leftConfigClick2()
{
QToolButton *b = (QToolButton *)sender();
QString name = b->text();
qDebug() << "name" << name << endl;
int count = btnsConfig2.count();
for (int i = 0; i < count; ++i) {
QAbstractButton *btn = btnsConfig2.at(i);
btn->setChecked(btn == b);
}
if(name == "实时报警"){
ui->tabWidget_accidentTracing->setCurrentWidget(pRealTimeAlarm);
}else if(name == "历史报警"){
ui->tabWidget_accidentTracing->setCurrentWidget(pHistoryAlarm);
}else if(name == "趋势分析"){
ui->tabWidget_accidentTracing->setCurrentWidget(pTrendGraph);
}
}
void MainWindow::initLeft3()
{
btnsConfig3 << ui->unitSettingBtn << ui->boardSettingBtn << ui->channelSettingBtn \
<< ui->workConditionBtn << ui->triggerBtn << ui->configurationBtn;
int count = btnsConfig3.count();
for (int i = 0; i < count; ++i) {
QToolButton *btn = (QToolButton *)btnsConfig3.at(i);
btn->setCheckable(true);
btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
connect(btn, SIGNAL(clicked(bool)), this, SLOT(leftConfigClick3()));
}
ui->unitSettingBtn->setChecked(true);
}
void MainWindow::leftConfigClick3()
{
QToolButton *b = (QToolButton *)sender();
QString name = b->text();
int count = btnsConfig3.count();
for (int i = 0; i < count; ++i) {
QAbstractButton *btn = btnsConfig3.at(i);
btn->setChecked(btn == b);
}
if(name == "机组配置"){
ui->tabWidget_Configuration->setCurrentWidget(pUnitSetting);
}else if(name == "板卡配置"){
if(pBoardSetting == NULL)
pBoardSetting = new CBoardSetting (this);
ui->tabWidget_Configuration->addTab(pBoardSetting,"");
ui->tabWidget_Configuration->setCurrentWidget(pBoardSetting);
if(pChannelList){
delete pChannelList;
pChannelList = NULL;
}
if(pWorkCondition){
delete pWorkCondition;
pWorkCondition = NULL;
}
if(pTriggerConfig){
delete pTriggerConfig;
pTriggerConfig = NULL;
}
if(pConfiguration){
delete pConfiguration;
pConfiguration = NULL;
}
}else if(name == "通道配置"){
if(pChannelList == NULL)
pChannelList = new CChannelList (this);
ui->tabWidget_Configuration->addTab(pChannelList,"");
ui->tabWidget_Configuration->setCurrentWidget(pChannelList);
if(pBoardSetting){
delete pBoardSetting;
pBoardSetting = NULL;
}
if(pWorkCondition){
delete pWorkCondition;
pWorkCondition = NULL;
}
if(pTriggerConfig){
delete pTriggerConfig;
pTriggerConfig = NULL;
}
// if(pUnitConfiguration){
// delete pUnitConfiguration;
// pUnitConfiguration = NULL;
// }
// if(pTestForm){
// delete pTestForm;
// pTestForm = NULL;
// }
}else if(name == "工况配置"){
if(pWorkCondition == NULL)
pWorkCondition = new CWorkingcondition (this);
ui->tabWidget_Configuration->addTab(pWorkCondition,"");
ui->tabWidget_Configuration->setCurrentWidget(pWorkCondition);
if(pBoardSetting){
delete pBoardSetting;
pBoardSetting = NULL;
}
if(pChannelList){
delete pChannelList;
pChannelList = NULL;
}
if(pTriggerConfig){
delete pTriggerConfig;
pTriggerConfig = NULL;
}
if(pConfiguration){
delete pConfiguration;
pConfiguration = NULL;
}
}else if(name == "触发配置"){
if(pTriggerConfig == NULL)
pTriggerConfig = new CTriggerConfig (this);
ui->tabWidget_Configuration->addTab(pTriggerConfig,"");
ui->tabWidget_Configuration->setCurrentWidget(pTriggerConfig);
if(pBoardSetting){
delete pBoardSetting;
pBoardSetting = NULL;
}
if(pChannelList){
delete pChannelList;
pChannelList = NULL;
}
if(pWorkCondition){
delete pWorkCondition;
pWorkCondition = NULL;
}
if(pConfiguration){
delete pConfiguration;
pConfiguration = NULL;
}
}else if(name == "组态报警"){
if(pConfiguration == NULL)
pConfiguration = new CConfiguration (this);
else
return;
//pConfiguration->Init();
ui->tabWidget_Configuration->addTab(pConfiguration,"");
ui->tabWidget_Configuration->setCurrentWidget(pConfiguration);
if(pBoardSetting){
delete pBoardSetting;
pBoardSetting = NULL;
}
if(pChannelList){
delete pChannelList;
pChannelList = NULL;
}
if(pWorkCondition){
delete pWorkCondition;
pWorkCondition = NULL;
}
if(pTriggerConfig){
delete pTriggerConfig;
pTriggerConfig = NULL;
}
}
//ui->label->setText(name);
}
void MainWindow::initLeft4()
{
btnsConfig4 << ui->serverConfigBtn << ui->NTPConfigBtn << \
ui->systemSelfinspectionBtn << ui->terminalDetailsBtn\
<< ui->channelCalibrationBtn ;
int count = btnsConfig4.count();
for (int i = 0; i < count; ++i) {
QToolButton *btn = (QToolButton *)btnsConfig4.at(i);
btn->setCheckable(true);
btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
connect(btn, SIGNAL(clicked(bool)), this, SLOT(leftConfigClick4()));
}
ui->serverConfigBtn->setChecked(true);
}
void MainWindow::leftConfigClick4()
{
QToolButton *b = (QToolButton *)sender();
QString name = b->text();
int count = btnsConfig4.count();
for (int i = 0; i < count; ++i) {
QAbstractButton *btn = btnsConfig4.at(i);
btn->setChecked(btn == b);
}
if(name == "网络配置"){
ui->tabWidget_sysConfig->setCurrentWidget(pFileServerConfig);
if(pTerminalInfo){
delete pTerminalInfo;
pTerminalInfo = NULL;
}
}else if(name == "时间配置"){
ui->tabWidget_sysConfig->setCurrentWidget(pNTPServerConfig);
if(pTerminalInfo){
delete pTerminalInfo;
pTerminalInfo = NULL;
}
}else if(name == "终端详情"){
if(pTerminalInfo == NULL)
pTerminalInfo = new CTerminalInfo (this);
ui->tabWidget_sysConfig->addTab(pTerminalInfo,"");
ui->tabWidget_sysConfig->setCurrentWidget(pTerminalInfo);
}else if(name == "系统自检"){
ui->tabWidget_sysConfig->setCurrentWidget(pSystemSelfcheck);
if(pTerminalInfo){
delete pTerminalInfo;
pTerminalInfo = NULL;
}
2023-04-27 19:48:15 +08:00
}else if(name == "通道标定"){
QProcess process(this);
process.startDetached(".\\Calibration\\NARI3500Calibration.exe");
2023-04-14 19:30:30 +08:00
}
//ui->label->setText(name);
}
void MainWindow::GetDateTime()
{
QDateTime timeNow = QDateTime::currentDateTime();
QFont font;
font.setPixelSize(20);
ui->label_Time->setFont(font);
ui->label_Time->setText(tr("%1").arg(timeNow.toString(" yyyy/MM/dd \nhh:mm:ss ddd")));
}
void MainWindow::buttonClick()
{
QAbstractButton *b = (QAbstractButton *)sender();
QString name = b->text();
QList<QAbstractButton *> tbtns = ui->widgetTop->findChildren<QAbstractButton *>();
foreach (QAbstractButton *btn, tbtns) {
btn->setChecked(btn == b);
}
if (name == "实时监测") {
if(pRealTimeForm == NULL)
pRealTimeForm = new CRealTimeForm (this);
ui->stackedWidget->setCurrentIndex(0);
} else if (name == "事故追溯") {
ui->stackedWidget->setCurrentIndex(1);
if(pRealTimeAlarm == NULL)
pRealTimeAlarm = new CRealTimeAlarm(this);
if(pHistoryAlarm == NULL)
pHistoryAlarm = new CHistoryAlarm(this);
if(pTrendGraph == NULL)
pTrendGraph = new CTrendGraph(this);
ui->tabWidget_accidentTracing->addTab(pRealTimeAlarm,"");
ui->tabWidget_accidentTracing->addTab(pHistoryAlarm,"");
ui->tabWidget_accidentTracing->addTab(pTrendGraph,"");
} else if (name == "数据组态") {
if(pUnitSetting == NULL){
pUnitSetting = new CUnitSetting (this);
ui->unitSettingBtn->setChecked(true);
ui->tabWidget_Configuration->addTab(pUnitSetting,"");
}
ui->stackedWidget->setCurrentIndex(2);
} else if (name == "系统设置") {
if(pFileServerConfig == NULL)
pFileServerConfig = new CFileServerConfig (this);
if(pNTPServerConfig == NULL)
pNTPServerConfig = new CNTPServerConfig (this);
// if(pTerminalInfo == NULL)
// pTerminalInfo = new CTerminalInfo (this);
if(pSystemSelfcheck == NULL)
pSystemSelfcheck = new CSystemSelfcheck (this);
ui->stackedWidget->setCurrentIndex(3);
ui->tabWidget_sysConfig->addTab(pFileServerConfig,"");
ui->tabWidget_sysConfig->addTab(pNTPServerConfig,"");
//ui->tabWidget_sysConfig->addTab(pTerminalInfo,"");
ui->tabWidget_sysConfig->addTab(pSystemSelfcheck,"");
}
}
void MainWindow::slotWCStatus(QString& strWCStatus)
{
QStringList strList = strWCStatus.split(",");
ui->label_WC->setText(strList[1]);
ui->label_Trg->setText(strList[0]);
}
2023-04-27 19:48:15 +08:00
2023-04-14 19:30:30 +08:00
void MainWindow::slotRPM(QString& str)
{
ui->label_RPM->setText(str);
2023-04-27 19:48:15 +08:00
}
2023-04-14 19:30:30 +08:00
2023-04-27 19:48:15 +08:00
void MainWindow::mqttReceive_slot(QString strTopic,QByteArray payload)
{
if(strTopic == m_strTriggerEnevtTopic){
QString strReceive = QString(payload);
}
2023-04-14 19:30:30 +08:00
}