优化光电吊舱代码逻辑

pull/7/head
caoyuhui 7 months ago
parent 03fcfc0981
commit 5cd4255abf

@ -100,6 +100,16 @@ void GDDCCmdDlg::initParam() {
ui->lineEdit_6_2->setText("540"); ui->lineEdit_6_2->setText("540");
detectionAreaSetting = false; detectionAreaSetting = false;
} }
// 设置tabwidget的几何位置
void GDDCCmdDlg::setTabWidgetGeometry(int ax, int ay, int aw, int ah) {
ui->tabWidget->setGeometry(ax, ay, aw, ah);
}
// 设置AI监测lineEdit的内容
void GDDCCmdDlg::setAIDetcLineEditText(QString str1, QString str2) {
ui->lineEdit_6_1->setText(str1);
ui->lineEdit_6_2->setText(str2);
}
// 更新m_DCcmdBuffer // 更新m_DCcmdBuffer
void GDDCCmdDlg::UpdateDataTJDC() { void GDDCCmdDlg::UpdateDataTJDC() {
/******************模拟发送天进吊舱控制指令************************/ /******************模拟发送天进吊舱控制指令************************/

@ -1,62 +1,56 @@
#ifndef GDDCCMDDLG_H #ifndef GDDCCMDDLG_H
#define GDDCCMDDLG_H #define GDDCCMDDLG_H
#include <QWidget> #include <QByteArray>
#include <vector> #include <QDateTime>
#include <QDir>
#include <QHeaderView> #include <QHeaderView>
#include <QStandardItemModel>
#include <QUdpSocket>
#include <QHostAddress> #include <QHostAddress>
#include <QNetworkDatagram>
#include <QByteArray>
#include <QTimer>
#include <QMouseEvent> #include <QMouseEvent>
#include <QNetworkDatagram>
#include <vector>
#include <QHeaderView>
#include <QStandardItemModel>
#include <QDateTime>
#include <QNetworkInterface> #include <QNetworkInterface>
#include <QStandardItemModel>
#include <QTabBar> #include <QTabBar>
#include <QTabWidget> #include <QTabWidget>
#include <QTimer>
#include <QUdpSocket>
#include <QWidget>
#include <vector>
#include <windows.h> #include <windows.h>
#include <QDir>
#define cmdLength 44 #define cmdLength 44
namespace Ui { namespace Ui {
class GDDCCmdDlg; class GDDCCmdDlg;
} }
class GDDCCmdDlg : public QWidget class GDDCCmdDlg : public QWidget {
{
Q_OBJECT Q_OBJECT
public: public:
explicit GDDCCmdDlg(QWidget *parent = nullptr); explicit GDDCCmdDlg(QWidget *parent = nullptr);
~GDDCCmdDlg(); ~GDDCCmdDlg();
//private: // private:
public: private:
Ui::GDDCCmdDlg *ui; Ui::GDDCCmdDlg *ui;
public: public:
void initParam(); //初始化参数 void initParam(); // 初始化参数
public: public:
QByteArray m_DCcmdBuffer;//存储吊舱控制指令 QByteArray m_DCcmdBuffer; // 存储吊舱控制指令
std::byte TJDCCmdBuffer[10]; std::byte TJDCCmdBuffer[10];
void UpdateDataTJDC(); void UpdateDataTJDC();
void clearTJDCCmdBuffer(); void clearTJDCCmdBuffer();
int sendTimes;//计划发送次数 int sendTimes; // 计划发送次数
void sendCurDate(std::byte *,int);//发送当前数据:内容,发送次数 void sendCurDate(std::byte *, int); // 发送当前数据:内容,发送次数
bool pointSelectionTracking = false; //选点跟踪 bool pointSelectionTracking = false; // 选点跟踪
bool param_pushButton_3_9; bool param_pushButton_3_9;
int paramDigitalZoom;//电子放大参数 int paramDigitalZoom; // 电子放大参数
bool paramIsFrame; //是否是框架/陀螺校准 bool paramIsFrame; // 是否是框架/陀螺校准
bool detectionAreaSetting;//检测区域设置 bool detectionAreaSetting; // 检测区域设置
void setTabWidgetGeometry(int, int, int, int); // 设置tabwidget的几何位置
void setAIDetcLineEditText(QString, QString); // 设置AI监测lineEdit的内容
private slots: private slots:
/*系统控制*/ /*系统控制*/
void on_pushButton_11_pressed(); void on_pushButton_11_pressed();
@ -233,7 +227,6 @@ private slots:
void on_pushButton_6_7_pressed(); void on_pushButton_6_7_pressed();
void on_pushButton_6_7_released(); void on_pushButton_6_7_released();
void on_pushButton_6_8_clicked(); void on_pushButton_6_8_clicked();
}; };
#endif // GDDCCMDDLG_H #endif // GDDCCMDDLG_H

@ -1,38 +1,37 @@
#ifndef GDDCSET_H #ifndef GDDCSET_H
#define GDDCSET_H #define GDDCSET_H
#include <QWidget> #include "Src/GDDC/structDefineMyslef.h"
#include <QByteArray> #include <QByteArray>
#include <QDir> #include <QDir>
#include <QWidget>
#include <windows.h> #include <windows.h>
#include "Src/GDDC/structDefineMyslef.h"
namespace Ui { namespace Ui {
class GDDCSet; class GDDCSet;
} }
class GDDCSet : public QWidget class GDDCSet : public QWidget {
{
Q_OBJECT Q_OBJECT
public: public:
explicit GDDCSet(QWidget *parent = nullptr); explicit GDDCSet(QWidget *parent = nullptr);
~GDDCSet(); ~GDDCSet();
public: private:
Ui::GDDCSet *ui; Ui::GDDCSet *ui;
public: public:
void initUDPSocket(); //初始化UDPSocket void initUDPSocket(); // 初始化UDPSocket
void initWindow(); //初始化窗口 void initWindow(); // 初始化窗口
void initParam(); //初始化参数 void initParam(); // 初始化参数
void saveDataToLocalIni(); //保存数据至本地ini文件 void saveDataToLocalIni(); // 保存数据至本地ini文件
QByteArray m_configIniPath; //ini配置文件路径 QByteArray m_configIniPath; // ini配置文件路径
QString m_playURL1; //光电吊舱-视频连接-显示窗口1-URL地址 QString m_playURL1; // 光电吊舱-视频连接-显示窗口1-URL地址
QString m_playURL2; //光电吊舱-视频连接-显示窗口2-URL地址 QString m_playURL2; // 光电吊舱-视频连接-显示窗口2-URL地址
QString m_pushURL; //光电吊舱-推流URL地址 QString m_pushURL; // 光电吊舱-推流URL地址
MyPairNetwork m_myPairNetwork;//网络通信结构体 MyPairNetwork m_myPairNetwork; // 网络通信结构体
signals: signals:
/* int a /* int a
* 11 * 11
@ -42,15 +41,15 @@ signals:
* 5- * 5-
* 6(1) * 6(1)
* */ * */
void SignalStartConnect(int a); //信号开始连接 void SignalStartConnect(int a); // 信号开始连接
void SignalStopConnect(int a); //信号停止连接 void SignalStopConnect(int a); // 信号停止连接
private slots: private slots:
void on_pushButton_ConnectURL1_clicked(); //视频连接-显示窗口1-连接 void on_pushButton_ConnectURL1_clicked(); // 视频连接-显示窗口1-连接
void on_pushButton_ConnectURL2_clicked(); //视频连接-显示窗口2-连接 void on_pushButton_ConnectURL2_clicked(); // 视频连接-显示窗口2-连接
void on_pushButton_serialControlRefalsh_clicked(); //串口控制-刷新 void on_pushButton_serialControlRefalsh_clicked(); // 串口控制-刷新
void on_pushButton_serialControlConnect_clicked(); //串口控制-连接 void on_pushButton_serialControlConnect_clicked(); // 串口控制-连接
void on_pushButton_NetCtrlConnect_clicked(); //网络控制-连接 void on_pushButton_NetCtrlConnect_clicked(); // 网络控制-连接
void on_pushButton_pushURL_clicked(); //推流 void on_pushButton_pushURL_clicked(); // 推流
}; };
#endif // GDDCSET_H #endif // GDDCSET_H

@ -2,120 +2,120 @@
#include "ui_gddcStateInfo.h" #include "ui_gddcStateInfo.h"
GDDCStateInfo::GDDCStateInfo(QWidget *parent) GDDCStateInfo::GDDCStateInfo(QWidget *parent)
: QWidget(parent) : QWidget(parent), ui(new Ui::GDDCStateInfo) {
, ui(new Ui::GDDCStateInfo)
{
ui->setupUi(this); ui->setupUi(this);
initParam(); initParam();
} }
GDDCStateInfo::~GDDCStateInfo() GDDCStateInfo::~GDDCStateInfo() {
{
delete m_tableModel; delete m_tableModel;
delete ui; delete ui;
} }
//初始化参数 // 初始化参数
void GDDCStateInfo::initParam() void GDDCStateInfo::initParam() {
{
m_tableModel = new QStandardItemModel(); m_tableModel = new QStandardItemModel();
m_tableModel->setHorizontalHeaderItem(0,new QStandardItem("类型")); m_tableModel->setHorizontalHeaderItem(0, new QStandardItem("类型"));
m_tableModel->setHorizontalHeaderItem(1,new QStandardItem("详细信息")); m_tableModel->setHorizontalHeaderItem(1, new QStandardItem("详细信息"));
// m_tableModel->setVerticalHeaderItem(0,new QStandardItem("序号")); // m_tableModel->setVerticalHeaderItem(0,new QStandardItem("序号"));
ui->tableViewShowIState->setModel(m_tableModel); ui->tableViewShowIState->setModel(m_tableModel);
//栅格显示或隐藏 // 栅格显示或隐藏
ui->tableViewShowIState->setShowGrid(true); ui->tableViewShowIState->setShowGrid(true);
// 固定表格宽度不可扩展,不可手动调整宽度 // 固定表格宽度不可扩展,不可手动调整宽度
ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(
QHeaderView::Fixed);
// 表格宽度随内容自动扩展 // 表格宽度随内容自动扩展
//ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); // ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
// 表格宽度自动根据UI进行计算不可手动调整宽度 // 表格宽度自动根据UI进行计算不可手动调整宽度
//ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// 固定表格高度不可扩展,不可手动调整高度 // 固定表格高度不可扩展,不可手动调整高度
ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(
QHeaderView::Fixed);
// 表格高度随内容自动扩展 // 表格高度随内容自动扩展
//ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); // ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
// 表格高度自动根据UI进行计算不可手动调整高度 // 表格高度自动根据UI进行计算不可手动调整高度
//ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch); // ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableViewShowIState->setEditTriggers(QAbstractItemView::NoEditTriggers); // 不可编辑 ui->tableViewShowIState->setEditTriggers(
ui->tableViewShowIState->setColumnWidth(0,100); QAbstractItemView::NoEditTriggers); // 不可编辑
ui->tableViewShowIState->setColumnWidth(1,100); ui->tableViewShowIState->setColumnWidth(0, 100);
ui->tableViewShowIState->setColumnWidth(1, 100);
m_tableModel->setItem(0,0,new QStandardItem("跟踪源类型")); m_tableModel->setItem(0, 0, new QStandardItem("跟踪源类型"));
m_tableModel->setItem(1,0,new QStandardItem("姿态方位角")); m_tableModel->setItem(1, 0, new QStandardItem("姿态方位角"));
m_tableModel->setItem(2,0,new QStandardItem("姿态俯仰角")); m_tableModel->setItem(2, 0, new QStandardItem("姿态俯仰角"));
m_tableModel->setItem(3,0,new QStandardItem("姿态横滚角")); m_tableModel->setItem(3, 0, new QStandardItem("姿态横滚角"));
m_tableModel->setItem(4,0,new QStandardItem("中心点宽坐标")); m_tableModel->setItem(4, 0, new QStandardItem("中心点宽坐标"));
m_tableModel->setItem(5,0,new QStandardItem("中心点高坐标")); m_tableModel->setItem(5, 0, new QStandardItem("中心点高坐标"));
m_tableModel->setItem(6,0,new QStandardItem("可见光焦距")); m_tableModel->setItem(6, 0, new QStandardItem("可见光焦距"));
m_tableModel->setItem(7,0,new QStandardItem("可见光视场角")); m_tableModel->setItem(7, 0, new QStandardItem("可见光视场角"));
m_tableModel->setItem(8,0,new QStandardItem("红外焦距")); m_tableModel->setItem(8, 0, new QStandardItem("红外焦距"));
m_tableModel->setItem(9,0,new QStandardItem("红外视场角")); m_tableModel->setItem(9, 0, new QStandardItem("红外视场角"));
m_tableModel->setItem(10,0,new QStandardItem("激光测距值")); m_tableModel->setItem(10, 0, new QStandardItem("激光测距值"));
m_tableModel->setItem(11,0,new QStandardItem("命令反馈")); m_tableModel->setItem(11, 0, new QStandardItem("命令反馈"));
m_tableModel->setItem(12,0,new QStandardItem("视频输出类型")); m_tableModel->setItem(12, 0, new QStandardItem("视频输出类型"));
m_tableModel->setItem(13,0,new QStandardItem("红外电子变倍")); m_tableModel->setItem(13, 0, new QStandardItem("红外电子变倍"));
m_tableModel->setItem(14,0,new QStandardItem("可见光电子放大")); m_tableModel->setItem(14, 0, new QStandardItem("可见光电子放大"));
m_tableModel->setItem(15,0,new QStandardItem("吊舱框架方位角")); m_tableModel->setItem(15, 0, new QStandardItem("吊舱框架方位角"));
m_tableModel->setItem(16,0,new QStandardItem("吊舱框架俯仰角")); m_tableModel->setItem(16, 0, new QStandardItem("吊舱框架俯仰角"));
m_tableModel->setItem(17,0,new QStandardItem("吊舱框架横滚角")); m_tableModel->setItem(17, 0, new QStandardItem("吊舱框架横滚角"));
m_tableModel->setItem(18,0,new QStandardItem("TF剩余百分比")); m_tableModel->setItem(18, 0, new QStandardItem("TF剩余百分比"));
m_tableModel->setItem(19,0,new QStandardItem("TF卡总容量")); m_tableModel->setItem(19, 0, new QStandardItem("TF卡总容量"));
m_tableModel->setItem(20,0,new QStandardItem("TF插卡状态")); m_tableModel->setItem(20, 0, new QStandardItem("TF插卡状态"));
m_tableModel->setItem(21,0,new QStandardItem("拍照")); m_tableModel->setItem(21, 0, new QStandardItem("拍照"));
m_tableModel->setItem(22,0,new QStandardItem("视频抓图")); m_tableModel->setItem(22, 0, new QStandardItem("视频抓图"));
m_tableModel->setItem(23,0,new QStandardItem("连拍")); m_tableModel->setItem(23, 0, new QStandardItem("连拍"));
m_tableModel->setItem(24,0,new QStandardItem("视频连续抓图")); m_tableModel->setItem(24, 0, new QStandardItem("视频连续抓图"));
m_tableModel->setItem(25,0,new QStandardItem("录像状态")); m_tableModel->setItem(25, 0, new QStandardItem("录像状态"));
m_tableModel->setItem(26,0,new QStandardItem("文件命名")); m_tableModel->setItem(26, 0, new QStandardItem("文件命名"));
m_tableModel->setItem(27,0,new QStandardItem("当前图像反馈")); m_tableModel->setItem(27, 0, new QStandardItem("当前图像反馈"));
m_tableModel->setItem(28,0,new QStandardItem("载荷类型")); m_tableModel->setItem(28, 0, new QStandardItem("载荷类型"));
m_tableModel->setItem(29,0,new QStandardItem("红外机芯")); m_tableModel->setItem(29, 0, new QStandardItem("红外机芯"));
m_tableModel->setItem(30,0,new QStandardItem("可见光机芯")); m_tableModel->setItem(30, 0, new QStandardItem("可见光机芯"));
m_tableModel->setItem(31,0,new QStandardItem("陀螺仪")); m_tableModel->setItem(31, 0, new QStandardItem("陀螺仪"));
m_tableModel->setItem(32,0,new QStandardItem("角度传感器")); m_tableModel->setItem(32, 0, new QStandardItem("角度传感器"));
m_tableModel->setItem(33,0,new QStandardItem("电机")); m_tableModel->setItem(33, 0, new QStandardItem("电机"));
m_tableModel->setItem(34,0,new QStandardItem("压缩")); m_tableModel->setItem(34, 0, new QStandardItem("压缩"));
m_tableModel->setItem(35,0,new QStandardItem("综合控制")); m_tableModel->setItem(35, 0, new QStandardItem("综合控制"));
m_tableModel->setItem(36,0,new QStandardItem("吊舱准备状态")); m_tableModel->setItem(36, 0, new QStandardItem("吊舱准备状态"));
m_tableModel->setItem(37,0,new QStandardItem("红外伪彩")); m_tableModel->setItem(37, 0, new QStandardItem("红外伪彩"));
m_tableModel->setItem(38,0,new QStandardItem("红外图像增强")); m_tableModel->setItem(38, 0, new QStandardItem("红外图像增强"));
m_tableModel->setItem(39,0,new QStandardItem("当前载荷版本")); m_tableModel->setItem(39, 0, new QStandardItem("当前载荷版本"));
m_tableModel->setItem(40,0,new QStandardItem("目标定位经度")); m_tableModel->setItem(40, 0, new QStandardItem("目标定位经度"));
m_tableModel->setItem(41,0,new QStandardItem("目标定位纬度")); m_tableModel->setItem(41, 0, new QStandardItem("目标定位纬度"));
m_tableModel->setItem(42,0,new QStandardItem("目标海拔高度")); m_tableModel->setItem(42, 0, new QStandardItem("目标海拔高度"));
m_tableModel->setItem(43,0,new QStandardItem("姿态指示完成反馈")); m_tableModel->setItem(43, 0, new QStandardItem("姿态指示完成反馈"));
m_tableModel->setItem(44,0,new QStandardItem("目标宽")); m_tableModel->setItem(44, 0, new QStandardItem("目标宽"));
m_tableModel->setItem(45,0,new QStandardItem("目标高")); m_tableModel->setItem(45, 0, new QStandardItem("目标高"));
m_tableModel->setItem(46,0,new QStandardItem("目标类型")); m_tableModel->setItem(46, 0, new QStandardItem("目标类型"));
m_tableModel->setItem(47,0,new QStandardItem("跟踪状态")); m_tableModel->setItem(47, 0, new QStandardItem("跟踪状态"));
m_tableModel->setItem(48,0,new QStandardItem("最高温")); m_tableModel->setItem(48, 0, new QStandardItem("最高温"));
m_tableModel->setItem(49,0,new QStandardItem("配置保存")); m_tableModel->setItem(49, 0, new QStandardItem("配置保存"));
m_tableModel->setItem(50,0,new QStandardItem("伺服状态")); m_tableModel->setItem(50, 0, new QStandardItem("伺服状态"));
m_tableModel->setItem(51,0,new QStandardItem("超温报警")); m_tableModel->setItem(51, 0, new QStandardItem("超温报警"));
m_tableModel->setItem(52,0,new QStandardItem("红点指示")); m_tableModel->setItem(52, 0, new QStandardItem("红点指示"));
//ui->tableViewShowIState->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(255,228,225);color: black;}"); // ui->tableViewShowIState->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(255,228,225);color:
// black;}");
}
// 设置tabwidget的几何位置
void GDDCStateInfo::setTableViewGeometry(int ax, int ay, int aw, int ah) {
ui->tableViewShowIState->setGeometry(ax, ay, aw, ah);
} }
/** /**
* @brief udp * @brief udp
* @param da * @param da
* @param size * @param size
*/ */
void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size) void GDDCStateInfo::UDPMessageReceive(QByteArray &da, int size) {
{
QByteArray data = da; QByteArray data = da;
//data.resize(size); // data.resize(size);
qDebug()<<data.data(); qDebug() << data.data();
if(checkdata(data,data.size(),1)) if (checkdata(data, data.size(), 1)) {
{
QString str; QString str;
double dou; double dou;
float flo; float flo;
//载荷类型 // 载荷类型
switch(data.at(2)) switch (data.at(2)) {
{
case '\x01': case '\x01':
str = "白光"; str = "白光";
break; break;
@ -135,178 +135,158 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = "未知"; str = "未知";
break; break;
} }
m_tableModel->setItem(28,1,new QStandardItem(str)); m_tableModel->setItem(28, 1, new QStandardItem(str));
/*****自检结果*****/ /*****自检结果*****/
//红外机芯 // 红外机芯
if((data.at(3)&'\x01')==0x01){ if ((data.at(3) & '\x01') == 0x01) {
str = "正常"; str = "正常";
} } else {
else{
str = "异常"; str = "异常";
} }
m_tableModel->setItem(29,1,new QStandardItem(str)); m_tableModel->setItem(29, 1, new QStandardItem(str));
//可见光机芯 // 可见光机芯
if((data.at(3)>>1)&'\x01'){ if ((data.at(3) >> 1) & '\x01') {
str = "正常"; str = "正常";
} } else {
else{
str = "异常"; str = "异常";
} }
m_tableModel->setItem(30,1,new QStandardItem(str)); m_tableModel->setItem(30, 1, new QStandardItem(str));
//陀螺仪 // 陀螺仪
if((data.at(3)>>2)&'\x01'){ if ((data.at(3) >> 2) & '\x01') {
str = "正常"; str = "正常";
} } else {
else{
str = "异常"; str = "异常";
} }
m_tableModel->setItem(31,1,new QStandardItem(str)); m_tableModel->setItem(31, 1, new QStandardItem(str));
//角度传感器 // 角度传感器
if((data.at(3)>>3)&'\x01'){ if ((data.at(3) >> 3) & '\x01') {
str = "正常"; str = "正常";
} } else {
else{
str = "异常"; str = "异常";
} }
m_tableModel->setItem(32,1,new QStandardItem(str)); m_tableModel->setItem(32, 1, new QStandardItem(str));
//驱动板-电机 // 驱动板-电机
if((data.at(3)>>4)&'\x01'){ if ((data.at(3) >> 4) & '\x01') {
str = "正常"; str = "正常";
} } else {
else{
str = "异常"; str = "异常";
} }
m_tableModel->setItem(33,1,new QStandardItem(str)); m_tableModel->setItem(33, 1, new QStandardItem(str));
//压缩存储 // 压缩存储
if((data.at(3)>>5)&'\x01'){ if ((data.at(3) >> 5) & '\x01') {
str = "正常"; str = "正常";
} } else {
else{
str = "异常"; str = "异常";
} }
m_tableModel->setItem(34,1,new QStandardItem(str)); m_tableModel->setItem(34, 1, new QStandardItem(str));
//综合处理 // 综合处理
if((data.at(3)>>6)&'\x01'){ if ((data.at(3) >> 6) & '\x01') {
str = "正常"; str = "正常";
} } else {
else{
str = "异常"; str = "异常";
} }
m_tableModel->setItem(35,1,new QStandardItem(str)); m_tableModel->setItem(35, 1, new QStandardItem(str));
//吊舱准备状态 // 吊舱准备状态
if((data.at(3)>>7)&'\x01'){ if ((data.at(3) >> 7) & '\x01') {
str = "已准备好"; str = "已准备好";
} } else {
else{
str = "未准备好"; str = "未准备好";
} }
m_tableModel->setItem(36,1,new QStandardItem(str)); m_tableModel->setItem(36, 1, new QStandardItem(str));
/*****吊舱状态1******/ /*****吊舱状态1******/
//拍照 // 拍照
if(data.at(4)&'\x01'){ if (data.at(4) & '\x01') {
str = "正在拍照"; str = "正在拍照";
} } else {
else{
str = "未拍照"; str = "未拍照";
} }
m_tableModel->setItem(21,1,new QStandardItem(str)); m_tableModel->setItem(21, 1, new QStandardItem(str));
//视频抓图 // 视频抓图
if((data.at(4)>>1)&'\x01'){ if ((data.at(4) >> 1) & '\x01') {
str = "正在抓图"; str = "正在抓图";
} } else {
else{
str = "未抓图"; str = "未抓图";
} }
m_tableModel->setItem(22,1,new QStandardItem(str)); m_tableModel->setItem(22, 1, new QStandardItem(str));
//连拍 // 连拍
if((data.at(4)>>2)&'\x01'){ if ((data.at(4) >> 2) & '\x01') {
str = "正在连拍"; str = "正在连拍";
} } else {
else{
str = "未连拍"; str = "未连拍";
} }
m_tableModel->setItem(23,1,new QStandardItem(str)); m_tableModel->setItem(23, 1, new QStandardItem(str));
//视频连续抓图 // 视频连续抓图
if((data.at(4)>>3)&'\x01'){ if ((data.at(4) >> 3) & '\x01') {
str = "正在连续抓图"; str = "正在连续抓图";
} } else {
else{
str = "未连续抓图"; str = "未连续抓图";
} }
m_tableModel->setItem(24,1,new QStandardItem(str)); m_tableModel->setItem(24, 1, new QStandardItem(str));
//录像状态 // 录像状态
if((data.at(4)>>4)&'\x01'){ if ((data.at(4) >> 4) & '\x01') {
str = "正在录像"; str = "正在录像";
} } else {
else{
str = "未开始录像"; str = "未开始录像";
} }
m_tableModel->setItem(25,1,new QStandardItem(str)); m_tableModel->setItem(25, 1, new QStandardItem(str));
//文件命名 // 文件命名
if((data.at(4)>>5)&'\x01'){ if ((data.at(4) >> 5) & '\x01') {
str = "信息导入完毕"; str = "信息导入完毕";
} } else {
else{
str = "未成功导入"; str = "未成功导入";
} }
m_tableModel->setItem(26,1,new QStandardItem(str)); m_tableModel->setItem(26, 1, new QStandardItem(str));
//TF插卡状态 // TF插卡状态
if((data.at(4)>>6)&'\x01'){ if ((data.at(4) >> 6) & '\x01') {
str = "TF卡已插入"; str = "TF卡已插入";
} } else {
else{
str = "TF卡未插入"; str = "TF卡未插入";
} }
m_tableModel->setItem(20,1,new QStandardItem(str)); m_tableModel->setItem(20, 1, new QStandardItem(str));
//超温报警状态 // 超温报警状态
if((data.at(4)>>7)&'\x01'){ if ((data.at(4) >> 7) & '\x01') {
str = "超温"; str = "超温";
} } else {
else{
str = "未超温"; str = "未超温";
} }
m_tableModel->setItem(51,1,new QStandardItem(str)); m_tableModel->setItem(51, 1, new QStandardItem(str));
//红点指示 // 红点指示
if(data.at(5)&'\x01'){ if (data.at(5) & '\x01') {
str = ""; str = "";
} } else {
else{
str = ""; str = "";
} }
m_tableModel->setItem(52,1,new QStandardItem(str)); m_tableModel->setItem(52, 1, new QStandardItem(str));
//备用 // 备用
//红外图像增强 // 红外图像增强
str = QString::number((data.at(5)>>3)&'\x0F'); str = QString::number((data.at(5) >> 3) & '\x0F');
m_tableModel->setItem(38,1,new QStandardItem(str)); m_tableModel->setItem(38, 1, new QStandardItem(str));
//备用 // 备用
//备用 // 备用
/*****吊舱状态2******/ /*****吊舱状态2******/
//备用 // 备用
//跟踪源类型 // 跟踪源类型
if(data.at(6)&'\x02'){ if (data.at(6) & '\x02') {
str = "可见光"; str = "可见光";
} } else {
else{
str = "红外"; str = "红外";
} }
m_tableModel->setItem(0,1,new QStandardItem(str)); m_tableModel->setItem(0, 1, new QStandardItem(str));
//红外电子变倍 // 红外电子变倍
str = QString::number(((data.at(6)>>2)&'\x7F')*0.1,'f', 1); str = QString::number(((data.at(6) >> 2) & '\x7F') * 0.1, 'f', 1);
m_tableModel->setItem(13,1,new QStandardItem(str)); m_tableModel->setItem(13, 1, new QStandardItem(str));
//配置保存 // 配置保存
if(data.at(7)&'\x01'){ if (data.at(7) & '\x01') {
str = "保存成功"; str = "保存成功";
} } else {
else{
str = "未保存"; str = "未保存";
} }
m_tableModel->setItem(49,1,new QStandardItem(str)); m_tableModel->setItem(49, 1, new QStandardItem(str));
//可见光电子变倍 // 可见光电子变倍
switch((data.at(7)>>1)&'\x03') switch ((data.at(7) >> 1) & '\x03') {
{
case 0: case 0:
str = "1x"; str = "1x";
break; break;
@ -320,10 +300,9 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = "未知"; str = "未知";
break; break;
} }
m_tableModel->setItem(14,1,new QStandardItem(str)); m_tableModel->setItem(14, 1, new QStandardItem(str));
//红外伪彩-色带 // 红外伪彩-色带
switch((data.at(7)>>3)&'\x1F') switch ((data.at(7) >> 3) & '\x1F') {
{
case 0x00: case 0x00:
str = "白热"; str = "白热";
break; break;
@ -364,12 +343,11 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = "未知"; str = "未知";
break; break;
} }
m_tableModel->setItem(37,1,new QStandardItem(str)); m_tableModel->setItem(37, 1, new QStandardItem(str));
/*********伺服状态********/ /*********伺服状态********/
//红外伪彩-色带 // 红外伪彩-色带
switch((data.at(7)>>3)&'\x1F') switch ((data.at(7) >> 3) & '\x1F') {
{
case 0x00: case 0x00:
str = "待命"; str = "待命";
break; break;
@ -419,76 +397,77 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = ""; str = "";
break; break;
} }
m_tableModel->setItem(50,1,new QStandardItem(str)); m_tableModel->setItem(50, 1, new QStandardItem(str));
//吊舱框架方位角 // 吊舱框架方位角
dou = (data.at(9)+data.at(10)*256)*0.01; dou = (data.at(9) + data.at(10) * 256) * 0.01;
str = QString::number(dou,'f', 2); str = QString::number(dou, 'f', 2);
m_tableModel->setItem(15,1,new QStandardItem(str)); m_tableModel->setItem(15, 1, new QStandardItem(str));
//吊舱框架俯仰角 // 吊舱框架俯仰角
dou = (data.at(11)+data.at(12)*256)*0.01; dou = (data.at(11) + data.at(12) * 256) * 0.01;
str = QString::number(dou,'f', 2); str = QString::number(dou, 'f', 2);
m_tableModel->setItem(16,1,new QStandardItem(str)); m_tableModel->setItem(16, 1, new QStandardItem(str));
//吊舱框架横滚角 // 吊舱框架横滚角
dou = (data.at(13)+data.at(14)*256)*0.01; dou = (data.at(13) + data.at(14) * 256) * 0.01;
str = QString::number(dou,'f', 2); str = QString::number(dou, 'f', 2);
m_tableModel->setItem(17,1,new QStandardItem(str)); m_tableModel->setItem(17, 1, new QStandardItem(str));
//当前载荷版本号 // 当前载荷版本号
str = QString::number(data.at(15)>>4) + "." + QString::number(data.at(15)&'\x07'); str = QString::number(data.at(15) >> 4) + "." +
m_tableModel->setItem(39,1,new QStandardItem(str)); QString::number(data.at(15) & '\x07');
//红外视场角 m_tableModel->setItem(39, 1, new QStandardItem(str));
dou = ((UINT8)data[16]+(UINT16)data[17]*256)*0.1; // 红外视场角
str = QString::number(dou,'f', 1); dou = ((UINT8)data[16] + (UINT16)data[17] * 256) * 0.1;
m_tableModel->setItem(9,1,new QStandardItem(str)); str = QString::number(dou, 'f', 1);
//TF使用容量百分比 m_tableModel->setItem(9, 1, new QStandardItem(str));
str = QString::number((UINT8)data.at(18))+"%"; // TF使用容量百分比
m_tableModel->setItem(18,1,new QStandardItem(str)); str = QString::number((UINT8)data.at(18)) + "%";
//可见光视场角 m_tableModel->setItem(18, 1, new QStandardItem(str));
dou = ((UINT8)data.at(19)+(UINT16)data.at(20)*256)*0.1; // 可见光视场角
str = QString::number(dou,'f', 1); dou = ((UINT8)data.at(19) + (UINT16)data.at(20) * 256) * 0.1;
m_tableModel->setItem(7,1,new QStandardItem(str)); str = QString::number(dou, 'f', 1);
//TF卡总容量 m_tableModel->setItem(7, 1, new QStandardItem(str));
dou = ((UINT8)data.at(21)+(UINT16)data.at(22)*256)*0.1; // TF卡总容量
str = QString::number(dou,'f', 1); dou = ((UINT8)data.at(21) + (UINT16)data.at(22) * 256) * 0.1;
m_tableModel->setItem(19,1,new QStandardItem(str)); str = QString::number(dou, 'f', 1);
//红外焦距 m_tableModel->setItem(19, 1, new QStandardItem(str));
dou = ((UINT8)data.at(23)+(UINT16)data.at(24)*256)*0.1; // 红外焦距
str = QString::number(dou,'f', 1); dou = ((UINT8)data.at(23) + (UINT16)data.at(24) * 256) * 0.1;
m_tableModel->setItem(8,1,new QStandardItem(str)); str = QString::number(dou, 'f', 1);
//可见光焦距-白光 m_tableModel->setItem(8, 1, new QStandardItem(str));
dou = ((UINT8)data.at(25)+(UINT16)data.at(26)*256)*0.1; // 可见光焦距-白光
str = QString::number(dou,'f', 1); dou = ((UINT8)data.at(25) + (UINT16)data.at(26) * 256) * 0.1;
m_tableModel->setItem(6,1,new QStandardItem(str)); str = QString::number(dou, 'f', 1);
//激光测距距离 m_tableModel->setItem(6, 1, new QStandardItem(str));
str = QString::number((UINT8)data.at(27)+(UINT16)data.at(28)*256); // 激光测距距离
m_tableModel->setItem(10,1,new QStandardItem(str)); str = QString::number((UINT8)data.at(27) + (UINT16)data.at(28) * 256);
//目标定位经度 m_tableModel->setItem(10, 1, new QStandardItem(str));
flo = m_uint32_to_float(data.at(29),data.at(30),data.at(31),data.at(32)); // 目标定位经度
str = QString::number(flo,'f',6); flo = m_uint32_to_float(data.at(29), data.at(30), data.at(31), data.at(32));
m_tableModel->setItem(40,1,new QStandardItem(str)); str = QString::number(flo, 'f', 6);
//目标定位纬度 m_tableModel->setItem(40, 1, new QStandardItem(str));
flo = m_uint32_to_float(data.at(33),data.at(34),data.at(35),data.at(36)); // 目标定位纬度
str = QString::number(flo,'f',6); flo = m_uint32_to_float(data.at(33), data.at(34), data.at(35), data.at(36));
m_tableModel->setItem(41,1,new QStandardItem(str)); str = QString::number(flo, 'f', 6);
//目标海拔高度 m_tableModel->setItem(41, 1, new QStandardItem(str));
str = QString::number(data.at(37)+data.at(38)*256); // 目标海拔高度
m_tableModel->setItem(42,1,new QStandardItem(str)); str = QString::number(data.at(37) + data.at(38) * 256);
//最高温-温度 m_tableModel->setItem(42, 1, new QStandardItem(str));
// 最高温-温度
// dou = (data.at(39)+data.at(40)*256)*0.1; // dou = (data.at(39)+data.at(40)*256)*0.1;
// str = QString::number(dou,'f',1); // str = QString::number(dou,'f',1);
// m_tableModel->setItem(42,1,new QStandardItem(str)); // m_tableModel->setItem(42,1,new QStandardItem(str));
//吊舱姿态方位角 // 吊舱姿态方位角
dou = (data.at(41)+data.at(42)*256)*0.01; dou = (data.at(41) + data.at(42) * 256) * 0.01;
str = QString::number(dou,'f',2); str = QString::number(dou, 'f', 2);
m_tableModel->setItem(1,1,new QStandardItem(str)); m_tableModel->setItem(1, 1, new QStandardItem(str));
//吊舱姿态俯仰角 // 吊舱姿态俯仰角
dou = (data.at(43)+data.at(44)*256)*0.01; dou = (data.at(43) + data.at(44) * 256) * 0.01;
str = QString::number(dou,'f',2); str = QString::number(dou, 'f', 2);
m_tableModel->setItem(2,1,new QStandardItem(str)); m_tableModel->setItem(2, 1, new QStandardItem(str));
//吊舱姿态横滚角 // 吊舱姿态横滚角
dou = (data.at(45)+data.at(46)*256)*0.01; dou = (data.at(45) + data.at(46) * 256) * 0.01;
str = QString::number(dou,'f',2); str = QString::number(dou, 'f', 2);
m_tableModel->setItem(3,1,new QStandardItem(str)); m_tableModel->setItem(3, 1, new QStandardItem(str));
//当前显示图像反馈 // 当前显示图像反馈
switch (data.at(47)) { switch (data.at(47)) {
case 0x00: case 0x00:
str = "红外"; str = "红外";
@ -512,11 +491,11 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = "未知"; str = "未知";
break; break;
} }
m_tableModel->setItem(27,1,new QStandardItem(str)); m_tableModel->setItem(27, 1, new QStandardItem(str));
//接收到的命令字反馈 // 接收到的命令字反馈
str = QString::number(data.at(48)); str = QString::number(data.at(48));
m_tableModel->setItem(11,1,new QStandardItem(str)); m_tableModel->setItem(11, 1, new QStandardItem(str));
//姿态指示完成反馈 // 姿态指示完成反馈
switch (data.at(49)) { switch (data.at(49)) {
case 0x12: case 0x12:
str = "姿态指示中"; str = "姿态指示中";
@ -528,44 +507,42 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = "------"; str = "------";
break; break;
} }
m_tableModel->setItem(43,1,new QStandardItem(str)); m_tableModel->setItem(43, 1, new QStandardItem(str));
//跟踪中心点宽方向坐标 // 跟踪中心点宽方向坐标
str = QString::number((UINT8)data[50]+(UINT16)data[51]*256); str = QString::number((UINT8)data[50] + (UINT16)data[51] * 256);
m_tableModel->setItem(4,1,new QStandardItem(str)); m_tableModel->setItem(4, 1, new QStandardItem(str));
//跟踪中心点高方向坐标 // 跟踪中心点高方向坐标
str = QString::number((UINT8)data[52]+(UINT16)data[53]*256); str = QString::number((UINT8)data[52] + (UINT16)data[53] * 256);
m_tableModel->setItem(5,1,new QStandardItem(str)); m_tableModel->setItem(5, 1, new QStandardItem(str));
//目标宽 // 目标宽
str = QString::number((UINT8)data.at(54)+data.at(55)*256); str = QString::number((UINT8)data.at(54) + data.at(55) * 256);
m_tableModel->setItem(44,1,new QStandardItem(str)); m_tableModel->setItem(44, 1, new QStandardItem(str));
//目标高 // 目标高
str = QString::number((UINT8)data.at(56)+data.at(57)*256); str = QString::number((UINT8)data.at(56) + data.at(57) * 256);
m_tableModel->setItem(45,1,new QStandardItem(str)); m_tableModel->setItem(45, 1, new QStandardItem(str));
//目标类型 // 目标类型
switch (data.at(58)) { switch (data.at(58)) {
case 0x00: case 0x00:
if(data.at(6)&'\x02'){//可见光 if (data.at(6) & '\x02') { // 可见光
str = ""; str = "";
} } else { // 红外
else{//红外
str = ""; str = "";
} }
break; break;
case 0x01: case 0x01:
if(data.at(6)&'\x02'){//可见光 if (data.at(6) & '\x02') { // 可见光
str = "小汽车"; str = "小汽车";
} } else { // 红外
else{//红外
str = ""; str = "";
} }
break; break;
case 0x02: case 0x02:
if(data.at(6)&'\x02'){//可见光 if (data.at(6) & '\x02') { // 可见光
str = "公交车"; str = "公交车";
} }
break; break;
case 0x03: case 0x03:
if(data.at(6)&'\x02'){//可见光 if (data.at(6) & '\x02') { // 可见光
str = "卡车"; str = "卡车";
} }
break; break;
@ -573,8 +550,8 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = "未知"; str = "未知";
break; break;
} }
m_tableModel->setItem(46,1,new QStandardItem(str)); m_tableModel->setItem(46, 1, new QStandardItem(str));
//跟踪状态 // 跟踪状态
switch (data.at(59)) { switch (data.at(59)) {
case 0x00: case 0x00:
str = "空闲状态"; str = "空闲状态";
@ -595,37 +572,32 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da,int size)
str = "未知"; str = "未知";
break; break;
} }
m_tableModel->setItem(47,1,new QStandardItem(str)); m_tableModel->setItem(47, 1, new QStandardItem(str));
//最高温 // 最高温
dou = (data.at(60)+data.at(61)*256)*0.1; dou = (data.at(60) + data.at(61) * 256) * 0.1;
str = QString::number(dou,'f',1)+""; str = QString::number(dou, 'f', 1) + "";
m_tableModel->setItem(48,1,new QStandardItem(str)); m_tableModel->setItem(48, 1, new QStandardItem(str));
// //
} }
} }
bool GDDCStateInfo::checkdata(QByteArray buffer,int length, int type) bool GDDCStateInfo::checkdata(QByteArray buffer, int length, int type) {
{ if (length != 64) {
if(length!=64){
return false; return false;
} }
if((buffer.at(0) != '\xFC')||(buffer.at(1) != '\x2C')||buffer.at(63) !='\xF0') if ((buffer.at(0) != '\xFC') || (buffer.at(1) != '\x2C') ||
{ buffer.at(63) != '\xF0') {
return false; return false;
} }
if(type==1) if (type == 1) {
{ // 亦或校验
//亦或校验
// for(int i = 2;i<62;++i) // for(int i = 2;i<62;++i)
// { // {
// buffer.at(i)^buffer.at(i+1); // buffer.at(i)^buffer.at(i+1);
// } // }
} } else if (type == 2) {
else if (type==2) // 和校验
{
//和校验
} }
return true; return true;
} }

@ -1,69 +1,68 @@
#ifndef GDDCSTATEINFO_H #ifndef GDDCSTATEINFO_H
#define GDDCSTATEINFO_H #define GDDCSTATEINFO_H
#include <QWidget> #include "basetsd.h"
#include <QUdpSocket>
#include <QHostAddress>
#include <QNetworkDatagram>
#include <QByteArray> #include <QByteArray>
#include <QTimer>
#include <QMouseEvent>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <QHeaderView> #include <QHeaderView>
#include <QHostAddress>
#include <QMouseEvent>
#include <QNetworkDatagram>
#include <QStandardItemModel> #include <QStandardItemModel>
#include "basetsd.h" #include <QTimer>
#include <QUdpSocket>
#include <QWidget>
namespace Ui { namespace Ui {
class GDDCStateInfo; class GDDCStateInfo;
} }
class GDDCStateInfo : public QWidget class GDDCStateInfo : public QWidget {
{
Q_OBJECT Q_OBJECT
public: public:
explicit GDDCStateInfo(QWidget *parent = nullptr); explicit GDDCStateInfo(QWidget *parent = nullptr);
~GDDCStateInfo(); ~GDDCStateInfo();
public: private:
Ui::GDDCStateInfo *ui; Ui::GDDCStateInfo *ui;
public: public:
void initParam(); //初始化参数 void initParam(); // 初始化参数
public: public:
// 设置TableView的几何位置
void setTableViewGeometry(int ax, int ay, int aw, int ah);
QStandardItemModel *m_tableModel; QStandardItemModel *m_tableModel;
/*数据校验 /*数据校验
* *
* *
* 12 * 12
*/ */
bool checkdata(QByteArray,int,int); bool checkdata(QByteArray, int, int);
void UDPMessageReceive(QByteArray&,int); //udp数据接收 void UDPMessageReceive(QByteArray &, int); // udp数据接收
typedef union typedef union {
{
float float_value; float float_value;
UINT8 uint8[4]; UINT8 uint8[4];
}packet_uint32_to_float; } packet_uint32_to_float;
float m_uint32_to_float(UINT8 value4, UINT8 value3, UINT8 value2, UINT8 value1) float m_uint32_to_float(UINT8 value4, UINT8 value3, UINT8 value2,
{ UINT8 value1) {
packet_uint32_to_float packet; packet_uint32_to_float packet;
UINT8 buf[4]; memset(buf,0x00,sizeof(buf)); UINT8 buf[4];
memset(buf, 0x00, sizeof(buf));
buf[0] = (UINT8)((value1) & 0xFF); buf[0] = (UINT8)((value1) & 0xFF);
buf[1] = (UINT8)((value2) & 0xFF); buf[1] = (UINT8)((value2) & 0xFF);
buf[2] = (UINT8)((value3) & 0xFF); buf[2] = (UINT8)((value3) & 0xFF);
buf[3] = (UINT8)((value4) & 0xFF); buf[3] = (UINT8)((value4) & 0xFF);
UINT32 uint32 = ((buf[0]<<24) & 0XFFFFFFFF) + ((buf[1]<<16) & 0XFFFFFF) + ((buf[2]<<8) & 0XFFFF) + buf[3]; UINT32 uint32 = ((buf[0] << 24) & 0XFFFFFFFF) +
((buf[1] << 16) & 0XFFFFFF) + ((buf[2] << 8) & 0XFFFF) +
buf[3];
for(UINT8 i = 0; i < 4; i++) for (UINT8 i = 0; i < 4; i++) {
{ packet.uint8[i] = (UINT8)(uint32 >> (i * 8));
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); // print("modbus_uint32_to_float uint32=%d, value1=%d; value2=%d;
// float_value = %f;",uint32,value1,value2,packet.float_value);
return packet.float_value; return packet.float_value;
} }
}; };

@ -86,7 +86,6 @@ void GDDCdlg::initParam() {
Is_openVideo = false; Is_openVideo = false;
isCmdPageShow = true; isCmdPageShow = true;
isStatePageShow = true; isStatePageShow = true;
m_DCcmdBuffer.resize(cmdLength);
detectionAreaSetting = false; detectionAreaSetting = false;
connectFlag.resize(12, false); connectFlag.resize(12, false);
} }
@ -197,8 +196,8 @@ void GDDCdlg::mousePressEvent(QMouseEvent *event) {
double b = ui->WgtffmpegVideo->height(); double b = ui->WgtffmpegVideo->height();
double dir = 1920 / a * widgetPoint.rx() - 960; double dir = 1920 / a * widgetPoint.rx() - 960;
double pitch = -(1080 / b * widgetPoint.ry() - 540); double pitch = -(1080 / b * widgetPoint.ry() - 540);
m_GDDCCmdDlg->ui->lineEdit_6_1->setText(QString::number((int)dir)); m_GDDCCmdDlg->setAIDetcLineEditText(QString::number((int)dir),
m_GDDCCmdDlg->ui->lineEdit_6_2->setText(QString::number((int)pitch)); QString::number((int)pitch));
} }
// 目标跟踪 // 目标跟踪
if (m_GDDCCmdDlg->pointSelectionTracking == true) { if (m_GDDCCmdDlg->pointSelectionTracking == true) {
@ -221,15 +220,15 @@ void GDDCdlg::mousePressEvent(QMouseEvent *event) {
buffer[9] = (std::byte)0x00; buffer[9] = (std::byte)0x00;
// 发送5次 // 发送5次
sendCurDate(buffer, 3); m_GDDCCmdDlg->sendCurDate(buffer, 3);
} }
} }
} }
// 鼠标移动 // 鼠标移动
void GDDCdlg::mouseMoveEvent(QMouseEvent *event) { void GDDCdlg::mouseMoveEvent(QMouseEvent *event) {
if (m_GDDCCmdDlg->detectionAreaSetting == true) { if (m_GDDCCmdDlg->detectionAreaSetting == true) {
qDebug() << this->geometry().x(); // qDebug() << this->geometry().x();
qDebug() << this->geometry().y(); // qDebug() << this->geometry().y();
QPointF sPoint1 = event->globalPosition(); QPointF sPoint1 = event->globalPosition();
// qDebug()<<"相对于屏幕坐标1:"<<"("<<sPoint1.rx()<<","<<sPoint1.ry()<<")"; // qDebug()<<"相对于屏幕坐标1:"<<"("<<sPoint1.rx()<<","<<sPoint1.ry()<<")";
@ -247,8 +246,8 @@ void GDDCdlg::mouseMoveEvent(QMouseEvent *event) {
double b = ui->WgtffmpegVideo->height(); double b = ui->WgtffmpegVideo->height();
double dir = 1920 / a * widgetPoint.rx() - 960; double dir = 1920 / a * widgetPoint.rx() - 960;
double pitch = -(1080 / b * widgetPoint.ry() - 540); double pitch = -(1080 / b * widgetPoint.ry() - 540);
m_GDDCCmdDlg->ui->lineEdit_6_1->setText(QString::number((int)dir)); m_GDDCCmdDlg->setAIDetcLineEditText(QString::number((int)dir),
m_GDDCCmdDlg->ui->lineEdit_6_2->setText(QString::number((int)pitch)); QString::number((int)pitch));
} }
} }
// 区域重绘 // 区域重绘
@ -284,8 +283,7 @@ void GDDCdlg::resizeUI() {
} }
m_GDDCCmdDlg->setGeometry(0, GDDCPageHeight - cmdAreaHeight, m_GDDCCmdDlg->setGeometry(0, GDDCPageHeight - cmdAreaHeight,
(int)cmdAreaWidth, (int)cmdAreaHeight); (int)cmdAreaWidth, (int)cmdAreaHeight);
m_GDDCCmdDlg->ui->tabWidget->setGeometry(0, 0, (int)cmdAreaWidth, m_GDDCCmdDlg->setTabWidgetGeometry(0, 0, cmdAreaWidth, cmdAreaHeight);
(int)cmdAreaHeight);
/*********状态区位置和大小设置***********/ /*********状态区位置和大小设置***********/
double stateAreaHeight = GDDCPageHeight; double stateAreaHeight = GDDCPageHeight;
@ -297,8 +295,7 @@ void GDDCdlg::resizeUI() {
} }
m_GDDCStateDlg->setGeometry(GDDCPageWidth - stateAreaWidth, 0, stateAreaWidth, m_GDDCStateDlg->setGeometry(GDDCPageWidth - stateAreaWidth, 0, stateAreaWidth,
stateAreaHeight); stateAreaHeight);
m_GDDCStateDlg->ui->tableViewShowIState->setGeometry(0, 0, stateAreaWidth, m_GDDCStateDlg->setTableViewGeometry(0, 0, stateAreaWidth, stateAreaHeight);
stateAreaHeight);
/*******视频区位置和大小设置********/ /*******视频区位置和大小设置********/
double VideoAreaHeight = GDDCPageHeight - cmdAreaHeight; // 视频区高度 double VideoAreaHeight = GDDCPageHeight - cmdAreaHeight; // 视频区高度
@ -339,12 +336,12 @@ void GDDCdlg::resizeUI() {
// 定时器处理 // 定时器处理
void GDDCdlg::GDDCControlTimeOut() { void GDDCdlg::GDDCControlTimeOut() {
if (sendTimes > 0) { if (m_GDDCCmdDlg->sendTimes > 0) {
sendTimes -= 1; m_GDDCCmdDlg->sendTimes -= 1;
// UDP控制 // UDP控制
if (connectFlag[3]) { if (connectFlag[3]) {
udpSocket->writeDatagram(m_DCcmdBuffer, udpSocket->writeDatagram(m_GDDCCmdDlg->m_DCcmdBuffer,
m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(), m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),
m_DlgGDDCSet->m_myPairNetwork.getRemotePort()); m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
} }
@ -352,15 +349,14 @@ void GDDCdlg::GDDCControlTimeOut() {
// 串口控制 // 串口控制
if (sendTimes == 0) { if (m_GDDCCmdDlg->sendTimes == 0) {
clearTJDCCmdBuffer(); m_GDDCCmdDlg->clearTJDCCmdBuffer();
} }
} else { } else {
UpdateDataTJDC(); m_GDDCCmdDlg->UpdateDataTJDC();
// UDP控制 // UDP控制
if (connectFlag[3]) { if (connectFlag[3]) {
udpSocket->writeDatagram(m_DCcmdBuffer, udpSocket->writeDatagram(m_GDDCCmdDlg->m_DCcmdBuffer,
m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(), m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),
m_DlgGDDCSet->m_myPairNetwork.getRemotePort()); m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
} }
@ -371,24 +367,6 @@ void GDDCdlg::GDDCControlTimeOut() {
} }
} }
// 更新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 // 播放视频1
void GDDCdlg::startConnectURL1() { void GDDCdlg::startConnectURL1() {
if (!connectFlag[0]) { if (!connectFlag[0]) {

@ -1,26 +1,26 @@
#ifndef GDDCDLG_H #ifndef GDDCDLG_H
#define GDDCDLG_H #define GDDCDLG_H
#include <QWidget> #include "Src/GDDC/gddcSet.h"
#include <QUdpSocket> // #include "Src/Video/cffmpeg_decode.h"
#include "gddcCmdDlg.h" //吊舱控制对话框
#include <QByteArray>
#include <QHeaderView>
#include <QHostAddress> #include <QHostAddress>
#include <QMouseEvent>
#include <QNetworkDatagram> #include <QNetworkDatagram>
#include <QByteArray> #include <QStandardItemModel>
#include <QTimer> #include <QTimer>
#include <QMouseEvent> #include <QUdpSocket>
#include <QWidget>
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
#include <string> #include <string>
#include "Src/Video/cffmpeg_decode.h"
#include "Src/GDDC/gddcSet.h"
#include <vector> #include <vector>
#include <QHeaderView> // #include "ui_gddcCmdDlg.h" //吊舱控制对话框ui
#include <QStandardItemModel>
#include "gddcCmdDlg.h" //吊舱控制对话框
#include "ui_gddcCmdDlg.h" //吊舱控制对话框ui
#include "gddcStateInfo.h" //吊舱状态信息显示对话框 #include "gddcStateInfo.h" //吊舱状态信息显示对话框
#include "ui_gddcStateInfo.h" //吊舱状态信息显示对话框 // #include "ui_gddcStateInfo.h" //吊舱状态信息显示对话框
#include "ui_gddcSet.h" // #include "ui_gddcSet.h"
#include "QProcess" #include "QProcess"
#include <QThread> #include <QThread>
#define cmdLength 44 #define cmdLength 44
@ -28,48 +28,44 @@ namespace Ui {
class GDDCdlg; class GDDCdlg;
} }
class GDDCdlg : public QWidget class GDDCdlg : public QWidget {
{
Q_OBJECT Q_OBJECT
public: public:
explicit GDDCdlg(QWidget *parent = nullptr); explicit GDDCdlg(QWidget *parent = nullptr);
~GDDCdlg(); ~GDDCdlg();
private: private:
Ui::GDDCdlg *ui; Ui::GDDCdlg *ui;
QTimer *GDDCControlTimer; QTimer *GDDCControlTimer;
protected: protected:
void resizeEvent(QResizeEvent *event); void resizeEvent(QResizeEvent *event);
public: public:
void initWindow(); //初始化窗口 void initWindow(); // 初始化窗口
void initParam(); //初始化参数 void initParam(); // 初始化参数
void initSignalSlot(); //初始化信号与槽 void initSignalSlot(); // 初始化信号与槽
void resizeUI(); //重新设置布局 void resizeUI(); // 重新设置布局
GDDCSet *m_DlgGDDCSet; //光电吊舱设置对话框 GDDCSet *m_DlgGDDCSet; // 光电吊舱设置对话框
GDDCCmdDlg *m_GDDCCmdDlg; //光电吊舱控制对话框 GDDCCmdDlg *m_GDDCCmdDlg; // 光电吊舱控制对话框
GDDCStateInfo *m_GDDCStateDlg;//光电吊舱状态数据对话框 GDDCStateInfo *m_GDDCStateDlg; // 光电吊舱状态数据对话框
public: public:
QByteArray m_DCcmdBuffer;//存储吊舱控制指令 // socket对象
void UpdateDataTJDC();
void clearTJDCCmdBuffer();
int sendTimes;//计划发送次数
void sendCurDate(std::byte *,int);//发送当前数据:内容,发送次数
//socket对象
QUdpSocket *udpSocket; QUdpSocket *udpSocket;
// QString RemoteIP; //目标IP // QString RemoteIP; //目标IP
// QHostAddress RemoteAddr; //目标地址 // QHostAddress RemoteAddr; //目标地址
// quint16 RemotePort; //目标port // quint16 RemotePort; //目标port
QString localIP; //本地IP QString localIP; // 本地IP
QHostAddress localAddr; //本地地址 QHostAddress localAddr; // 本地地址
quint16 localPort; //本地port quint16 localPort; // 本地port
QProcess* process; //执行CMD QProcess *process; // 执行CMD
QThread workerThread; //线程 QThread workerThread; // 线程
//bool eventFilter(QObject *,QEvent *); //事件过滤器 // bool eventFilter(QObject *,QEvent *); //事件过滤器
void mousePressEvent(QMouseEvent *event); //事件过滤器 void mousePressEvent(QMouseEvent *event); // 事件过滤器
void mouseMoveEvent(QMouseEvent *event); //事件过滤器 void mouseMoveEvent(QMouseEvent *event); // 事件过滤器
void startConnectURL1(); void startConnectURL1();
void stopConnectURL1(); void stopConnectURL1();
@ -83,18 +79,19 @@ public:
void stopConnectTCPCtrl(); void stopConnectTCPCtrl();
void startPushURL(); void startPushURL();
void stopPushURL(); void stopPushURL();
public: public:
bool pointSelectionTracking; //选点跟踪 bool pointSelectionTracking; // 选点跟踪
bool Is_openVideo; //视频是否已打开,默认未打开 bool Is_openVideo; // 视频是否已打开,默认未打开
std::vector<bool> connectFlag; // 0视频流11视频流22串口通信3网口通信 std::vector<bool> connectFlag; // 0视频流11视频流22串口通信3网口通信
bool isCmdPageShow; //控制页是否显示 bool isCmdPageShow; // 控制页是否显示
bool isStatePageShow; //状态页是否显示 bool isStatePageShow; // 状态页是否显示
bool detectionAreaSetting; //检测区域设置 bool detectionAreaSetting; // 检测区域设置
public slots: public slots:
void GDDCControlTimeOut(); void GDDCControlTimeOut();
void startConnect(int); //开始连接 void startConnect(int); // 开始连接
void stopConnect(int); //停止连接 void stopConnect(int); // 停止连接
void UDPMessageReceive(); //udp数据接收 void UDPMessageReceive(); // udp数据接收
void pushButtonSet_clicked(); void pushButtonSet_clicked();
void pushButShowCmdPage_clicked(); void pushButShowCmdPage_clicked();
void pushButShowStatePage_clicked(); void pushButShowStatePage_clicked();

Loading…
Cancel
Save