diff --git a/Src/GDDC/gddcCmdDlg.cpp b/Src/GDDC/gddcCmdDlg.cpp index cb4417d..08e174a 100644 --- a/Src/GDDC/gddcCmdDlg.cpp +++ b/Src/GDDC/gddcCmdDlg.cpp @@ -176,12 +176,6 @@ void GDDCCmdDlg::sendCurDate(std::byte *buffer, int num) { } UpdateDataTJDC(); } -// 拍一张照 按下 -void GDDCCmdDlg::on_pushButton_11_pressed() { - TJDCCmdBuffer[0] = (std::byte)0x32; -} -// 松开 -void GDDCCmdDlg::on_pushButton_11_released() { clearTJDCCmdBuffer(); } // 授时 void GDDCCmdDlg::on_pushButton_1_1_pressed() { diff --git a/Src/GDDC/gddcCmdDlg.h b/Src/GDDC/gddcCmdDlg.h index 9a64938..8897969 100644 --- a/Src/GDDC/gddcCmdDlg.h +++ b/Src/GDDC/gddcCmdDlg.h @@ -53,8 +53,6 @@ public: void setAIDetcLineEditText(QString, QString); // 设置AI监测lineEdit的内容 private slots: /*系统控制*/ - void on_pushButton_11_pressed(); - void on_pushButton_11_released(); void on_pushButton_1_1_pressed(); void on_pushButton_1_1_released(); void on_pushButton_1_2_pressed(); diff --git a/Src/GDDC/gddcStateInfo.ui b/Src/GDDC/gddcStateInfo.ui index e590f04..1509cff 100644 --- a/Src/GDDC/gddcStateInfo.ui +++ b/Src/GDDC/gddcStateInfo.ui @@ -10,9 +10,15 @@ <height>1121</height> </rect> </property> + <property name="acceptDrops"> + <bool>false</bool> + </property> <property name="windowTitle"> <string>Form</string> </property> + <property name="styleSheet"> + <string notr="true"/> + </property> <widget class="QTableView" name="tableViewShowIState"> <property name="geometry"> <rect> diff --git a/Src/GDDC/gddcdlg.cpp b/Src/GDDC/gddcdlg.cpp index f77fde0..abb00d5 100644 --- a/Src/GDDC/gddcdlg.cpp +++ b/Src/GDDC/gddcdlg.cpp @@ -73,8 +73,9 @@ void GDDCdlg::initWindow() { setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); hide(); - m_DlgGDDCSet = new GDDCSet(); - m_DlgGDDCSet->setWindowFlags(Qt::Window); // 设置为独立窗口 + m_DlgGDDCSet = new GDDCSet(this); + m_DlgGDDCSet->setWindowFlags(Qt::Dialog); + m_DlgGDDCSet->setWindowModality(Qt::WindowModal);//设置为模态对话框 m_GDDCCmdDlg = new GDDCCmdDlg(this); m_GDDCStateDlg = new GDDCStateInfo(this); ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png")); @@ -318,7 +319,7 @@ void GDDCdlg::resizeUI() { // = VideoAreaHeight*16/9; // ui->WgtffmpegVideo->setGeometry(0.5*(VideoAreaWidth-setVideoAreaWidth),0,(int)setVideoAreaWidth,(int)setVideoAreaHeight); // } - ui->WgtffmpegVideo->setGeometry(0, 0, (int)VideoAreaWidth, + ui->WgtffmpegVideo->setGeometry(20, 20, (int)VideoAreaWidth, (int)VideoAreaHeight); /**************设置按钮****************/ @@ -377,8 +378,7 @@ void GDDCdlg::startConnectURL1() { // Is_openVideo = true; // ui->WgtffmpegVideo->Isplay(Is_openVideo); // ui->WgtffmpegVideo->m_PlayStatus = Is_openVideo; - ui->WgtffmpegVideo->play(); - ui->WgtffmpegVideo->setUrl(m_DlgGDDCSet->m_playURL1); + ui->WgtffmpegVideo->play(m_DlgGDDCSet->m_playURL1); } } diff --git a/Src/GDDC/gddcdlg.ui b/Src/GDDC/gddcdlg.ui index 614c0e7..6eaa58b 100644 --- a/Src/GDDC/gddcdlg.ui +++ b/Src/GDDC/gddcdlg.ui @@ -98,7 +98,7 @@ <bool>false</bool> </property> <property name="styleSheet"> - <string notr="true">background-color: rgb(85, 85, 127);</string> + <string notr="true">border-color: rgb(255, 0, 0);</string> </property> </widget> <widget class="QPushButton" name="pushButShowCmdPage"> diff --git a/Src/HomePage/deviceStateDlg.cpp b/Src/HomePage/deviceStateDlg.cpp index ecdbaab..f11cf03 100644 --- a/Src/HomePage/deviceStateDlg.cpp +++ b/Src/HomePage/deviceStateDlg.cpp @@ -96,11 +96,11 @@ void deviceStateDlg::initWindow() { void deviceStateDlg::initParam() { // 172.10.1.183 -n 2 -w 500" - cmdlist[0] << "/c" << "ping" << "172.10.1.183"; - cmdlist[1] << "/c" << "ping" << "172.10.1.183"; - cmdlist[2] << "/c" << "ping" << "www.baidu.com"; - cmdlist[3] << "/c" << "ping" << "www.baidu.com"; - cmdlist[4] << "/c" << "ping" << "www.baidu.com"; + cmdlist[0] << "/c" << "ping" << "172.10.1.183 -n 2"; + cmdlist[1] << "/c" << "ping" << "172.10.1.183 -n 2"; + cmdlist[2] << "/c" << "ping" << "www.baidu.com -n 2"; + cmdlist[3] << "/c" << "ping" << "www.baidu.com -n 2"; + cmdlist[4] << "/c" << "ping" << "www.baidu.com -n 2"; startNetDetn(); } @@ -158,32 +158,37 @@ void deviceStateDlg::setDeviceIP(int id, settingStruct param) { switch (id) { case HomePageSetingWidget::GDDC: strIp = stringIPSelect(param.net.remoteIp); + strIp="/c ping " + strIp + " -n 1"; cmdlist[0].clear(); - cmdlist[0] << "/c" << "ping" << strIp; + cmdlist[0] << strIp; m_networkDetection[0]->DyChangeCmdList(cmdlist[0]); // 更新到网络检测线程 break; case HomePageSetingWidget::L_Link: strIp = stringIPSelect(param.url); + strIp="/c ping " + strIp + " -n 1"; cmdlist[1].clear(); - cmdlist[1] << "/c" << "ping" << strIp; + cmdlist[1] << strIp; m_networkDetection[1]->DyChangeCmdList(cmdlist[1]); // 更新到网络检测线程 break; case HomePageSetingWidget::Adhoc_Network: strIp = stringIPSelect(param.url); + strIp="/c ping " + strIp + " -n 1"; cmdlist[2].clear(); - cmdlist[2] << "/c" << "ping" << strIp; + cmdlist[2] << strIp; m_networkDetection[2]->DyChangeCmdList(cmdlist[2]); // 更新到网络检测线程 break; case HomePageSetingWidget::Satelite_Comm: strIp = stringIPSelect(param.url); + strIp="/c ping " + strIp + " -n 1"; cmdlist[3].clear(); - cmdlist[3] << "/c" << "ping" << strIp; + cmdlist[3] << strIp; m_networkDetection[3]->DyChangeCmdList(cmdlist[3]); // 更新到网络检测线程 break; case HomePageSetingWidget::ModelCamera: strIp = stringIPSelect(param.net.remoteIp); + strIp="/c ping " + strIp + " -n 1"; cmdlist[4].clear(); - cmdlist[4] << "/c" << "ping" << strIp; + cmdlist[4] << strIp; m_networkDetection[4]->DyChangeCmdList(cmdlist[4]); // 更新到网络检测线程 break; default: @@ -232,48 +237,53 @@ void deviceStateDlg::setUrl( // 开始网络监测 void deviceStateDlg::startNetDetn() { for (int i = 0; i < deviceNum; ++i) { - m_networkDetection[i] = new networkDetection(); + m_networkDetection[i] = new networkDetection(NULL,i); m_workerThread[i] = new QThread(); m_networkDetection[i]->moveToThread(m_workerThread[i]); m_workerThread[i]->start(); connect(m_networkDetection[i], SIGNAL(resultReady(int, QString, QString)), this, SLOT(receiveResult(int, QString, QString))); // 接收线程运行结果 - switch (i) { - case 0: - connect(this, &deviceStateDlg::startThread0, m_networkDetection[i], - &networkDetection::dowork); // 光电吊舱 线程开始处理数据 - emit startThread0(i, cmdlist[i]); // 启用线程信号 - break; - case 1: - connect(this, &deviceStateDlg::startThread1, m_networkDetection[i], - &networkDetection::dowork); // L链路 线程开始处理数据 - emit startThread1(i, cmdlist[i]); // 启用线程信号 - break; - case 2: - connect(this, &deviceStateDlg::startThread2, m_networkDetection[i], - &networkDetection::dowork); // 自组网 线程开始处理数据 - emit startThread2(i, cmdlist[i]); // 启用线程信号 - break; - case 3: - connect(this, &deviceStateDlg::startThread3, m_networkDetection[i], - &networkDetection::dowork); // ku卫通 线程开始处理数据 - emit startThread3(i, cmdlist[i]); // 启用线程信号 - break; - case 4: - connect(this, &deviceStateDlg::startThread4, m_networkDetection[i], - &networkDetection::dowork); // 线程开始处理数据 - emit startThread4(i, cmdlist[i]); // 启用线程信号 - break; - default: - break; - } + connect(this, &deviceStateDlg::stopThread, m_networkDetection[i], + &networkDetection::stop); // 结束线程 + connect(this, &deviceStateDlg::startThread, m_networkDetection[i], + &networkDetection::dowork); // 开始线程 + emit startThread(i, cmdlist[i]); // 启用线程信号 + // switch (i) { + // case 0: + // connect(this, &deviceStateDlg::startThread0, m_networkDetection[i], + // &networkDetection::dowork); // 光电吊舱 线程开始处理数据 + // emit startThread0(i, cmdlist[i]); // 启用线程信号 + // break; + // case 1: + // connect(this, &deviceStateDlg::startThread1, m_networkDetection[i], + // &networkDetection::dowork); // L链路 线程开始处理数据 + // emit startThread1(i, cmdlist[i]); // 启用线程信号 + // break; + // case 2: + // connect(this, &deviceStateDlg::startThread2, m_networkDetection[i], + // &networkDetection::dowork); // 自组网 线程开始处理数据 + // emit startThread2(i, cmdlist[i]); // 启用线程信号 + // break; + // case 3: + // connect(this, &deviceStateDlg::startThread3, m_networkDetection[i], + // &networkDetection::dowork); // ku卫通 线程开始处理数据 + // emit startThread3(i, cmdlist[i]); // 启用线程信号 + // break; + // case 4: + // connect(this, &deviceStateDlg::startThread4, m_networkDetection[i], + // &networkDetection::dowork); // 线程开始处理数据 + // emit startThread4(i, cmdlist[i]); // 启用线程信号 + // break; + // default: + // break; + // } } } // 停止网络监测 void deviceStateDlg::stopNetDetn() { for (int i = 0; i < deviceNum; ++i) { - m_networkDetection[i]->stop(); // 线程退出循环 + m_networkDetection[i]->stop(i); // 线程退出循环 m_workerThread[i]->quit(); // 退出线程请求 m_workerThread[i]->wait(); // 使线程正常退出。 m_workerThread[i]->deleteLater(); diff --git a/Src/HomePage/deviceStateDlg.h b/Src/HomePage/deviceStateDlg.h index 1033ff5..4d663bc 100644 --- a/Src/HomePage/deviceStateDlg.h +++ b/Src/HomePage/deviceStateDlg.h @@ -23,12 +23,12 @@ public: signals: void switchToDevicePage(int id); // 发送切换到设备页信号 // QVector<void (*)(int, QStringList)> startThread(int, QStringList); - void startThread0(int, QStringList); // 启动线程 + void startThread(int, QStringList); // 启动线程 void startThread1(int, QStringList); // 启动线程 void startThread2(int, QStringList); // 启动线程 void startThread3(int, QStringList); // 启动线程 void startThread4(int, QStringList); // 启动线程 - + void stopThread(int); // 结束线程 private slots: void on_pushButton_homePage_GDDC_clicked(); diff --git a/Src/HomePage/homepagedlg.cpp b/Src/HomePage/homepagedlg.cpp index d162d1c..51030b2 100644 --- a/Src/HomePage/homepagedlg.cpp +++ b/Src/HomePage/homepagedlg.cpp @@ -16,7 +16,8 @@ HomePageDlg::HomePageDlg(QWidget *parent) hide(); settingWidget = new HomePageSetingWidget(this); - settingWidget->setWindowFlags(Qt::Window); // 设置为独立窗口 + settingWidget->setWindowFlags(Qt::Dialog); + settingWidget->setWindowModality(Qt::WindowModal);//设置为模态对话框 m_deviceStateDlg = new deviceStateDlg(this); // 状态嵌入窗口 m_deviceStateDlg->show(); diff --git a/Src/HomePage/networkDetection.cpp b/Src/HomePage/networkDetection.cpp index def07db..d5bc98d 100644 --- a/Src/HomePage/networkDetection.cpp +++ b/Src/HomePage/networkDetection.cpp @@ -1,20 +1,40 @@ #include "networkDetection.h" +#include <QDateTime> -networkDetection::networkDetection(QObject *parent) : QObject(parent) { +networkDetection::networkDetection(QObject *parent,int id) : QObject(parent),m_id(id){ flagRun = true; CmdListChanged = false; m_process = new QProcess(this); } - +// networkDetection::networkDetection(int id) +// { +// flagRun = true; +// CmdListChanged = false; +// m_process = new QProcess(this); +// m_id = id; +// } networkDetection::~networkDetection() { delete m_process; } void networkDetection::dowork(int id, QStringList cmdlist) { m_cmd = cmdlist; - m_id = id; + if(id != m_id) + return; QString result; while (flagRun) { m_process->start("cmd", m_cmd); + // if(id == 1) + // { + // QDateTime time = QDateTime::currentDateTime(); + // QString str = time .toString("start yyyy-MM-dd hh:mm:ss\n");//格式化时间 .toString("yyyy-MM-dd hh:mm:ss");//格式化时间 + // qDebug()<< str; + // } m_process->waitForFinished(); // 等待指令执行完毕 + // if(id == 1) + // { + // QDateTime time = QDateTime::currentDateTime(); + // QString str = time .toString("end yyyy-MM-dd hh:mm:ss\n");//格式化时间 .toString("yyyy-MM-dd hh:mm:ss");//格式化时间 + // qDebug()<< str; + // } result = QString::fromLocal8Bit(m_process->readAll()); // 获取指令执行结果 // qDebug() << result; if (result.contains(QString("TTL="))) // 若包含TTL=字符串则认为网络在线 @@ -26,15 +46,16 @@ void networkDetection::dowork(int id, QStringList cmdlist) { // qDebug() << "离线"; emit resultReady(m_id, "离线","通信异常"); } - // if (CmdListChanged) { - // CmdListChanged = false; - // return; - // } - // QThread::sleep(2); // 加sleep降低CPU占用率 + + QThread::sleep(2); // 加sleep降低CPU占用率 } } -void networkDetection::stop() { flagRun = false; } +void networkDetection::stop(int id) { + if(id == m_id){ + flagRun = false; + } +} void networkDetection::DyChangeCmdList(QStringList changeCmdList) { m_cmd.clear(); diff --git a/Src/HomePage/networkDetection.h b/Src/HomePage/networkDetection.h index 8a05259..f410920 100644 --- a/Src/HomePage/networkDetection.h +++ b/Src/HomePage/networkDetection.h @@ -10,12 +10,13 @@ class networkDetection : public QObject { Q_OBJECT public: - networkDetection(QObject *parent = nullptr); + networkDetection(QObject *parent = nullptr,int id = 0); + //networkDetection(int); ~networkDetection(); public slots: void dowork(int, QStringList); - void stop(); + void stop(int); signals: void resultReady(int, QString, QString); diff --git a/Src/ModelCamera/modelcameradlg.cpp b/Src/ModelCamera/modelcameradlg.cpp index 45a264e..f9ab911 100644 --- a/Src/ModelCamera/modelcameradlg.cpp +++ b/Src/ModelCamera/modelcameradlg.cpp @@ -166,8 +166,7 @@ void ModelCameraDlg::on_pushButton_5_clicked() { QString str = ui->pushButton_5->text(); if (str == "播放视频") { QString ip = ui->videoIPLineEdit->text(); - ui->cameraVideoWidget->play(); - ui->cameraVideoWidget->setUrl(ip); + ui->cameraVideoWidget->play(ip); ui->pushButton_5->setText("暂停播放"); } else { ui->cameraVideoWidget->stop(); diff --git a/Src/ModelCamera/modelcameradlg.ui b/Src/ModelCamera/modelcameradlg.ui index 7162b23..23e4a33 100644 --- a/Src/ModelCamera/modelcameradlg.ui +++ b/Src/ModelCamera/modelcameradlg.ui @@ -1289,7 +1289,7 @@ <customwidget> <class>ffmpegvideoDlg</class> <extends>QWidget</extends> - <header location="global">ffmpegvideodlg.h</header> + <header>ffmpegvideodlg.h</header> <container>1</container> </customwidget> </customwidgets> diff --git a/Src/Video/cffmpeg_decode.h b/Src/Video/cffmpeg_decode.h index dc3941a..7639787 100644 --- a/Src/Video/cffmpeg_decode.h +++ b/Src/Video/cffmpeg_decode.h @@ -36,7 +36,6 @@ public: ~Cffmpeg_decode(); public: - void setUrl(QString url); bool open_input_file(); bool IsstopPlay = false; void stop(); @@ -47,6 +46,7 @@ public: void setSaveFileDirPath(QString fileDirPath); public slots: void run(); + void setUrl(QString url); signals: void sendQImage(QImage); diff --git a/Src/Video/ffmpegvideodlg.cpp b/Src/Video/ffmpegvideodlg.cpp index 67e5dff..5ce11c3 100644 --- a/Src/Video/ffmpegvideodlg.cpp +++ b/Src/Video/ffmpegvideodlg.cpp @@ -22,28 +22,31 @@ void ffmpegvideoDlg::iniWindow() { qDebug() << "文件夹创建成功"; } } -void ffmpegvideoDlg::setUrl(QString url) { ffmpeg->setUrl(url); } - void ffmpegvideoDlg::setVedioSaveFileDirPath(QString saveDirPath) { videoSaveDirPath = saveDirPath; } -void ffmpegvideoDlg::play() { +void ffmpegvideoDlg::play(QString url) { if (!m_PlayStatus) { m_PlayStatus = true; ffmpeg = new Cffmpeg_decode; ffmpeg->setSaveFileDirPath(videoSaveDirPath); ffmpeg->IsstopPlay = false; ffmpeg->moveToThread(&workerThread); + connect(&workerThread, &QThread::finished, ffmpeg, &QObject::deleteLater); // 线程发送结束标志 connect(this, &ffmpegvideoDlg::operate, ffmpeg, &Cffmpeg_decode::run); // 线程开始处理数据 + connect(this, &ffmpegvideoDlg::setUrlSign, ffmpeg, + &Cffmpeg_decode::setUrl); // 设置URL connect(ffmpeg, SIGNAL(sendQImage(QImage)), this, SLOT(receiveQImage(QImage))); // 发送解析的图片 connect(ffmpeg, SIGNAL(sendConnectFail(int)), this, SLOT(showMessagBox(int))); // 发送错误信息提示 + workerThread.start(); + emit this->setUrlSign(url);// 设置URL emit this->operate(); // 启用线程信号 } } diff --git a/Src/Video/ffmpegvideodlg.h b/Src/Video/ffmpegvideodlg.h index e91386b..f49fff7 100644 --- a/Src/Video/ffmpegvideodlg.h +++ b/Src/Video/ffmpegvideodlg.h @@ -43,10 +43,9 @@ private: public: void iniWindow(); - void setUrl(QString url); void setVedioSaveFileDirPath(QString saveDirPath); - void play(); + void play(QString); void stop(); bool Isplay(bool IsstopPlay); bool m_PlayStatus = false; @@ -65,6 +64,7 @@ private slots: void showMessagBox(int); signals: void operate(); + void setUrlSign(QString); private: Cffmpeg_decode *ffmpeg; diff --git a/Src/Video/ffmpegvideodlg.ui b/Src/Video/ffmpegvideodlg.ui index 51bb678..3df1507 100644 --- a/Src/Video/ffmpegvideodlg.ui +++ b/Src/Video/ffmpegvideodlg.ui @@ -25,6 +25,9 @@ <property name="layoutDirection"> <enum>Qt::LayoutDirection::LeftToRight</enum> </property> + <property name="styleSheet"> + <string notr="true"/> + </property> </widget> <resources/> <connections/>