fix: 合并main,解决冲突
@ -1,11 +1,16 @@
|
||||
SOURCES += \
|
||||
$$PWD/deviceStateDlg.cpp \
|
||||
$$PWD/homepagesetingwidget.cpp \
|
||||
$$PWD/homepagedlg.cpp
|
||||
$$PWD/homepagedlg.cpp \
|
||||
$$PWD/networkDetection.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/deviceStateDlg.h \
|
||||
$$PWD/homepagesetingwidget.h \
|
||||
$$PWD/homepagedlg.h
|
||||
$$PWD/homepagedlg.h \
|
||||
$$PWD/networkDetection.h
|
||||
|
||||
FORMS += \
|
||||
$$PWD/deviceStateDlg.ui \
|
||||
$$PWD/homepagesetingwidget.ui \
|
||||
$$PWD/homepagedlg.ui \
|
||||
|
@ -0,0 +1,285 @@
|
||||
#include "deviceStateDlg.h"
|
||||
#include "ui_deviceStateDlg.h"
|
||||
|
||||
deviceStateDlg::deviceStateDlg(QWidget *parent)
|
||||
: QWidget(parent), ui(new Ui::deviceStateDlg) {
|
||||
ui->setupUi(this);
|
||||
initWindow();
|
||||
initParam();
|
||||
}
|
||||
|
||||
deviceStateDlg::~deviceStateDlg() {
|
||||
stopNetDetn();
|
||||
delete m_timer;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void deviceStateDlg::initWindow() {
|
||||
// 嵌入到主窗口
|
||||
setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
|
||||
hide();
|
||||
|
||||
QString stateButtonStyle =
|
||||
/*正常情况下样式*/
|
||||
"QPushButton{"
|
||||
//"image: url(:/res/lamp/grey.png)-23px 0px no-repeat;"
|
||||
"border-radius: 13px;"
|
||||
"border-style: solid;"
|
||||
"border-width: 1px;"
|
||||
"padding: 5px;"
|
||||
"}";
|
||||
ui->pushButton_state_GDDC->setStyleSheet(stateButtonStyle);
|
||||
ui->pushButton_state_LLink->setStyleSheet(stateButtonStyle);
|
||||
ui->pushButton_state_3DCamra->setStyleSheet(stateButtonStyle);
|
||||
ui->pushButton_state_KuSatelliteComm->setStyleSheet(stateButtonStyle);
|
||||
ui->pushButton_state_PDT->setStyleSheet(stateButtonStyle);
|
||||
ui->pushButton_state_adHocNetwork->setStyleSheet(stateButtonStyle);
|
||||
ui->pushButton_state_rescue->setStyleSheet(stateButtonStyle);
|
||||
//"image: url(:/res/lamp/grey.png)-23px 0px no-repeat;"
|
||||
QIcon greyIcon(":/res/lamp/grey.png");
|
||||
ui->pushButton_state_GDDC->setIcon(greyIcon);
|
||||
ui->pushButton_state_LLink->setIcon(greyIcon);
|
||||
ui->pushButton_state_3DCamra->setIcon(greyIcon);
|
||||
ui->pushButton_state_KuSatelliteComm->setIcon(greyIcon);
|
||||
ui->pushButton_state_PDT->setIcon(greyIcon);
|
||||
ui->pushButton_state_adHocNetwork->setIcon(greyIcon);
|
||||
ui->pushButton_state_rescue->setIcon(greyIcon);
|
||||
ui->pushButton_state_GDDC->setIconSize(QSize(35, 35));
|
||||
ui->pushButton_state_LLink->setIconSize(QSize(35, 35));
|
||||
ui->pushButton_state_3DCamra->setIconSize(QSize(35, 35));
|
||||
ui->pushButton_state_KuSatelliteComm->setIconSize(QSize(35, 35));
|
||||
ui->pushButton_state_PDT->setIconSize(QSize(35, 35));
|
||||
ui->pushButton_state_adHocNetwork->setIconSize(QSize(35, 35));
|
||||
ui->pushButton_state_rescue->setIconSize(QSize(35, 35));
|
||||
|
||||
ui->lineEdit_1_GDDC->setText("--");
|
||||
ui->lineEdit_2_GDDC->setText("--");
|
||||
ui->lineEdit_3_GDDC->setText("--");
|
||||
ui->lineEdit_1_Llink->setText("--");
|
||||
ui->lineEdit_2_Llink->setText("--");
|
||||
ui->lineEdit_3_Llink->setText("--");
|
||||
ui->lineEdit_1_3DCamra->setText("--");
|
||||
ui->lineEdit_2_3DCamra->setText("--");
|
||||
ui->lineEdit_3_3DCamra->setText("--");
|
||||
ui->lineEdit_1_KuSatelliteComm->setText("--");
|
||||
ui->lineEdit_2_KuSatelliteComm->setText("--");
|
||||
ui->lineEdit_3_KuSatelliteComm->setText("--");
|
||||
ui->lineEdit_1_PDT->setText("--");
|
||||
ui->lineEdit_2_PDT->setText("--");
|
||||
ui->lineEdit_3_PDT->setText("--");
|
||||
ui->lineEdit_1_adHocNetwork->setText("--");
|
||||
ui->lineEdit_2_adHocNetwork->setText("--");
|
||||
ui->lineEdit_3_adHocNetwork->setText("--");
|
||||
ui->lineEdit_1_rescue->setText("--");
|
||||
ui->lineEdit_2_rescue->setText("--");
|
||||
ui->lineEdit_3_rescue->setText("--");
|
||||
|
||||
m_timer = new QTimer();
|
||||
m_timer->setInterval(2000);
|
||||
connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
|
||||
m_timer->start();
|
||||
}
|
||||
|
||||
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";
|
||||
startNetDetn();
|
||||
}
|
||||
|
||||
// 接收线程结果
|
||||
void deviceStateDlg::receiveResult(int id, QString result) {
|
||||
// qDebug() << result;
|
||||
switch (id) {
|
||||
case 0:
|
||||
if (result == "在线") {
|
||||
ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/green.png"));
|
||||
} else {
|
||||
ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/red.png"));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (result == "在线") {
|
||||
ui->pushButton_state_LLink->setIcon(QIcon(":/res/lamp/green.png"));
|
||||
} else {
|
||||
ui->pushButton_state_LLink->setIcon(QIcon(":/res/lamp/red.png"));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (result == "在线") {
|
||||
ui->pushButton_state_adHocNetwork->setIcon(QIcon(":/res/lamp/green.png"));
|
||||
} else {
|
||||
ui->pushButton_state_adHocNetwork->setIcon(QIcon(":/res/lamp/red.png"));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (result == "在线") {
|
||||
ui->pushButton_state_KuSatelliteComm->setIcon(
|
||||
QIcon(":/res/lamp/green.png"));
|
||||
} else {
|
||||
ui->pushButton_state_KuSatelliteComm->setIcon(
|
||||
QIcon(":/res/lamp/red.png"));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 接收更改的IP
|
||||
void deviceStateDlg::setDeviceIP(int id, QString ip) {
|
||||
QString strIp;
|
||||
strIp = stringIPSelect(ip);
|
||||
switch (id) {
|
||||
case HomePageSetingWidget::L_Link:
|
||||
cmdlist[1].clear();
|
||||
cmdlist[1] << "/c" << "ping" << strIp;
|
||||
m_networkDetection[1]->DyChangeCmdList(cmdlist[1]); // 更新到网络检测线程
|
||||
break;
|
||||
case HomePageSetingWidget::Adhoc_Network:
|
||||
cmdlist[2].clear();
|
||||
cmdlist[2] << "/c" << "ping" << strIp;
|
||||
m_networkDetection[2]->DyChangeCmdList(cmdlist[2]); // 更新到网络检测线程
|
||||
break;
|
||||
case HomePageSetingWidget::Satelite_Comm:
|
||||
cmdlist[3].clear();
|
||||
cmdlist[3] << "/c" << "ping" << strIp;
|
||||
m_networkDetection[3]->DyChangeCmdList(cmdlist[3]); // 更新到网络检测线程
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 字符串网络地址截取
|
||||
QString deviceStateDlg::stringIPSelect(QString str) {
|
||||
int start, end; // str = https://192.168.1.2/22
|
||||
start = str.indexOf("//");
|
||||
if (start != 0) {
|
||||
start += 2;
|
||||
QString str2 = str.remove(0, start); // 192.168.1.2/224//115
|
||||
end = str2.indexOf("/");
|
||||
if (end != -1) {
|
||||
end += 1;
|
||||
str2.truncate(end);
|
||||
return str2;
|
||||
} else {
|
||||
return str2;
|
||||
}
|
||||
} else {
|
||||
end = str.indexOf("/");
|
||||
if (end != -1) {
|
||||
end += 1;
|
||||
str.truncate(end);
|
||||
return str;
|
||||
} else {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
// index = str.indexOf("http://")
|
||||
}
|
||||
|
||||
// 开始网络监测
|
||||
void deviceStateDlg::startNetDetn() {
|
||||
for (int i = 0; i < deviceNum; ++i) {
|
||||
m_networkDetection[i] = new networkDetection();
|
||||
m_workerThread[i] = new QThread();
|
||||
m_networkDetection[i]->moveToThread(m_workerThread[i]);
|
||||
m_workerThread[i]->start();
|
||||
connect(m_networkDetection[i], SIGNAL(resultReady(int, QString)), this,
|
||||
SLOT(receiveResult(int, 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); // 线程开始处理数据
|
||||
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); // 线程开始处理数据
|
||||
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_workerThread[i]->quit(); // 退出线程请求
|
||||
m_workerThread[i]->wait(); // 使线程正常退出。
|
||||
m_workerThread[i]->deleteLater();
|
||||
m_workerThread[i] = nullptr;
|
||||
m_networkDetection[i]->deleteLater();
|
||||
m_networkDetection[i] = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void deviceStateDlg::on_pushButton_homePage_GDDC_clicked() {
|
||||
emit switchToDevicePage(0);
|
||||
}
|
||||
|
||||
void deviceStateDlg::on_pushButton_homePage_LLink_clicked() {
|
||||
emit switchToDevicePage(1);
|
||||
}
|
||||
|
||||
void deviceStateDlg::on_pushButton_homePage_adHocNetwork_clicked() {
|
||||
emit switchToDevicePage(2);
|
||||
}
|
||||
|
||||
void deviceStateDlg::on_pushButton_homePage_rescue_clicked() {
|
||||
emit switchToDevicePage(5);
|
||||
}
|
||||
|
||||
void deviceStateDlg::on_pushButton_homePage_PDT_clicked() {
|
||||
emit switchToDevicePage(3);
|
||||
}
|
||||
|
||||
void deviceStateDlg::on_pushButton_homePage_3DCamra_clicked() {
|
||||
emit switchToDevicePage(6);
|
||||
}
|
||||
|
||||
void deviceStateDlg::on_pushButton_homePage_KuSatelliteComm_clicked() {
|
||||
emit switchToDevicePage(4);
|
||||
}
|
||||
|
||||
void deviceStateDlg::onTimeOut() {
|
||||
// QProcess *m_process = new QProcess();
|
||||
|
||||
// QStringList m_cmd;
|
||||
// // m_cmd << "/c" << "ping" << "baidu.com -n 2 -w 1000";
|
||||
// m_cmd << "/c" << "ping" << "172.10.1.183";
|
||||
// QString result;
|
||||
// m_process->start("cmd", m_cmd);
|
||||
// m_process->waitForFinished(); // 等待指令执行完毕
|
||||
// result = m_process->readAll(); // 获取指令执行结果
|
||||
// qDebug() << result;
|
||||
// if (result.contains(QString("TTL="))) // 若包含TTL=字符串则认为网络在线
|
||||
// {
|
||||
// qDebug() << "在线";
|
||||
// ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/green.png"));
|
||||
|
||||
// } else {
|
||||
// qDebug() << "离线";
|
||||
// ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/red.png"));
|
||||
// }
|
||||
// m_process->kill();
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
#include "networkDetection.h"
|
||||
|
||||
networkDetection::networkDetection(QObject *parent) : QObject(parent) {
|
||||
flagRun = true;
|
||||
CmdListChanged = false;
|
||||
m_process = new QProcess(this);
|
||||
}
|
||||
|
||||
networkDetection::~networkDetection() { delete m_process; }
|
||||
|
||||
void networkDetection::dowork(int id, QStringList cmdlist) {
|
||||
m_cmd = cmdlist;
|
||||
m_id = id;
|
||||
QString result;
|
||||
while (flagRun) {
|
||||
m_process->start("cmd", m_cmd);
|
||||
m_process->waitForFinished(); // 等待指令执行完毕
|
||||
result = m_process->readAll(); // 获取指令执行结果
|
||||
// qDebug() << result;
|
||||
if (result.contains(QString("TTL="))) // 若包含TTL=字符串则认为网络在线
|
||||
{
|
||||
// qDebug() << "在线";
|
||||
emit resultReady(m_id, "在线");
|
||||
} else {
|
||||
// qDebug() << "离线";
|
||||
emit resultReady(m_id, "离线");
|
||||
}
|
||||
// if (CmdListChanged) {
|
||||
// CmdListChanged = false;
|
||||
// return;
|
||||
// }
|
||||
// QThread::sleep(2); // 加sleep降低CPU占用率
|
||||
}
|
||||
}
|
||||
|
||||
void networkDetection::stop() { flagRun = false; }
|
||||
|
||||
void networkDetection::DyChangeCmdList(QStringList changeCmdList) {
|
||||
m_cmd.clear();
|
||||
m_cmd = changeCmdList;
|
||||
CmdListChanged = true;
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
#ifndef NETWORKDETECTION_H
|
||||
#define NETWORKDETECTION_H
|
||||
|
||||
#include <QDebug>
|
||||
#include <QObject>
|
||||
#include <QProcess>
|
||||
#include <QThread>
|
||||
// #include <synchapi.h>
|
||||
|
||||
class networkDetection : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
networkDetection(QObject *parent = nullptr);
|
||||
~networkDetection();
|
||||
|
||||
public slots:
|
||||
void dowork(int, QStringList);
|
||||
void stop();
|
||||
signals:
|
||||
void resultReady(int, QString);
|
||||
|
||||
public:
|
||||
void DyChangeCmdList(QStringList);
|
||||
|
||||
private:
|
||||
int m_id;
|
||||
QStringList m_cmd;
|
||||
|
||||
public:
|
||||
bool flagRun; // 运行标志
|
||||
bool CmdListChanged; // 指令列表改变标志
|
||||
QProcess *m_process; // 执行CMD
|
||||
};
|
||||
|
||||
#endif // NETWORKDETECTION_H
|
@ -1,69 +1,64 @@
|
||||
#ifndef CFFMPEG_DECODE_H
|
||||
#define CFFMPEG_DECODE_H
|
||||
|
||||
#include <QDebug>
|
||||
#include <QImage>
|
||||
#include <QWidget>
|
||||
#include <QPaintEvent>
|
||||
#include <QThread>
|
||||
#include <QPainter>
|
||||
#include <QDebug>
|
||||
|
||||
#include <QThread>
|
||||
#include <QWidget>
|
||||
|
||||
extern "C"{
|
||||
extern "C" {
|
||||
#include "libavcodec/avcodec.h"
|
||||
|
||||
#include <libavutil/channel_layout.h>
|
||||
#include <libavutil/common.h>
|
||||
#include <libavutil/frame.h>
|
||||
#include <libavutil/samplefmt.h>
|
||||
#include <libavutil/opt.h>
|
||||
#include <libavutil/imgutils.h>
|
||||
#include <libavutil/parseutils.h>
|
||||
#include <libavutil/mem.h>
|
||||
#include <libavutil/opt.h>
|
||||
#include <libavutil/parseutils.h>
|
||||
#include <libavutil/samplefmt.h>
|
||||
|
||||
#include <libswscale/swscale.h>
|
||||
|
||||
#include <libavformat/avformat.h>
|
||||
}
|
||||
|
||||
|
||||
//class Cffmpeg_decode: public QThread
|
||||
class Cffmpeg_decode: public QObject
|
||||
{
|
||||
// class Cffmpeg_decode: public QThread
|
||||
class Cffmpeg_decode : public QObject {
|
||||
public:
|
||||
explicit Cffmpeg_decode();
|
||||
~Cffmpeg_decode();
|
||||
Q_OBJECT
|
||||
explicit Cffmpeg_decode();
|
||||
~Cffmpeg_decode();
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
void setUrl(QString url);
|
||||
bool open_input_file();
|
||||
bool IsstopPlay= false;
|
||||
|
||||
void setUrl(QString url);
|
||||
bool open_input_file();
|
||||
bool IsstopPlay = false;
|
||||
void stop();
|
||||
public slots:
|
||||
void run();
|
||||
void run();
|
||||
|
||||
signals:
|
||||
void sendQImage(QImage);
|
||||
void sendConnectFail(int);
|
||||
void sendQImage(QImage);
|
||||
void sendConnectFail(int);
|
||||
|
||||
private:
|
||||
AVFormatContext *fmtCtx =NULL;
|
||||
const AVCodec *videoCodec =NULL;
|
||||
AVCodecContext *videoCodecCtx=NULL;
|
||||
AVPacket *pkt = NULL;
|
||||
AVFrame *yuvFrame = NULL;
|
||||
AVFrame *rgbFrame = NULL;
|
||||
|
||||
struct SwsContext *img_ctx=NULL;
|
||||
|
||||
unsigned char *out_buffer=nullptr;
|
||||
AVFormatContext *fmtCtx = NULL;
|
||||
const AVCodec *videoCodec = NULL;
|
||||
AVCodecContext *videoCodecCtx = NULL;
|
||||
AVPacket *pkt = NULL;
|
||||
AVFrame *yuvFrame = NULL;
|
||||
AVFrame *rgbFrame = NULL;
|
||||
|
||||
int videoStreamIndex =-1;
|
||||
int numBytes = -1;
|
||||
struct SwsContext *img_ctx = NULL;
|
||||
|
||||
unsigned char *out_buffer = nullptr;
|
||||
|
||||
int videoStreamIndex = -1;
|
||||
int numBytes = -1;
|
||||
|
||||
QString _url;
|
||||
QString _url;
|
||||
};
|
||||
|
||||
#endif // CFFMPEG_DECODE_H
|
||||
|
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 863 B |
After Width: | Height: | Size: 872 B |
After Width: | Height: | Size: 817 B |
After Width: | Height: | Size: 837 B |
After Width: | Height: | Size: 838 B |
After Width: | Height: | Size: 863 B |
After Width: | Height: | Size: 854 B |
After Width: | Height: | Size: 760 B |
After Width: | Height: | Size: 863 B |