From b7be1762379f9b98c4dc53a81fe57ce50ea4fbe4 Mon Sep 17 00:00:00 2001
From: caoyuhui <1152604503@qq.com>
Date: Wed, 4 Sep 2024 15:41:16 +0800
Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=98=E5=8C=96=E7=BD=91=E7=BB=9C?=
=?UTF-8?q?=E7=9B=91=E6=B5=8B=EF=BC=9B2=E3=80=81=E4=B8=BB=E9=A1=B5?=
=?UTF-8?q?=E3=80=81=E5=85=89=E7=94=B5=E5=90=8A=E8=88=B1=E9=A1=B5=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2=E6=94=B9=E4=B8=BA=E6=A8=A1=E6=80=81?=
=?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=A1=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Src/GDDC/gddcCmdDlg.cpp | 6 --
Src/GDDC/gddcCmdDlg.h | 2 -
Src/GDDC/gddcStateInfo.ui | 6 ++
Src/GDDC/gddcdlg.cpp | 10 ++--
Src/GDDC/gddcdlg.ui | 2 +-
Src/HomePage/deviceStateDlg.cpp | 92 +++++++++++++++++-------------
Src/HomePage/deviceStateDlg.h | 4 +-
Src/HomePage/homepagedlg.cpp | 3 +-
Src/HomePage/networkDetection.cpp | 39 ++++++++++---
Src/HomePage/networkDetection.h | 5 +-
Src/ModelCamera/modelcameradlg.cpp | 3 +-
Src/ModelCamera/modelcameradlg.ui | 2 +-
Src/Video/cffmpeg_decode.h | 2 +-
Src/Video/ffmpegvideodlg.cpp | 9 ++-
Src/Video/ffmpegvideodlg.h | 4 +-
Src/Video/ffmpegvideodlg.ui | 3 +
16 files changed, 114 insertions(+), 78 deletions(-)
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 @@
1121
+
+ false
+
Form
+
+
+
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 @@
false
- background-color: rgb(85, 85, 127);
+ border-color: rgb(255, 0, 0);
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 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
-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 @@
ffmpegvideoDlg
QWidget
-
+
1
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 @@
Qt::LayoutDirection::LeftToRight
+
+
+