#ifndef GDDCDLG_H #define GDDCDLG_H #include #include #include #include #include #include #include #include #include #include #include "cffmpeg_decode.h" #include "Src/GDDC/gddcSet.h" #include #include #include #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 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