Compare commits

...

5 Commits

@ -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() {

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

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

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

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

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

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

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

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

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

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

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

@ -178,6 +178,7 @@ void Cffmpeg_decode::run() {
QImage::Format_RGB32);
emit sendQImage(img);
QThread::msleep(28);
}
}
av_packet_unref(inputPacket);

@ -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);
@ -72,6 +72,7 @@ private:
unsigned char *out_buffer = nullptr;
int videoStreamIndex = -1;
int videoStreamIndexOut = -1;
int numBytes = -1;
QString _url;

@ -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(); // 启用线程信号
}
}

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

@ -25,6 +25,9 @@
<property name="layoutDirection">
<enum>Qt::LayoutDirection::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
</widget>
<resources/>
<connections/>

Loading…
Cancel
Save