diff --git a/PayloadAPP.pro b/PayloadAPP.pro index 4dcf7b0..eaad135 100644 --- a/PayloadAPP.pro +++ b/PayloadAPP.pro @@ -12,11 +12,12 @@ QMAKE_PROJECT_DEPTH = 0 SOURCES += \ + Src/GDDC/gddcSet.cpp \ cffmpeg_decode.cpp \ customwebenginepage.cpp \ cwebengineview.cpp \ ffmpegvideodlg.cpp \ - gddcdlg.cpp \ + Src/GDDC/gddcdlg.cpp \ global.cpp \ homepagedlg.cpp \ main.cpp \ @@ -25,19 +26,22 @@ SOURCES += \ HEADERS += \ DCFrameCkCmd.h \ + Src/GDDC/gddcSet.h \ + Src/GDDC/structDefineMyslef.h \ cffmpeg_decode.h \ customwebenginepage.h \ cwebengineview.h \ ffmpegvideodlg.h \ - gddcdlg.h \ + Src/GDDC/gddcdlg.h \ global.h \ homepagedlg.h \ mainwindow.h \ qweb.h FORMS += \ + Src/GDDC/gddcSet.ui \ ffmpegvideodlg.ui \ - gddcdlg.ui \ + Src/GDDC/gddcdlg.ui \ homepagedlg.ui \ mainwindow.ui \ qweb.ui diff --git a/Src/GDDC/gddcSet.cpp b/Src/GDDC/gddcSet.cpp new file mode 100644 index 0000000..9761b22 --- /dev/null +++ b/Src/GDDC/gddcSet.cpp @@ -0,0 +1,206 @@ +#include "gddcSet.h" +#include "ui_gddcSet.h" +#include + +//#pragma execution_character_set(“utf-8”) + + +GDDCSet::GDDCSet(QWidget *parent) + : QWidget(parent) + , ui(new Ui::GDDCSet) +{ + ui->setupUi(this); + initWindow(); + initParam(); + initUDPSocket(); + +} + +GDDCSet::~GDDCSet() +{ + delete ui; +} +void GDDCSet::initWindow() +{ + this->setWindowTitle("通信设置"); +} +void GDDCSet::initUDPSocket() +{ + +} +void GDDCSet::initParam() +{ + //m_myPairNetwork("",0,"",0); + // QSettings setting("./sentence.ini",QSettings::IniFormat); + // setting.setIniCodec(QTextCodec::codecForName("UTF-8")); //重点 + + ui->comboBox_streamType->addItem("RTSP"); + ui->comboBox_streamType->addItem("UDP Raw"); + ui->comboBox_streamType->addItem("UDP 422"); + ui->comboBox_streamType->addItem("UDP TS"); + ui->comboBox_playURL1->addItem("rtsp://192.168.1.160:554/live/track0"); + ui->comboBox_playURL1->setEditable(true); + + /*"rtsp://192.168.1.160:554/live/track0"*/ + /*"rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"*/ + + ui->lineEdit_playport1->setText("10008"); + ui->lineEdit_playport2->setText("0"); + ui->radioButton_NetCtrlUDP->setChecked(true); + ui->radioButton_NetCtrlTCP->setChecked(false); + + //读取本机网络设备 + QString name = QDir::currentPath()+"/../../config.ini"; + m_configIniPath = name.toLatin1(); + char* strSysIniName = m_configIniPath.data();//系统配置文件路径 + char inBuf[100]; + + + ::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", "-1", inBuf, 100, strSysIniName); + m_playURL2 = QString::fromUtf8(inBuf); + ui->lineEdit_playURL2->setText(m_playURL2); + ::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放Port", "-1", inBuf, 100, strSysIniName); + m_playPort2 = atoi(inBuf);; + ui->lineEdit_playport2->setText(QString::number(m_playPort2)); + ::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "播放Port", "-1", inBuf, 100, strSysIniName); + m_playPort1 = atoi(inBuf);; + ui->lineEdit_playport1->setText(QString::number(m_playPort1)); + + + ::GetPrivateProfileStringA("光电吊舱-网络控制", "远端IP", "-1", inBuf, 100, strSysIniName); + m_myPairNetwork.setRemoteIP(QString::fromUtf8(inBuf)); + ::GetPrivateProfileStringA("光电吊舱-网络控制", "远端Port", "-1", inBuf, 100, strSysIniName); + m_myPairNetwork.setRemotePort(atoi(inBuf)); + ::GetPrivateProfileStringA("光电吊舱-网络控制", "本地IP", "-1", inBuf, 100, strSysIniName); + m_myPairNetwork.setLocalIP(QString::fromUtf8(inBuf)); + ::GetPrivateProfileStringA("光电吊舱-网络控制", "本地Port", "-1", inBuf, 100, strSysIniName); + m_myPairNetwork.setLocalPort(atoi(inBuf)); + ui->lineEdit_NetCtrlRemoteIp->setText(m_myPairNetwork.getRemoteIP()); + ui->lineEdit_NetCtrlRemotePort->setText(QString::number(m_myPairNetwork.getRemotePort())); + ui->lineEdit_NetCtrlLocalIp->setText(m_myPairNetwork.getLocalIP()); + ui->lineEdit_NetCtrlLocalPort->setText(QString::number(m_myPairNetwork.getLocalPort())); + + +} +//视频连接-显示窗口1-连接 +void GDDCSet::on_pushButton_ConnectURL1_clicked() +{ + saveDataToLocalIni(); + if(ui->pushButton_ConnectURL1->text()=="连接") + { + emit SignalStartConnect(1); + ui->pushButton_ConnectURL1->setText("断开"); + } + else + { + emit SignalStopConnect(1); + ui->pushButton_ConnectURL1->setText("连接"); + } +} + +//视频连接-显示窗口2-连接 +void GDDCSet::on_pushButton_ConnectURL2_clicked() +{ + saveDataToLocalIni(); + if(ui->pushButton_ConnectURL2->text()=="连接") + { + emit SignalStartConnect(2); + ui->pushButton_ConnectURL2->setText("断开"); + } + else + { + emit SignalStopConnect(2); + ui->pushButton_ConnectURL2->setText("连接"); + } +} + +//串口控制-刷新 +void GDDCSet::on_pushButton_serialControlRefalsh_clicked() +{ + saveDataToLocalIni(); + +} + +//串口控制-连接 +void GDDCSet::on_pushButton_serialControlConnect_clicked() +{ + saveDataToLocalIni(); + if(ui->pushButton_serialControlConnect->text()=="连接") + { + emit SignalStartConnect(3); + ui->pushButton_serialControlConnect->setText("断开"); + } + else + { + emit SignalStopConnect(3); + ui->pushButton_serialControlConnect->setText("连接"); + } +} + +//网络控制-连接 +void GDDCSet::on_pushButton_NetCtrlConnect_clicked() +{ + saveDataToLocalIni(); + if(ui->pushButton_NetCtrlConnect->text()=="连接") + { + if(ui->radioButton_NetCtrlUDP->isChecked()) + { + emit SignalStartConnect(4); + } + else + { + emit SignalStartConnect(5); + } + + ui->pushButton_NetCtrlConnect->setText("断开"); + } + else + { + emit SignalStopConnect(4); + emit SignalStopConnect(5); + ui->pushButton_NetCtrlConnect->setText("连接"); + } +} + +//保存数据至本地ini文件 +void GDDCSet::saveDataToLocalIni() +{ + char* strSysIniName = m_configIniPath.data();//系统配置文件路径 + char* inBuf; + QByteArray ba; + + + m_myPairNetwork.setLocalIP(ui->lineEdit_NetCtrlLocalIp->text()); + ba = m_myPairNetwork.getLocalIP().toLocal8Bit(); + inBuf = ba.data();//toLatin1,toUtf8 + ::WritePrivateProfileStringA("光电吊舱-网络控制", "本地IP", inBuf, strSysIniName); + + m_myPairNetwork.setLocalPort(ui->lineEdit_NetCtrlLocalPort->text().toInt()); + _itoa_s(m_myPairNetwork.getLocalPort(),inBuf,10,10);//要转换的数字,存放转换结果的字符串,存放结果的字符数组长度,转化的进制数,2表示2进制,10表示10进制 + ::WritePrivateProfileStringA("光电吊舱-网络控制", "本地Port", inBuf, strSysIniName); + + m_myPairNetwork.setRemoteIP(ui->lineEdit_NetCtrlRemoteIp->text()); + ba = m_myPairNetwork.getRemoteIP().toLocal8Bit(); + inBuf = ba.data(); + ::WritePrivateProfileStringA("光电吊舱-网络控制", "远端IP", inBuf, strSysIniName); + + m_myPairNetwork.setRemotePort(ui->lineEdit_NetCtrlRemotePort->text().toInt()); + _itoa_s(m_myPairNetwork.getRemotePort(),inBuf,10,10); + ::WritePrivateProfileStringA("光电吊舱-网络控制", "远端Port", inBuf, strSysIniName); + + m_playURL2 = ui->lineEdit_playURL2->text(); + ba = m_playURL2.toLocal8Bit(); + inBuf = ba.data(); + ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", inBuf, strSysIniName); + + m_playPort2 = ui->lineEdit_playport2->text().toInt(); + _itoa_s(m_playPort2,inBuf,10,10); + ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放Port", inBuf, strSysIniName); + + m_playURL1 = ui->comboBox_playURL1->currentText(); + + m_playPort1 = ui->lineEdit_playport1->text().toInt(); + _itoa_s(m_playPort1,inBuf,10,10); + ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "播放Port", inBuf, strSysIniName); + +} diff --git a/Src/GDDC/gddcSet.h b/Src/GDDC/gddcSet.h new file mode 100644 index 0000000..8d3f020 --- /dev/null +++ b/Src/GDDC/gddcSet.h @@ -0,0 +1,48 @@ +#ifndef GDDCSET_H +#define GDDCSET_H + +#include +#include +#include +#include +#include "Src/GDDC/structDefineMyslef.h" + +namespace Ui { +class GDDCSet; +} + +class GDDCSet : public QWidget +{ + Q_OBJECT + +public: + explicit GDDCSet(QWidget *parent = nullptr); + ~GDDCSet(); + +private: + Ui::GDDCSet *ui; + +public: + void initUDPSocket(); //初始化UDPSocket + void initWindow(); //初始化窗口 + void initParam(); //初始化参数 + void saveDataToLocalIni(); //保存数据至本地ini文件 + QByteArray m_configIniPath; //ini配置文件路径 + + QString m_playURL1; //光电吊舱-视频连接-显示窗口1-URL地址 + int m_playPort1; //光电吊舱-视频连接-显示窗口-1端口 + QString m_playURL2; //光电吊舱-视频连接-显示窗口2-URL地址 + int m_playPort2; //光电吊舱-视频连接-显示窗口-2端口 + MyPairNetwork m_myPairNetwork;//网络通信结构体 +signals: + void SignalStartConnect(int a); //信号开始连接 + void SignalStopConnect(int a); //信号停止连接 +private slots: + void on_pushButton_ConnectURL1_clicked(); + void on_pushButton_ConnectURL2_clicked(); + void on_pushButton_serialControlRefalsh_clicked(); + void on_pushButton_serialControlConnect_clicked(); + void on_pushButton_NetCtrlConnect_clicked(); +}; + +#endif // GDDCSET_H diff --git a/Src/GDDC/gddcSet.ui b/Src/GDDC/gddcSet.ui new file mode 100644 index 0000000..ada1d90 --- /dev/null +++ b/Src/GDDC/gddcSet.ui @@ -0,0 +1,440 @@ + + + GDDCSet + + + + 0 + 0 + 761 + 506 + + + + Form + + + + + + + + 30 + 10 + 701 + 211 + + + + 视频连接 + + + Qt::AlignCenter + + + + + 10 + 30 + 53 + 21 + + + + 流类型: + + + + + + 90 + 30 + 72 + 23 + + + + + + + 10 + 70 + 61 + 16 + + + + 显示窗口1: + + + + + + 20 + 100 + 61 + 21 + + + + 播放URL: + + + + + + 90 + 100 + 301 + 23 + + + + + + + 440 + 100 + 53 + 21 + + + + 端口: + + + + + + 500 + 100 + 81 + 23 + + + + + + + 600 + 100 + 80 + 23 + + + + 连接 + + + + + + 10 + 140 + 61 + 21 + + + + 显示窗口2: + + + + + + 20 + 170 + 61 + 21 + + + + 播放URL: + + + + + + 90 + 170 + 301 + 23 + + + + + + + 440 + 170 + 53 + 21 + + + + 端口: + + + + + + 500 + 170 + 81 + 23 + + + + + + + 600 + 170 + 80 + 23 + + + + 连接 + + + + + + + 30 + 230 + 701 + 80 + + + + 串口控制 + + + Qt::AlignCenter + + + + + 600 + 40 + 80 + 23 + + + + 连接 + + + + + + 310 + 40 + 72 + 23 + + + + + + + 250 + 40 + 53 + 21 + + + + 波特率: + + + + + + 90 + 40 + 72 + 23 + + + + + + + 500 + 40 + 80 + 23 + + + + 刷新 + + + + + + 30 + 40 + 53 + 21 + + + + 串口号: + + + + + + + 30 + 330 + 701 + 141 + + + + 网络控制 + + + Qt::AlignCenter + + + + + 600 + 80 + 80 + 31 + + + + 连接 + + + + + + 10 + 28 + 97 + 21 + + + + UDP + + + + + + 500 + 98 + 81 + 23 + + + + + + + 420 + 68 + 71 + 21 + + + + 设备端口: + + + + + + 500 + 68 + 81 + 23 + + + + + + + 30 + 68 + 53 + 15 + + + + 远端IP: + + + + + + 90 + 68 + 301 + 23 + + + + + + + 90 + 98 + 301 + 23 + + + + + + + 30 + 98 + 53 + 15 + + + + 本机IP: + + + + + + 90 + 28 + 97 + 21 + + + + TCP + + + + + + 420 + 103 + 71 + 20 + + + + 本地端口: + + + + + + + diff --git a/gddcdlg.cpp b/Src/GDDC/gddcdlg.cpp similarity index 86% rename from gddcdlg.cpp rename to Src/GDDC/gddcdlg.cpp index ec99655..2a80bdd 100644 --- a/gddcdlg.cpp +++ b/Src/GDDC/gddcdlg.cpp @@ -20,7 +20,7 @@ GDDCdlg::GDDCdlg(QWidget *parent) initWindow(); initParam(); - initUDPSocket(); + initSignalSlot(); /*启动定时器*/ GDDCControlTimer = new QTimer(); @@ -35,9 +35,14 @@ GDDCdlg::~GDDCdlg() { //关闭定时器 GDDCControlTimer->stop(); - //关闭套接字,并丢弃写缓冲区中的所有待处理数据。 - udpSocket->abort(); - delete udpSocket; + + //停止所有通信 + stopConnectURL1(); + stopConnectURL2(); + stopConnectSerialCtrl(); + stopConnectUDPCtrl(); + stopConnectTCPCtrl(); + delete ui; } @@ -57,6 +62,7 @@ void GDDCdlg::initWindow() setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint); hide(); + m_DlgGDDCSet = new GDDCSet(); } //初始化参数 @@ -151,50 +157,71 @@ void GDDCdlg::initParam() ui->lineEdit_6_2->setText("540"); detectionAreaSetting = false; - ui->lineUrl->setText("rtsp://192.168.1.160:554/live/track0"); - /*"rtsp://192.168.1.160:554/live/track0"*/ - /*"rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"*/ - + connectFlag.resize(10,false); + ui->pushButShowCmdArea->setIcon(QIcon(":/res/down.png")); +} +//初始化信号与槽 +void GDDCdlg::initSignalSlot() +{ + connect(m_DlgGDDCSet,SIGNAL(SignalStartConnect(int)),this,SLOT(startConnect(int))); + connect(m_DlgGDDCSet,SIGNAL(SignalStopConnect(int)),this,SLOT(stopConnect(int))); } -//初始化udp通信 -void GDDCdlg::initUDPSocket() +//槽函数开始连接 +void GDDCdlg::startConnect(int type) { - - //读取本机网络设备 - char inBuf[100]; - char* strSysIniName; //系统配置文件路径 - - QString str1 = QDir::currentPath()+"/../../config.ini"; - QByteArray ba = str1.toLatin1(); - strSysIniName = ba.data(); - - ::GetPrivateProfileStringA("光电吊舱", "远端ip", "-1", inBuf, 20, strSysIniName); - RemoteIP = QString::fromUtf8(inBuf); - ::GetPrivateProfileStringA("光电吊舱", "远端端口", "-1", inBuf, 20, strSysIniName); - RemotePort = atoi(inBuf); - ::GetPrivateProfileStringA("光电吊舱", "本地ip", "-1", inBuf, 20, strSysIniName); - localIP = QString::fromUtf8(inBuf); - ::GetPrivateProfileStringA("光电吊舱", "本地端口", "-1", inBuf, 20, strSysIniName); - localPort = atoi(inBuf); - - //创建udp socket对象 - udpSocket = new QUdpSocket(this); - //RemoteIP = "192.168.1.160"; //目标IP - RemoteAddr.setAddress(RemoteIP); - //RemotePort = 10000;//目标port - - - /*接收*/ - //获取本机ip - QList ipAddressesList = QNetworkInterface::allAddresses(); - udpSocket->bind(localPort); - + switch(type) + { + case 1://播放视频1 + stopConnectURL2(); + startConnectURL1(); + break; + case 2://播放视频2 + stopConnectURL1(); + startConnectURL2(); + break; + case 3://串口控制 + startConnectSerialCtrl(); + break; + case 4://UDP控制 + stopConnectTCPCtrl(); + startConnectUDPCtrl(); + break; + case 5://TCP控制 + stopConnectUDPCtrl(); + startConnectTCPCtrl(); + break; + default: + break; + } } - +//槽函数停止连接 +void GDDCdlg::stopConnect(int type) +{ + switch(type) + { + case 1: + stopConnectURL1(); + break; + case 2: + stopConnectURL2(); + break; + case 3: + stopConnectSerialCtrl(); + break; + case 4: + stopConnectUDPCtrl(); + break; + case 5: + stopConnectTCPCtrl(); + break; + default : + break; + } +} // bool GDDCdlg::eventFilter(QObject *watched, QEvent *event) // { // qDebug() << this->geometry().x(); @@ -214,13 +241,6 @@ void GDDCdlg::mousePressEvent(QMouseEvent *event) { //如果鼠标左键按下 if (event->type() == QEvent::MouseButtonPress) { - //获取鼠标在事件接收者中的位置pos - //qDebug() << event->pos(); - ///获取控件X Y坐标 - //textX = ui->labelImage->x(); - //textY = ui->labelImage->y(); - - //AI检测区域设置 if(detectionAreaSetting==true) { @@ -289,21 +309,37 @@ void GDDCdlg::mouseMoveEvent(QMouseEvent *event) } } +//区域重绘 void GDDCdlg::resizeEvent(QResizeEvent *event) { + resizeUI(); //重新设置布局 +} +//重新设置布局 +void GDDCdlg::resizeUI() +{ + /* -------------->x + * | (0,0) + * | + * | + * | + * | + * ↓ y + */ double GDDCPageHeight = (double)(this->height()); double GDDCPageWidth = (double)(this->width()); //qDebug()<<"宽度,高度:"<tabWidget->isVisible()){cmdAreaHeight = 250;} + else{cmdAreaHeight = 0;} + ui->tabWidget->setGeometry(0,GDDCPageHeight-cmdAreaHeight,(int)cmdAreaWidth,(int)cmdAreaHeight); - //qDebug()<<"Cmd宽度,高度:"<VideoAreaWidth*9) { @@ -319,14 +355,32 @@ void GDDCdlg::resizeEvent(QResizeEvent *event) ui->WgtffmpegVideo->setGeometry(0.5*(GDDCPageWidth-setVideoAreaWidth),0,(int)setVideoAreaWidth,(int)setVideoAreaHeight); } + /**************设置按钮****************/ + ui->pushButtonSet->setGeometry(GDDCPageWidth-40,10,40,40); + + /**********控制指令区显示隐藏按钮********/ + ui->pushButShowCmdArea->setGeometry(GDDCPageWidth*0.5,GDDCPageHeight-cmdAreaHeight-20,20,20); + ui->pushButShowCmdArea->raise(); + } + //定时器处理 void GDDCdlg::GDDCControlTimeOut() { if(sendTimes>0) { sendTimes-=1; - udpSocket->writeDatagram(m_DCcmdBuffer,RemoteAddr,RemotePort); + + //UDP控制 + if(connectFlag[3]) + { + udpSocket->writeDatagram(m_DCcmdBuffer,m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),m_DlgGDDCSet->m_myPairNetwork.getRemotePort()); + } + //TCP控制 + + //串口控制 + + if(sendTimes==0) { clearTJDCCmdBuffer(); @@ -335,7 +389,18 @@ void GDDCdlg::GDDCControlTimeOut() else { UpdateDataTJDC(); - udpSocket->writeDatagram(m_DCcmdBuffer,RemoteAddr,RemotePort); + + //UDP控制 + if(connectFlag[3]) + { + udpSocket->writeDatagram(m_DCcmdBuffer,m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),m_DlgGDDCSet->m_myPairNetwork.getRemotePort()); + } + + //TCP控制 + + //串口控制 + + } } @@ -1523,33 +1588,139 @@ void GDDCdlg::on_pushButton_6_8_clicked() } } -//播放视频 -void GDDCdlg::on_Video_Btnplay_clicked() +//播放视频1 +void GDDCdlg::startConnectURL1() { - - - if(!Is_openVideo) + if(!connectFlag[0]) { - Is_openVideo = true ; + connectFlag[0] = true ; //ui->WgtffmpegVideo->Isplay(Is_openVideo); ui->WgtffmpegVideo->play(); - ui->WgtffmpegVideo->setUrl(ui->lineUrl->text()); + ui->WgtffmpegVideo->setUrl(m_DlgGDDCSet->m_playURL1); ui->WgtffmpegVideo->m_PlayStatus =Is_openVideo; + } +} +//关闭视频1 +void GDDCdlg::stopConnectURL1() +{ + if(connectFlag[0]) + { + connectFlag[0] = false ; + ui->WgtffmpegVideo->m_PlayStatus = Is_openVideo; + ui->WgtffmpegVideo->stop(); + } +} +//播放视频2 +void GDDCdlg::startConnectURL2() +{ + if(!connectFlag[1]) + { + connectFlag[1] = true ; } +} + +//关闭视频2 +void GDDCdlg::stopConnectURL2() +{ + if(connectFlag[1]) + { + connectFlag[1] = false ; + } +} +void GDDCdlg::startConnectSerialCtrl() +{ + if(!connectFlag[2]) + { + connectFlag[2] = true ; + } +} +void GDDCdlg::stopConnectSerialCtrl() +{ + if(connectFlag[2]) + { + connectFlag[2] = false ; + } +} +//开始UDP控制通信 +void GDDCdlg::startConnectUDPCtrl() +{ + if(!connectFlag[3]) + { + //创建udp socket对象 + udpSocket = new QUdpSocket(this); + /*接收*/ + //QList ipAddressesList = QNetworkInterface::allAddresses();//获取本机ip + udpSocket->bind(m_DlgGDDCSet->m_myPairNetwork.getLocalPort()); + connect(udpSocket,SIGNAL(readyRead()),this,SLOT(UDPMessageReceive())); + connectFlag[3] = true; + } +} +//停止UDP控制通信 +void GDDCdlg::stopConnectUDPCtrl() +{ + if(connectFlag[3]) + { + udpSocket->abort();//关闭套接字,并丢缓冲区中的所有待处理数据 + connectFlag[3] = false; + } +} +//开始TCP控制通信 +void GDDCdlg::startConnectTCPCtrl() +{ + if(!connectFlag[4]) + { + connectFlag[4] = true; + } +} +//停止TCP控制通信 +void GDDCdlg::stopConnectTCPCtrl() +{ + if(connectFlag[4]) + { + connectFlag[4] = false; + } +} + +//设置页面弹出 +void GDDCdlg::on_pushButtonSet_clicked() +{ + m_DlgGDDCSet->show(); +} + +//udp数据接收 +void GDDCdlg::UDPMessageReceive() +{ + QByteArray data; + data.resize(udpSocket->pendingDatagramSize()); + QHostAddress addr; + quint16 port; + udpSocket->readDatagram(data.data(),data.size(),&addr,&port); + //const char* chardata= data.constData(); + qDebug()<WgtffmpegVideo->m_PlayStatus =Is_openVideo; - ui->WgtffmpegVideo->stop(); + ui->tabWidget->setVisible(false); + isCmdAreaShow = false; + resizeUI(); + ui->pushButShowCmdArea->setIcon(QIcon(":/res/up.png")); + //ui->pushButton->setGeometry(this->width()/2,this->height()-50,50,50); } + else + { + ui->tabWidget->setVisible(true); + isCmdAreaShow = true; + resizeUI(); + ui->pushButShowCmdArea->setIcon(QIcon(":/res/down.png")); + //ui->pushButton->setGeometry(this->width()/2,ui->tabWidget->height(),50,50); + } } diff --git a/gddcdlg.h b/Src/GDDC/gddcdlg.h similarity index 87% rename from gddcdlg.h rename to Src/GDDC/gddcdlg.h index e58f9b8..2661f17 100644 --- a/gddcdlg.h +++ b/Src/GDDC/gddcdlg.h @@ -13,6 +13,10 @@ #include #include "cffmpeg_decode.h" + +#include "Src/GDDC/gddcSet.h" +#include + #define cmdLength 44 namespace Ui { class GDDCdlg; @@ -31,9 +35,11 @@ private: protected: void resizeEvent(QResizeEvent *event); -public slots: - void GDDCControlTimeOut(); - +public: + void initWindow(); //初始化窗口 + void initParam(); //初始化参数 + void initSignalSlot(); //初始化信号与槽 + void resizeUI(); //重新设置布局 public: QByteArray m_DCcmdBuffer;//存储吊舱控制指令 std::byte TJDCCmdBuffer[10]; @@ -43,21 +49,29 @@ public: void sendCurDate(std::byte *,int);//发送当前数据:内容,发送次数 //socket对象 QUdpSocket *udpSocket; - QString RemoteIP; //目标IP - QHostAddress RemoteAddr; //目标地址 - quint16 RemotePort; //目标port + // QString RemoteIP; //目标IP + // QHostAddress RemoteAddr; //目标地址 + // quint16 RemotePort; //目标port QString localIP; //本地IP QHostAddress localAddr; //本地地址 quint16 localPort; //本地port - void initUDPSocket(); //初始化UDPSocket - void initWindow(); //初始化窗口 - void initParam(); //初始化参数 + GDDCSet *m_DlgGDDCSet; //光电吊舱设置对话框 - //bool eventFilter(QObject *,QEvent *); //事件过滤器 + //bool eventFilter(QObject *,QEvent *); //事件过滤器 void mousePressEvent(QMouseEvent *event); //事件过滤器 void mouseMoveEvent(QMouseEvent *event); //事件过滤器 + void startConnectURL1(); + void stopConnectURL1(); + void startConnectURL2(); + void stopConnectURL2(); + void startConnectSerialCtrl(); + void stopConnectSerialCtrl(); + void startConnectUDPCtrl(); + void stopConnectUDPCtrl(); + void startConnectTCPCtrl(); + void stopConnectTCPCtrl(); public: bool pointSelectionTracking = false; //选点跟踪 bool param_pushButton_3_9; @@ -65,7 +79,14 @@ public: bool paramIsFrame; //是否是框架/陀螺校准 bool detectionAreaSetting;//检测区域设置 - bool Is_openVideo =false;//视频是否已打开,默认未打开 + bool Is_openVideo = false;//视频是否已打开,默认未打开 + std::vector connectFlag; // 0,视频流1;1,视频流2;2,串口通信,3网口通信 + bool isCmdAreaShow = true;//控制区域是否显示 +public slots: + void GDDCControlTimeOut(); + void startConnect(int); //开始连接 + void stopConnect(int); //停止连接 + void UDPMessageReceive(); //udp数据接收 private slots: /*系统控制*/ void on_pushButton_11_pressed(); @@ -243,8 +264,8 @@ private slots: void on_pushButton_6_7_released(); void on_pushButton_6_8_clicked(); - void on_Video_Btnplay_clicked(); - void on_Video_BtnClosed_clicked(); + void on_pushButtonSet_clicked(); + void on_pushButShowCmdArea_clicked(); }; #endif // GDDCDLG_H diff --git a/gddcdlg.ui b/Src/GDDC/gddcdlg.ui similarity index 95% rename from gddcdlg.ui rename to Src/GDDC/gddcdlg.ui index f837902..789f0b1 100644 --- a/gddcdlg.ui +++ b/Src/GDDC/gddcdlg.ui @@ -9,8 +9,8 @@ 0 0 - 1165 - 759 + 1399 + 683 @@ -46,15 +46,106 @@ + + + true + + + + 35 + 53 + 381 + 187 + + + + + 0 + 0 + + + + + 192 + 108 + + + + + 1920 + 1080 + + + + + 200 + 100 + + + + Qt::NoFocus + + + Qt::NoContextMenu + + + false + + + Qt::LeftToRight + + + false + + + background-color: rgb(85, 85, 127); + + + + + + 530 + 300 + 80 + 20 + + + + + + + + + + 1000 + 10 + 81 + 36 + + + + + + + + :/res/settings.png:/res/settings.png + + + + 30 + 30 + + + true - 7 - 496 - 1131 + 10 + 350 + 1201 250 @@ -367,55 +458,6 @@ - - - - 680 - 80 - 81 - 20 - - - - 视频流地址 - - - - - - 680 - 110 - 421 - 27 - - - - - - - 700 - 150 - 92 - 28 - - - - 打开视频 - - - - - - 960 - 160 - 92 - 28 - - - - 关闭视频 - - @@ -994,7 +1036,7 @@ 透雾模式设置 - Qt::AlignCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -1730,8 +1772,8 @@ font: 12pt "Microsoft YaHei UI"; 10 40 - 53 - 15 + 41 + 16 @@ -1743,8 +1785,8 @@ font: 12pt "Microsoft YaHei UI"; 10 80 - 53 - 15 + 41 + 16 @@ -1875,31 +1917,6 @@ font: 12pt "Microsoft YaHei UI"; - - - false - - - - 780 - 120 - 100 - 30 - - - - - 0 - 0 - - - - - - - - - @@ -2008,7 +2025,7 @@ font: 12pt "Microsoft YaHei UI"; 380 10 - 231 + 241 201 @@ -2018,7 +2035,7 @@ font: 12pt "Microsoft YaHei UI"; - 70 + 80 150 100 30 @@ -2034,7 +2051,7 @@ font: 12pt "Microsoft YaHei UI"; - 130 + 140 50 91 21 @@ -2044,7 +2061,7 @@ font: 12pt "Microsoft YaHei UI"; - 130 + 140 90 91 21 @@ -2081,7 +2098,7 @@ font: 12pt "Microsoft YaHei UI"; - 630 + 640 10 221 201 @@ -2185,7 +2202,7 @@ font: 12pt "Microsoft YaHei UI"; AI跟踪 - Qt::AlignCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -2218,7 +2235,7 @@ font: 12pt "Microsoft YaHei UI"; 12 50 - 101 + 81 21 @@ -2231,7 +2248,7 @@ font: 12pt "Microsoft YaHei UI"; 10 100 - 91 + 81 21 @@ -2252,61 +2269,6 @@ font: 12pt "Microsoft YaHei UI"; - - - true - - - - 50 - 37 - 601 - 331 - - - - - 0 - 0 - - - - - 192 - 108 - - - - - 1920 - 1080 - - - - - 200 - 100 - - - - Qt::NoFocus - - - Qt::NoContextMenu - - - false - - - Qt::LeftToRight - - - false - - - background-color: rgb(85, 85, 127); - - @@ -2316,6 +2278,8 @@ font: 12pt "Microsoft YaHei UI"; 1 - + + + diff --git a/Src/GDDC/structDefineMyslef.h b/Src/GDDC/structDefineMyslef.h new file mode 100644 index 0000000..ae4a7d9 --- /dev/null +++ b/Src/GDDC/structDefineMyslef.h @@ -0,0 +1,49 @@ +#ifndef STRUCTDEFINEMYSLEF_H +#define STRUCTDEFINEMYSLEF_H + +#endif // STRUCTDEFINEMYSLEF_H +#include +#include + +struct MyPairNetwork +{ +public: + MyPairNetwork(){}; + MyPairNetwork(QString a,int b,QString c,int d){ + localIP = a; + localPort = b; + remoteIP = c; + remotePort = d; + localAddr.setAddress(localIP); + remoteAddr.setAddress(remoteIP); + } +private: + QString localIP; + quint16 localPort; + QHostAddress localAddr; + QString remoteIP; + quint16 remotePort; + QHostAddress remoteAddr; + +public: + void setLocalIP(QString ip){ + localIP = ip; + localAddr.setAddress(localIP); + } + void setLocalPort(quint16 port){ + localPort = port; + } + void setRemoteIP(QString ip){ + remoteIP = ip; + remoteAddr.setAddress(remoteIP); + } + void setRemotePort(quint16 port){ + remotePort = port; + } + QString getLocalIP(){return localIP;} + quint16 getLocalPort(){return localPort;} + QHostAddress getLocalAddr(){return localAddr;} + QString getRemoteIP(){return remoteIP;} + quint16 getRemotePort(){return remotePort;} + QHostAddress getRemoteAddr(){return remoteAddr;} +}; diff --git a/config.ini b/config.ini index a8047c8..2a3d6a0 100644 --- a/config.ini +++ b/config.ini @@ -1,6 +1,19 @@ -[光电吊舱] -远端ip=192.168.1.160 -远端端口=10000 -本地ip=192.168.1.121 -本地端口=10000 - +[-] +ip=192.168.1.110 +ض˿=10000 +Զp=192.168.1.111 +Զ˶˿=10000 +[GDDC-NetControl] +localIP=123 +localPort=-1 +[光电吊舱-网络控制] +本地IP=172.10.1.183 +本地Port=10001 +本地端口=10008 +远端ip=172.10.1.183 +远端Port=10002 +[光电吊舱-视频连接-显示窗口2] +播放URL=rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid +播放Port=10003 +[光电吊舱-视频连接-显示窗口1] +播放Port=123 diff --git a/homepagedlg.ui b/homepagedlg.ui index 5856674..83085c4 100644 --- a/homepagedlg.ui +++ b/homepagedlg.ui @@ -6,8 +6,8 @@ 0 0 - 1510 - 989 + 1441 + 434 diff --git a/homepagedlg.ui.autosave b/homepagedlg.ui.autosave deleted file mode 100644 index 5856674..0000000 --- a/homepagedlg.ui.autosave +++ /dev/null @@ -1,74 +0,0 @@ - - - HomePageDlg - - - - 0 - 0 - 1510 - 989 - - - - Form - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 200 - 20 - - - - - - - - background-image: url(:/res/981csP.png); -background-repeat: no-repeat; -background-position: center; -background-attachment: fixed; -background-size: cover; - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 200 - 20 - - - - - - - - - - - - - - diff --git a/mainwindow.cpp b/mainwindow.cpp index ee88ede..5862967 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -25,31 +25,11 @@ MainWindow::MainWindow(QWidget *parent) process = new QProcess(this); - // connect(ui->toolbar_action1,&QAction::triggered,this,[this](){ - // qDebug("1111"); - // //m_GDDCdlg->setWindowModality(Qt::ApplicationModal); //设置模态窗口,即窗口没关闭不允许其他操作 - // m_HomePagedlg->move(200,200); - // m_HomePagedlg->show(); //显示窗口 - // m_GDDCdlg->hide(); - // }); - // connect(ui->toolbar_action2,&QAction::triggered,this,[this](){ - // qDebug("2222"); - // //m_GDDCdlg->setWindowModality(Qt::ApplicationModal); //设置模态窗口,即窗口没关闭不允许其他操作 - // m_GDDCdlg->move(200,200); - // m_GDDCdlg->show(); //显示窗口 - // m_HomePagedlg->hide(); - // }); - // QFile file(":/qss/style.qss"); - // file.open(QIODevice::ReadOnly); - // QString stylesheet = QLatin1String(file.readAll()); - // file.colse(); - // qApp->setStyleSheet(stylesheet); - //apply the qss QFile file(":/res/Qss/qss.qss"); if(file.open(QFile::ReadOnly)) { - file.open(QFile::ReadOnly); + //file.open(QFile::ReadOnly); QString style = QLatin1String(file.readAll()); qApp->setStyleSheet(style); diff --git a/mainwindow.h b/mainwindow.h index 7ad68c7..77fca7f 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -2,7 +2,7 @@ #define MAINWINDOW_H #include -#include "gddcdlg.h" +#include "Src/GDDC/gddcdlg.h" #include "homepagedlg.h" #include diff --git a/mainwindow.qrc b/mainwindow.qrc index d0198f5..3deaaf0 100644 --- a/mainwindow.qrc +++ b/mainwindow.qrc @@ -12,5 +12,8 @@ res/WIFI.png res/wifi4G.png res/981csP.png + res/settings.png + res/down.png + res/up.png diff --git a/mainwindow.ui b/mainwindow.ui index e042187..355a0af 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 1286 - 761 + 884 + 462 @@ -42,10 +42,7 @@ Qt::NoContextMenu - - - - + @@ -347,20 +344,23 @@ - - + + + + Qt::Horizontal + + + + 40 + 0 + + + + + + - - - Qt::Horizontal - - - - 40 - 20 - - - + @@ -377,8 +377,8 @@ color:rgb(20,200,200); 0 0 - 1286 - 25 + 884 + 20 diff --git a/res/Qss/qss.qss b/res/Qss/qss.qss index 2381c72..994f291 100644 --- a/res/Qss/qss.qss +++ b/res/Qss/qss.qss @@ -1,3 +1,9 @@ +/************************QWidget窗体设置****************************/ +QWidget{ + background-color: rgb(50, 50, 50); +} + +/************************QPushButton按钮设置****************************/ /*hover样式*/ QPushButton:hover{ background-color: rgb(155,155,155); @@ -12,16 +18,84 @@ QPushButton{ border-radius: 2px; border: 1px groove gray; border-style: outset; - font: 12pt "Microsoft YaHei UI"; -} -QGroupBox{ - color:rgb(153,255,153); - font-family:Consolas; - font-size:12pt; + font: 12pt "Microsoft YaHei"; } +/**************************QLineEdit编辑框设置*************************/ +QLineEdit{ + color:rgb(255,255,255); + border-radius: 2px; + border: 1px groove gray; + border-style: outset; + font: 12pt "Microsoft YaHei"; +} -/*设置TabWidget中tab_1的样式*/ +/***************************QComboBox下拉框设置************************/ +QComboBox +{ + border-radius:3px; + background-color:rgba(60,60,60,200); + font: 75 11pt "Microsoft YaHei"; + color:rgb(255,255,255); + border:0px ; + padding-top: 2px; + padding-left: 2px; + border-width: 0.5px; + border-style: solid; + border-color: rgb(255,255,255); +} +QComboBox:disabled +{ + background-color:rgba(50,50,50,200); + font: 75 11pt "Microsoft YaHei"; + color:rgb(160,160,160); +} +QComboBox:hover +{ + background-color:rgba(45,45,45,200); + border:1px solid rgb(31,156,220) ; +} +/*点击combox的样式*/ +QComboBox:on +{ + border-radius:3px; + background-color:rgba(35,35,35); + font: 75 11pt "Microsoft YaHei"; + color:rgb(255,255,255); + border:1px solid rgb(31,156,220) ; +} +/*下拉框的样式*/ +QComboBox QAbstractItemView +{ + outline: 0px solid gray; /*取消选中虚线*/ + border: 1px solid rgb(31,156,220); + font: 75 11pt "Microsoft YaHei"; + color: rgb(255,255,255); + background-color: rgb(45,45,45); + selection-background-color: rgb(90,90,90); +} + /*选中每一项高度*/ +QComboBox QAbstractItemView::item + { + height: 25px; + } +/*选中每一项的字体颜色和背景颜色*/ +QComboBox QAbstractItemView::item:selected +{ + color: rgb(31,163,246); + background-color: rgb(90,90,90); +} +/**********************设置TabWidget中的样式*****************/ +TabWidget::tab +{ + border:1px solid rgb(31,156,220); +} +TabWidget::pane +{ + border-top:3px; + /*border:none;*/ +} +/**********************设置TabWidget中tab_x的样式*****************/ #tab_1.QWidget{ background-color: rgb(50, 50, 50); } @@ -41,7 +115,7 @@ QGroupBox{ background-color: rgb(50, 50, 50); } -/*设置TabWidget中QTabBar的样式*/ +/************************QTabBar设置************************/ QTabBar::tab{ background-color: #0B0E11; font-family:Consolas; /*设置tab中的文本的字体*/ @@ -53,46 +127,72 @@ QTabBar::tab{ padding: 5px; background-color: rgb(50, 50, 50); } - /*设置TabWidget中QTabBar的tab被选中时的样式*/ QTabBar::tab:selected{ background-color: rgb(204, 229, 255); color: rgb(50, 50, 50); } - /*设置TabWidget中鼠标悬浮在QTabBar的tab上,但未选中该Tab的样式*/ QTabBar::tab:hover:!selected { background-color: rgb(224, 224, 224); color: rgb(50, 50, 50); } - /*设置TabWidget的边框的样式*/ QTabWidget::pane { border: 1px solid rgb(108, 117, 125); } - /*当打开多个tab,右侧出现,点击后,可以向前向后的按钮的样式*/ QTabBar QToolButton { border: none; color: rgb(255, 206, 6); background-color: #0b0e11; } - QTabBar QToolButton:hover { background-color: rgb(50, 50, 50); } - -/*QLabel设置*/ +/****************************QLabel设置************************/ QLabel{ color: rgb(255, 255, 255); font-family:Consolas; font-size:11pt; } - -QComboBox{ - color: rgb(0, 0, 0); - background-color: rgb(250, 250, 250); - border-color:rgb(255, 255, 255);/*边框颜色*/ +/***************************QSpinBox设置***********************/ +QSpinBox{ + border-radius:1px; + background-color:rgba(60,60,60,200); + font: 12pt "Microsoft YaHei"; + color:rgb(255,255,255); + border-width: 0.5px; + border-style: solid; + border-color: rgb(255,255,255); +} +/***************************QGroupBox设置***********************/ +QGroupBox{ + border:1px solid rgb(255,255,255); + border-radius:5px; + margin-top:2ex;/*文字在方框中位置的偏离度*/ + color:rgb(153,255,153); + font-family:Consolas; + font-size:12pt; + /*font:bold 12px;*/ +} +QGroupBox::title +{ + subcontrol-origin:margin; + subcontrol-position:top center; + right:5px; + left:0px; + padding:0 1px 0 1px; +} +/***************************QRadioButton设置***********************/ +QRadioButton{ + color: rgb(255, 255, 255); + font-family:Consolas; font-size:11pt; } +/***************************QFrame***********************/ +QFrame#frameGDDCPage +{ + border:1px solid rgb(0,255,0); +} diff --git a/res/down.png b/res/down.png new file mode 100644 index 0000000..7e64e7e Binary files /dev/null and b/res/down.png differ diff --git a/res/settings.png b/res/settings.png new file mode 100644 index 0000000..e409cd9 Binary files /dev/null and b/res/settings.png differ diff --git a/res/up.png b/res/up.png new file mode 100644 index 0000000..94d9701 Binary files /dev/null and b/res/up.png differ diff --git a/res/手册渲染文件.177.png b/res/手册渲染文件.177.png new file mode 100644 index 0000000..6ed9a60 Binary files /dev/null and b/res/手册渲染文件.177.png differ