|
|
|
#include "gddcdlg.h"
|
|
|
|
#include "ui_gddcdlg.h"
|
|
|
|
#include <QDateTime>
|
|
|
|
#include <QNetworkInterface>
|
|
|
|
#include <QTabBar>
|
|
|
|
#include <QTabWidget>
|
|
|
|
#include <windows.h>
|
|
|
|
#include <QDir>
|
|
|
|
|
|
|
|
#define CONFIG_PATH "config.ini"
|
|
|
|
#define CMDPAGEHIGHT 250
|
|
|
|
#define STATEPAGEWIDTH 250
|
|
|
|
|
|
|
|
GDDCdlg::GDDCdlg(QWidget *parent)
|
|
|
|
: QWidget(parent)
|
|
|
|
, ui(new Ui::GDDCdlg)
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
|
|
|
|
initWindow();
|
|
|
|
initParam();
|
|
|
|
initSignalSlot();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
GDDCdlg::~GDDCdlg()
|
|
|
|
{
|
|
|
|
//停止所有通信
|
|
|
|
stopConnectURL1();
|
|
|
|
stopConnectURL2();
|
|
|
|
stopConnectSerialCtrl();
|
|
|
|
stopConnectUDPCtrl();
|
|
|
|
stopConnectTCPCtrl();
|
|
|
|
|
|
|
|
delete m_DlgGDDCSet;
|
|
|
|
delete m_GDDCCmdDlg;
|
|
|
|
delete m_GDDCStateDlg;
|
|
|
|
delete ui;
|
|
|
|
}
|
|
|
|
|
|
|
|
//初始化window
|
|
|
|
void GDDCdlg::initWindow()
|
|
|
|
{
|
|
|
|
QPalette palette;
|
|
|
|
//设置主窗口背景颜色
|
|
|
|
palette.setColor(QPalette::Window,QColor(50, 50, 50));
|
|
|
|
this->setPalette(palette);
|
|
|
|
//嵌入到主窗口
|
|
|
|
setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
|
|
|
|
hide();
|
|
|
|
|
|
|
|
m_DlgGDDCSet = new GDDCSet();
|
|
|
|
m_GDDCCmdDlg = new GDDCCmdDlg(this);
|
|
|
|
m_GDDCStateDlg = new GDDCStateInfo(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
//初始化参数
|
|
|
|
void GDDCdlg::initParam()
|
|
|
|
{
|
|
|
|
pointSelectionTracking = false;
|
|
|
|
Is_openVideo = false;
|
|
|
|
isCmdPageShow = true;
|
|
|
|
isStatePageShow = true;
|
|
|
|
m_DCcmdBuffer.resize(cmdLength);
|
|
|
|
detectionAreaSetting = false;
|
|
|
|
connectFlag.resize(10,false);
|
|
|
|
ui->pushButShowCmdPage->setIcon(QIcon(":/res/down.png"));
|
|
|
|
ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png"));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//初始化信号与槽
|
|
|
|
void GDDCdlg::initSignalSlot()
|
|
|
|
{
|
|
|
|
/*******有四种方式*******/
|
|
|
|
//方式一
|
|
|
|
connect(ui->pushButtonSet,SIGNAL(clicked()),this,SLOT(pushButtonSet_clicked()));
|
|
|
|
//方式二
|
|
|
|
//connect(ui->pushButtonSet,&QPushButton::clicked,this,&::GDDCdlg::pushButtonSet_clicked);
|
|
|
|
//方式三
|
|
|
|
//connect(ui->pushButtonSet, QOverload<bool>::of(&QPushButton::clicked),this,&::GDDCdlg::pushButtonSet_clicked);
|
|
|
|
//方式四
|
|
|
|
//connect(ui->pushButtonSet,&QPushButton::clicked,[=](bool check){pushButtonSet_clicked();});
|
|
|
|
connect(ui->pushButShowCmdPage,SIGNAL(clicked()),this,SLOT(pushButShowCmdPage_clicked())); //控制页面隐藏显示按钮
|
|
|
|
connect(ui->pushButShowStatePage,SIGNAL(clicked()),this,SLOT(pushButShowStatePage_clicked())); //状态页面隐藏显示按钮
|
|
|
|
connect(m_DlgGDDCSet,SIGNAL(SignalStartConnect(int)),this,SLOT(startConnect(int))); //开始连接
|
|
|
|
connect(m_DlgGDDCSet,SIGNAL(SignalStopConnect(int)),this,SLOT(stopConnect(int))); //停止连接
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//槽函数开始连接
|
|
|
|
void GDDCdlg::startConnect(int type)
|
|
|
|
{
|
|
|
|
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();
|
|
|
|
// qDebug() << this->geometry().y();
|
|
|
|
|
|
|
|
// QPoint sPoint2=QCursor::pos();
|
|
|
|
// qDebug()<<"相对于屏幕坐标2:"<<"("<<sPoint2.rx()<<","<<sPoint2.ry()<<")";
|
|
|
|
|
|
|
|
// QPoint windowPoint=this->mapFromGlobal(sPoint2);
|
|
|
|
// qDebug()<<"相对于窗口坐标:"<<"("<<windowPoint.rx()<<","<<windowPoint.ry()<<")";
|
|
|
|
|
|
|
|
// return true;
|
|
|
|
|
|
|
|
// }
|
|
|
|
//鼠标左键
|
|
|
|
void GDDCdlg::mousePressEvent(QMouseEvent *event)
|
|
|
|
{
|
|
|
|
//如果鼠标左键按下
|
|
|
|
if (event->type() == QEvent::MouseButtonPress) {
|
|
|
|
//AI检测区域设置
|
|
|
|
if(m_GDDCCmdDlg->detectionAreaSetting==true)
|
|
|
|
{
|
|
|
|
QPointF sPoint1 = event->globalPosition();
|
|
|
|
sPoint1 = QCursor::pos();
|
|
|
|
QPointF widgetPoint = ui->WgtffmpegVideo->mapFromGlobal(sPoint1);
|
|
|
|
double a = ui->WgtffmpegVideo->width();
|
|
|
|
double b = ui->WgtffmpegVideo->height();
|
|
|
|
double dir = 1920/a*widgetPoint.rx()-960;
|
|
|
|
double pitch = -(1080/b*widgetPoint.ry()-540);
|
|
|
|
m_GDDCCmdDlg->ui->lineEdit_6_1->setText(QString::number((int)dir));
|
|
|
|
m_GDDCCmdDlg->ui->lineEdit_6_2->setText(QString::number((int)pitch));
|
|
|
|
}
|
|
|
|
//目标跟踪
|
|
|
|
if(m_GDDCCmdDlg->pointSelectionTracking == true)
|
|
|
|
{
|
|
|
|
QPointF sPoint1 = event->globalPosition();
|
|
|
|
QPointF widgetPoint = ui->WgtffmpegVideo->mapFromGlobal(sPoint1);
|
|
|
|
double a = ui->WgtffmpegVideo->width();
|
|
|
|
double b = ui->WgtffmpegVideo->height();
|
|
|
|
double dir = 1920/a*widgetPoint.rx()-960;
|
|
|
|
double pitch = -(1080/b*widgetPoint.ry()-540);
|
|
|
|
std::byte buffer[10];
|
|
|
|
buffer[0] = (std::byte)0x3A;
|
|
|
|
buffer[1] = (std::byte)(dir);
|
|
|
|
buffer[2] = (std::byte)((int)dir>>8);
|
|
|
|
buffer[3] = (std::byte)pitch;
|
|
|
|
buffer[4] = (std::byte)((int)pitch>>8);
|
|
|
|
buffer[5] = (std::byte)0x00;
|
|
|
|
buffer[6] = (std::byte)0x00;
|
|
|
|
buffer[7] = (std::byte)0x00;
|
|
|
|
buffer[8] = (std::byte)0x00;
|
|
|
|
buffer[9] = (std::byte)0x00;
|
|
|
|
|
|
|
|
//发送5次
|
|
|
|
sendCurDate(buffer,3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//鼠标移动
|
|
|
|
void GDDCdlg::mouseMoveEvent(QMouseEvent *event)
|
|
|
|
{
|
|
|
|
if(m_GDDCCmdDlg->detectionAreaSetting==true)
|
|
|
|
{
|
|
|
|
qDebug() << this->geometry().x();
|
|
|
|
qDebug() << this->geometry().y();
|
|
|
|
QPointF sPoint1=event->globalPosition();
|
|
|
|
//qDebug()<<"相对于屏幕坐标1:"<<"("<<sPoint1.rx()<<","<<sPoint1.ry()<<")";
|
|
|
|
|
|
|
|
QPointF sPoint2=QCursor::pos();
|
|
|
|
//qDebug()<<"相对于屏幕坐标2:"<<"("<<sPoint2.rx()<<","<<sPoint2.ry()<<")";
|
|
|
|
|
|
|
|
QPointF windowPoint=this->mapFromGlobal(sPoint2);
|
|
|
|
//qDebug()<<"相对于窗口坐标:"<<"("<<windowPoint.rx()<<","<<windowPoint.ry()<<")";
|
|
|
|
|
|
|
|
QPointF widgetPoint=ui->WgtffmpegVideo->mapFromGlobal(sPoint1);
|
|
|
|
//qDebug()<<"相对于控件坐标:"<<"("<<widgetPoint.rx()<<","<<widgetPoint.ry()<<")";
|
|
|
|
|
|
|
|
//更新LineEdit信息
|
|
|
|
double a = ui->WgtffmpegVideo->width();
|
|
|
|
double b = ui->WgtffmpegVideo->height();
|
|
|
|
double dir = 1920/a*widgetPoint.rx()-960;
|
|
|
|
double pitch = -(1080/b*widgetPoint.ry()-540);
|
|
|
|
m_GDDCCmdDlg->ui->lineEdit_6_1->setText(QString::number((int)dir));
|
|
|
|
m_GDDCCmdDlg->ui->lineEdit_6_2->setText(QString::number((int)pitch));
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
//区域重绘
|
|
|
|
void GDDCdlg::resizeEvent(QResizeEvent *event)
|
|
|
|
{
|
|
|
|
resizeUI(); //重新设置布局
|
|
|
|
}
|
|
|
|
//重新设置布局
|
|
|
|
void GDDCdlg::resizeUI()
|
|
|
|
{
|
|
|
|
/* -------------->x
|
|
|
|
* | (0,0)
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* ↓ y
|
|
|
|
*/
|
|
|
|
double GDDCPageHeight = (double)(this->height());
|
|
|
|
double GDDCPageWidth = (double)(this->width());
|
|
|
|
//qDebug()<<"宽度,高度:"<<GDDCPageHeight<<GDDCPageWidth;
|
|
|
|
|
|
|
|
/******控制区位置和大小设置*****/
|
|
|
|
double cmdAreaHeight;
|
|
|
|
double cmdAreaWidth;
|
|
|
|
if(m_GDDCStateDlg->isVisible()){cmdAreaWidth = GDDCPageWidth-STATEPAGEWIDTH;}
|
|
|
|
else{cmdAreaWidth = GDDCPageWidth;}
|
|
|
|
if(m_GDDCCmdDlg->isVisible()){cmdAreaHeight = CMDPAGEHIGHT;}
|
|
|
|
else{cmdAreaHeight = 0;}
|
|
|
|
m_GDDCCmdDlg->setGeometry(0,GDDCPageHeight-cmdAreaHeight,(int)cmdAreaWidth,(int)cmdAreaHeight);
|
|
|
|
m_GDDCCmdDlg->ui->tabWidget->setGeometry(0,0,(int)cmdAreaWidth,(int)cmdAreaHeight);
|
|
|
|
|
|
|
|
|
|
|
|
/*********状态区位置和大小设置***********/
|
|
|
|
double stateAreaHeight = GDDCPageHeight;
|
|
|
|
double stateAreaWidth;
|
|
|
|
if(m_GDDCStateDlg->isVisible()){stateAreaWidth = STATEPAGEWIDTH;}
|
|
|
|
else{stateAreaWidth = 0;}
|
|
|
|
m_GDDCStateDlg->setGeometry(GDDCPageWidth-stateAreaWidth,0,stateAreaWidth,stateAreaHeight);
|
|
|
|
m_GDDCStateDlg->ui->tableViewShowIState->setGeometry(0,0,stateAreaWidth,stateAreaHeight);
|
|
|
|
|
|
|
|
|
|
|
|
/*******视频区位置和大小设置********/
|
|
|
|
double VideoAreaHeight = GDDCPageHeight-cmdAreaHeight; //视频区高度
|
|
|
|
double VideoAreaWidth = GDDCPageWidth-stateAreaWidth; //视频区宽度
|
|
|
|
// //高度值相对比较大
|
|
|
|
// if(VideoAreaHeight*16>VideoAreaWidth*9)
|
|
|
|
// {
|
|
|
|
// double setVideoAreaWidth = VideoAreaWidth;//等于吊舱页面宽度-状态区高度
|
|
|
|
// double setVideoAreaHeight = VideoAreaWidth*9/16;
|
|
|
|
// ui->WgtffmpegVideo->setGeometry(0,0.5*(VideoAreaHeight-setVideoAreaHeight),(int)setVideoAreaWidth,(int)setVideoAreaHeight);
|
|
|
|
// }
|
|
|
|
// //宽度值相对比较大
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// double setVideoAreaHeight = VideoAreaHeight;//等于吊舱页面高度-控制区高度
|
|
|
|
// double setVideoAreaWidth = VideoAreaHeight*16/9;
|
|
|
|
// ui->WgtffmpegVideo->setGeometry(0.5*(VideoAreaWidth-setVideoAreaWidth),0,(int)setVideoAreaWidth,(int)setVideoAreaHeight);
|
|
|
|
// }
|
|
|
|
ui->WgtffmpegVideo->setGeometry(0,0,(int)VideoAreaWidth,(int)VideoAreaHeight);
|
|
|
|
|
|
|
|
/**************设置按钮****************/
|
|
|
|
ui->pushButtonSet->setGeometry(GDDCPageWidth-stateAreaWidth-45,0,40,40);
|
|
|
|
|
|
|
|
/**********控制页显示隐藏按钮********/
|
|
|
|
ui->pushButShowCmdPage->setGeometry(cmdAreaWidth*0.5,GDDCPageHeight-cmdAreaHeight-20,50,20);
|
|
|
|
ui->pushButShowCmdPage->raise();
|
|
|
|
|
|
|
|
/**********状态页显示隐藏按钮********/
|
|
|
|
ui->pushButShowStatePage->setGeometry(GDDCPageWidth-stateAreaWidth-20,(stateAreaHeight-cmdAreaHeight)*0.5,20,50);
|
|
|
|
ui->pushButShowStatePage->raise();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//定时器处理
|
|
|
|
void GDDCdlg::GDDCControlTimeOut()
|
|
|
|
{
|
|
|
|
if(sendTimes>0)
|
|
|
|
{
|
|
|
|
sendTimes-=1;
|
|
|
|
|
|
|
|
//UDP控制
|
|
|
|
if(connectFlag[3])
|
|
|
|
{
|
|
|
|
udpSocket->writeDatagram(m_DCcmdBuffer,m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
|
|
|
|
}
|
|
|
|
//TCP控制
|
|
|
|
|
|
|
|
//串口控制
|
|
|
|
|
|
|
|
|
|
|
|
if(sendTimes==0)
|
|
|
|
{
|
|
|
|
clearTJDCCmdBuffer();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
UpdateDataTJDC();
|
|
|
|
|
|
|
|
//UDP控制
|
|
|
|
if(connectFlag[3])
|
|
|
|
{
|
|
|
|
udpSocket->writeDatagram(m_DCcmdBuffer,m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
|
|
|
|
}
|
|
|
|
|
|
|
|
//TCP控制
|
|
|
|
|
|
|
|
//串口控制
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//更新m_DCcmdBuffer
|
|
|
|
void GDDCdlg::UpdateDataTJDC()
|
|
|
|
{
|
|
|
|
m_GDDCCmdDlg->UpdateDataTJDC();
|
|
|
|
m_DCcmdBuffer = m_GDDCCmdDlg->m_DCcmdBuffer;
|
|
|
|
}
|
|
|
|
|
|
|
|
//赋值后清空TJDCCmdBuffer
|
|
|
|
void GDDCdlg::clearTJDCCmdBuffer()
|
|
|
|
{
|
|
|
|
m_GDDCCmdDlg->clearTJDCCmdBuffer();
|
|
|
|
}
|
|
|
|
|
|
|
|
//设置发送数据和次数
|
|
|
|
void GDDCdlg::sendCurDate(std::byte *buffer, int num)
|
|
|
|
{
|
|
|
|
sendTimes = num;
|
|
|
|
for(int i=0;i<10;++i)
|
|
|
|
{
|
|
|
|
m_GDDCCmdDlg->TJDCCmdBuffer[i] = buffer[i];
|
|
|
|
}
|
|
|
|
UpdateDataTJDC();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//播放视频1
|
|
|
|
void GDDCdlg::startConnectURL1()
|
|
|
|
{
|
|
|
|
if(!connectFlag[0])
|
|
|
|
{
|
|
|
|
connectFlag[0] = true ;
|
|
|
|
//Is_openVideo = true;
|
|
|
|
//ui->WgtffmpegVideo->Isplay(Is_openVideo);
|
|
|
|
//ui->WgtffmpegVideo->m_PlayStatus = Is_openVideo;
|
|
|
|
ui->WgtffmpegVideo->play();
|
|
|
|
ui->WgtffmpegVideo->setUrl(m_DlgGDDCSet->m_playURL1);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//关闭视频1
|
|
|
|
void GDDCdlg::stopConnectURL1()
|
|
|
|
{
|
|
|
|
if(connectFlag[0])
|
|
|
|
{
|
|
|
|
connectFlag[0] = false ;
|
|
|
|
//Is_openVideo = 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])
|
|
|
|
{
|
|
|
|
/*启动定时器*/
|
|
|
|
GDDCControlTimer = new QTimer();
|
|
|
|
GDDCControlTimer->setInterval(100);
|
|
|
|
connect(GDDCControlTimer,&QTimer::timeout,this,[=](){
|
|
|
|
GDDCControlTimeOut();
|
|
|
|
});
|
|
|
|
GDDCControlTimer->start();
|
|
|
|
|
|
|
|
//创建udp socket对象
|
|
|
|
udpSocket = new QUdpSocket(this);
|
|
|
|
/*接收*/
|
|
|
|
//QList<QHostAddress> 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])
|
|
|
|
{
|
|
|
|
//关闭定时器
|
|
|
|
GDDCControlTimer->stop();
|
|
|
|
delete GDDCControlTimer;
|
|
|
|
udpSocket->abort();//关闭套接字,并丢缓冲区中的所有待处理数据
|
|
|
|
delete udpSocket;
|
|
|
|
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::pushButtonSet_clicked()
|
|
|
|
{
|
|
|
|
m_DlgGDDCSet->show();
|
|
|
|
m_DlgGDDCSet->activateWindow();
|
|
|
|
}
|
|
|
|
|
|
|
|
//udp数据接收
|
|
|
|
void GDDCdlg::UDPMessageReceive()
|
|
|
|
{
|
|
|
|
QByteArray data;
|
|
|
|
data.resize(udpSocket->pendingDatagramSize());
|
|
|
|
QHostAddress addr;
|
|
|
|
quint16 port;
|
|
|
|
udpSocket->readDatagram(data.data(),data.size(),&addr,&port);
|
|
|
|
|
|
|
|
//吊舱状态数据更新
|
|
|
|
m_GDDCStateDlg->UDPMessageReceive(data,data.size());
|
|
|
|
}
|
|
|
|
//控制页面隐藏与显示
|
|
|
|
void GDDCdlg::pushButShowCmdPage_clicked()
|
|
|
|
{
|
|
|
|
if(isCmdPageShow)
|
|
|
|
{
|
|
|
|
m_GDDCCmdDlg->setVisible(false);
|
|
|
|
isCmdPageShow = false;
|
|
|
|
resizeUI();
|
|
|
|
ui->pushButShowCmdPage->setIcon(QIcon(":/res/up.png"));
|
|
|
|
//ui->pushButton->setGeometry(this->width()/2,this->height()-50,50,50);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
m_GDDCCmdDlg->setVisible(true);
|
|
|
|
isCmdPageShow = true;
|
|
|
|
resizeUI();
|
|
|
|
ui->pushButShowCmdPage->setIcon(QIcon(":/res/down.png"));
|
|
|
|
//ui->pushButton->setGeometry(this->width()/2,ui->tabWidget->height(),50,50);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//状态页面隐藏与显示
|
|
|
|
void GDDCdlg::pushButShowStatePage_clicked()
|
|
|
|
{
|
|
|
|
if(isStatePageShow)
|
|
|
|
{
|
|
|
|
m_GDDCStateDlg->setVisible(false);
|
|
|
|
isStatePageShow = false;
|
|
|
|
resizeUI();
|
|
|
|
ui->pushButShowStatePage->setIcon(QIcon(":/res/left.png"));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
m_GDDCStateDlg->setVisible(true);
|
|
|
|
isStatePageShow = true;
|
|
|
|
resizeUI();
|
|
|
|
ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png"));
|
|
|
|
//ui->pushButton->setGeometry(this->width()/2,ui->tabWidget->height(),50,50);
|
|
|
|
}
|
|
|
|
}
|