|
|
|
|
#ifndef GDDCDLG_H
|
|
|
|
|
#define GDDCDLG_H
|
|
|
|
|
|
|
|
|
|
#include <QWidget>
|
|
|
|
|
#include <QUdpSocket>
|
|
|
|
|
#include <QHostAddress>
|
|
|
|
|
#include <QNetworkDatagram>
|
|
|
|
|
#include <QByteArray>
|
|
|
|
|
#include <QTimer>
|
|
|
|
|
#include <QMouseEvent>
|
|
|
|
|
#include <fstream>
|
|
|
|
|
#include <iostream>
|
|
|
|
|
#include <string>
|
|
|
|
|
#include "cffmpeg_decode.h"
|
|
|
|
|
|
|
|
|
|
#include "Src/GDDC/gddcSet.h"
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <QHeaderView>
|
|
|
|
|
#include <QStandardItemModel>
|
|
|
|
|
|
|
|
|
|
#include "gddcCmdDlg.h"//吊舱控制对话框
|
|
|
|
|
#include "ui_gddcCmdDlg.h"
|
|
|
|
|
|
|
|
|
|
#define cmdLength 44
|
|
|
|
|
namespace Ui {
|
|
|
|
|
class GDDCdlg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class GDDCdlg : public QWidget
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
explicit GDDCdlg(QWidget *parent = nullptr);
|
|
|
|
|
~GDDCdlg();
|
|
|
|
|
private:
|
|
|
|
|
Ui::GDDCdlg *ui;
|
|
|
|
|
QTimer *GDDCControlTimer;
|
|
|
|
|
protected:
|
|
|
|
|
void resizeEvent(QResizeEvent *event);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
void initWindow(); //初始化窗口
|
|
|
|
|
void initParam(); //初始化参数
|
|
|
|
|
void initSignalSlot(); //初始化信号与槽
|
|
|
|
|
void resizeUI(); //重新设置布局
|
|
|
|
|
|
|
|
|
|
GDDCCmdDlg *m_GDDCCmdDlg; //光电吊舱控制对话框
|
|
|
|
|
public:
|
|
|
|
|
QByteArray m_DCcmdBuffer;//存储吊舱控制指令
|
|
|
|
|
void UpdateDataTJDC();
|
|
|
|
|
void clearTJDCCmdBuffer();
|
|
|
|
|
int sendTimes;//计划发送次数
|
|
|
|
|
void sendCurDate(std::byte *,int);//发送当前数据:内容,发送次数
|
|
|
|
|
//socket对象
|
|
|
|
|
QUdpSocket *udpSocket;
|
|
|
|
|
// QString RemoteIP; //目标IP
|
|
|
|
|
// QHostAddress RemoteAddr; //目标地址
|
|
|
|
|
// quint16 RemotePort; //目标port
|
|
|
|
|
QString localIP; //本地IP
|
|
|
|
|
QHostAddress localAddr; //本地地址
|
|
|
|
|
quint16 localPort; //本地port
|
|
|
|
|
|
|
|
|
|
GDDCSet *m_DlgGDDCSet; //光电吊舱设置对话框
|
|
|
|
|
|
|
|
|
|
//bool eventFilter(QObject *,QEvent *); //事件过滤器
|
|
|
|
|
void mousePressEvent(QMouseEvent *event); //事件过滤器
|
|
|
|
|
void mouseMoveEvent(QMouseEvent *event); //事件过滤器
|
|
|
|
|
|
|
|
|
|
QStandardItemModel *m_tableModel;
|
|
|
|
|
void startConnectURL1();
|
|
|
|
|
void stopConnectURL1();
|
|
|
|
|
void startConnectURL2();
|
|
|
|
|
void stopConnectURL2();
|
|
|
|
|
void startConnectSerialCtrl();
|
|
|
|
|
void stopConnectSerialCtrl();
|
|
|
|
|
void startConnectUDPCtrl();
|
|
|
|
|
void stopConnectUDPCtrl();
|
|
|
|
|
void startConnectTCPCtrl();
|
|
|
|
|
void stopConnectTCPCtrl();
|
|
|
|
|
/*数据校验
|
|
|
|
|
* 数据
|
|
|
|
|
* 数据长度
|
|
|
|
|
* 校验方式 1亦或,2和校验
|
|
|
|
|
*/
|
|
|
|
|
bool checkdata(QByteArray,int,int);
|
|
|
|
|
public:
|
|
|
|
|
bool pointSelectionTracking = false; //选点跟踪
|
|
|
|
|
bool Is_openVideo = false;//视频是否已打开,默认未打开
|
|
|
|
|
std::vector<bool> connectFlag; // 0,视频流1;1,视频流2;2,串口通信,3网口通信
|
|
|
|
|
bool isCmdAreaShow = true;//控制区域是否显示
|
|
|
|
|
bool detectionAreaSetting;//检测区域设置
|
|
|
|
|
public slots:
|
|
|
|
|
void GDDCControlTimeOut();
|
|
|
|
|
void startConnect(int); //开始连接
|
|
|
|
|
void stopConnect(int); //停止连接
|
|
|
|
|
void UDPMessageReceive(); //udp数据接收
|
|
|
|
|
public:
|
|
|
|
|
typedef union
|
|
|
|
|
{
|
|
|
|
|
float float_value;
|
|
|
|
|
UINT8 uint8[4];
|
|
|
|
|
}packet_uint32_to_float;
|
|
|
|
|
float m_uint32_to_float(UINT8 value4, UINT8 value3, UINT8 value2, UINT8 value1)
|
|
|
|
|
{
|
|
|
|
|
packet_uint32_to_float packet;
|
|
|
|
|
|
|
|
|
|
UINT8 buf[4]; memset(buf,0x00,sizeof(buf));
|
|
|
|
|
buf[0] = (UINT8)((value1) & 0xFF);
|
|
|
|
|
buf[1] = (UINT8)((value2) & 0xFF);
|
|
|
|
|
buf[2] = (UINT8)((value3) & 0xFF);
|
|
|
|
|
buf[3] = (UINT8)((value4) & 0xFF);
|
|
|
|
|
UINT32 uint32 = ((buf[0]<<24) & 0XFFFFFFFF) + ((buf[1]<<16) & 0XFFFFFF) + ((buf[2]<<8) & 0XFFFF) + buf[3];
|
|
|
|
|
|
|
|
|
|
for(UINT8 i = 0; i < 4; i++)
|
|
|
|
|
{
|
|
|
|
|
packet.uint8[i] = (UINT8)(uint32>>(i*8));
|
|
|
|
|
}
|
|
|
|
|
//print("modbus_uint32_to_float uint32=%d, value1=%d; value2=%d; float_value = %f;",uint32,value1,value2,packet.float_value);
|
|
|
|
|
return packet.float_value;
|
|
|
|
|
}
|
|
|
|
|
private slots:
|
|
|
|
|
void on_pushButtonSet_clicked();
|
|
|
|
|
void on_pushButShowCmdArea_clicked();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // GDDCDLG_H
|