perf:优化光电吊舱人机交互,新增主页面指示灯,修复数组越界bug

main
wanghaoyu 1 month ago
parent 35eca6680c
commit 4f393a581c

@ -348,7 +348,7 @@ void GDDCCmdDlg::on_pushButton_3_4_released() {
clearTJDCCmdBuffer(); clearTJDCCmdBuffer();
TJDCCmdBuffer[0] = (std::byte)0x45; TJDCCmdBuffer[0] = (std::byte)0x45;
TJDCCmdBuffer[1] = (std::byte)0x00; TJDCCmdBuffer[1] = (std::byte)0x00;
sendCurDate(TJDCCmdBuffer, 1); sendCurDate(TJDCCmdBuffer, 3);
} }
// 变倍- // 变倍-

@ -97,7 +97,7 @@
<rect> <rect>
<x>174</x> <x>174</x>
<y>150</y> <y>150</y>
<width>161</width> <width>168</width>
<height>106</height> <height>106</height>
</rect> </rect>
</property> </property>

@ -584,9 +584,9 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da, int size) {
} }
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') || if ((buffer.at(0) != '\xFC') || (buffer.at(1) != '\x2C') ||
buffer.at(63) != '\xF0') { buffer.at(63) != '\xF0') {
return false; return false;

@ -11,6 +11,7 @@
#include <iostream> #include <iostream>
#include <QPixmap> #include <QPixmap>
#include "ui_gddcdlg.h" #include "ui_gddcdlg.h"
#include <QWidget>
#pragma comment(lib, "Wtsapi32.lib") #pragma comment(lib, "Wtsapi32.lib")
using namespace std; using namespace std;
@ -311,12 +312,35 @@ void GDDCdlg::mouseMoveEvent(QMouseEvent *event) {
QPointF diff = event->pos() - _dragStartPositon; QPointF diff = event->pos() - _dragStartPositon;
qDebug() << "x:" << diff.x() <<"y:" <<diff.y(); qDebug() << "x:" << diff.x() <<"y:" <<diff.y();
m_GDDCCmdDlg->setMoveParm(diff); m_GDDCCmdDlg->setMoveParm(diff);
if(diff.x() > 5 || diff.y() >5)//像素点超过5ptx才算移动否则为跟踪
{
_moveFlag = true; _moveFlag = true;
firstLocation->move((_dragStartPositon - QPoint(firstLocation->width()/2, firstLocation->height()/2)).toPoint()); firstLocation->move((_dragStartPositon - QPoint(firstLocation->width()/2, firstLocation->height()/2)).toPoint());
lastLocation->move(event->pos() - QPoint(lastLocation->width() / 2, lastLocation->height() / 2)); lastLocation->move(event->pos() - QPoint(lastLocation->width() / 2, lastLocation->height() / 2));
firstLocation->show(); firstLocation->show();
lastLocation->show(); lastLocation->show();
} }
QPointF widgetPos = mapFromGlobal(event->globalPosition());
//如果移动的时候超过了画面显示区域,则自动退出伺服控制
if(!ui->WgtffmpegVideo->rect().contains(widgetPos.toPoint()))
{
_moveFlag = false;
std::byte buffer[10] = {static_cast<std::byte>(0)};
buffer[5] = (std::byte)0x70;
buffer[6] = (std::byte)0x00;
buffer[7] = (std::byte)0x00;
buffer[8] = (std::byte)0x00;
buffer[9] = (std::byte)0x00;
// 发送3次
m_GDDCCmdDlg->sendCurDate(buffer, 3);
firstLocation->hide();
lastLocation->hide();
}
}
} }
void GDDCdlg::mouseReleaseEvent(QMouseEvent *event) void GDDCdlg::mouseReleaseEvent(QMouseEvent *event)
@ -326,7 +350,7 @@ void GDDCdlg::mouseReleaseEvent(QMouseEvent *event)
if(event->button() == Qt::LeftButton && _moveFlag) if(event->button() == Qt::LeftButton && _moveFlag)
{ {
_moveFlag = false; _moveFlag = false;
std::byte buffer[10]; std::byte buffer[10] = {static_cast<std::byte>(0)};
buffer[5] = (std::byte)0x70; buffer[5] = (std::byte)0x70;
buffer[6] = (std::byte)0x00; buffer[6] = (std::byte)0x00;
buffer[7] = (std::byte)0x00; buffer[7] = (std::byte)0x00;

@ -101,6 +101,8 @@ void deviceStateDlg::initParam() {
cmdlist[2] << "/c" << "ping" << "www.baidu.com -n 2"; cmdlist[2] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[3] << "/c" << "ping" << "www.baidu.com -n 2"; cmdlist[3] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[4] << "/c" << "ping" << "www.baidu.com -n 2"; cmdlist[4] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[5] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[6] << "/c" << "ping" << "www.baidu.com -n 2";
startNetDetn(); startNetDetn();
} }
@ -148,6 +150,22 @@ void deviceStateDlg::receiveResult(int id, QString result,QString delay) {
} }
ui->pushButton_state_3DCamra->setToolTip(delay); ui->pushButton_state_3DCamra->setToolTip(delay);
break; break;
case 5:
if (result == "在线") {
ui->pushButton_state_rescue->setIcon(m_greenIcon);
} else {
ui->pushButton_state_rescue->setIcon(m_redIcon);
}
ui->pushButton_state_rescue->setToolTip(delay);
break;
case 6:
if (result == "在线") {
ui->pushButton_state_PDT->setIcon(m_greenIcon);
} else {
ui->pushButton_state_PDT->setIcon(m_redIcon);
}
ui->pushButton_state_PDT->setToolTip(delay);
break;
default: default:
break; break;
} }
@ -191,6 +209,20 @@ void deviceStateDlg::setDeviceIP(int id, settingStruct param) {
cmdlist[4] << strIp; cmdlist[4] << strIp;
m_networkDetection[4]->DyChangeCmdList(cmdlist[4]); // 更新到网络检测线程 m_networkDetection[4]->DyChangeCmdList(cmdlist[4]); // 更新到网络检测线程
break; break;
case HomePageSetingWidget::RescueLoading:
strIp = stringIPSelect(param.url);
strIp="/c ping " + strIp + " -n 1";
cmdlist[5].clear();
cmdlist[5] << strIp;
m_networkDetection[5]->DyChangeCmdList(cmdlist[5]); // 更新到网络检测线程
break;
case HomePageSetingWidget::PdtLoading:
strIp = stringIPSelect(param.url);
strIp="/c ping " + strIp + " -n 1";
cmdlist[6].clear();
cmdlist[6] << strIp;
m_networkDetection[6]->DyChangeCmdList(cmdlist[6]); // 更新到网络检测线程
break;
default: default:
break; break;
} }
@ -228,11 +260,13 @@ QString deviceStateDlg::stringIPSelect(QString str) {
void deviceStateDlg::setUrl( void deviceStateDlg::setUrl(
std::unordered_map<QString, settingStruct> &urlMap) { std::unordered_map<QString, settingStruct> &urlMap) {
m_urlMap = urlMap; m_urlMap = urlMap;
setDeviceIP(HomePageSetingWidget::GDDC, m_urlMap["光电吊舱"]); setDeviceIP(HomePageSetingWidget::GDDC, m_urlMap["Pod"]);
setDeviceIP(HomePageSetingWidget::L_Link, m_urlMap["L链"]); setDeviceIP(HomePageSetingWidget::L_Link, m_urlMap["L-Link"]);
setDeviceIP(HomePageSetingWidget::Adhoc_Network, m_urlMap["宽带自组网"]); setDeviceIP(HomePageSetingWidget::Adhoc_Network, m_urlMap["HocNetwork"]);
setDeviceIP(HomePageSetingWidget::Satelite_Comm, m_urlMap["机载卫通"]); setDeviceIP(HomePageSetingWidget::Satelite_Comm, m_urlMap["SatelliteComm"]);
setDeviceIP(HomePageSetingWidget::ModelCamera, m_urlMap["三维建模"]); setDeviceIP(HomePageSetingWidget::ModelCamera, m_urlMap["ModelCamera"]);
setDeviceIP(HomePageSetingWidget::RescueLoading, m_urlMap["RescueLoading"]);
setDeviceIP(HomePageSetingWidget::PdtLoading, m_urlMap["PdtLoading"]);
} }
// 开始网络监测 // 开始网络监测
void deviceStateDlg::startNetDetn() { void deviceStateDlg::startNetDetn() {

@ -7,7 +7,7 @@
#include <QThread> #include <QThread>
#include <QTimer> #include <QTimer>
#include <QWidget> #include <QWidget>
#define deviceNum 5 #define deviceNum 7
namespace Ui { namespace Ui {
class deviceStateDlg; class deviceStateDlg;
} }
@ -52,6 +52,8 @@ public:
// 2 自组网 // 2 自组网
// 3ku卫通 // 3ku卫通
// 4三维相机 // 4三维相机
// 5 搜救载荷
// 6 PDT
QStringList cmdlist[deviceNum]; QStringList cmdlist[deviceNum];
QIcon m_greyIcon,m_greenIcon,m_redIcon; QIcon m_greyIcon,m_greenIcon,m_redIcon;
networkDetection *m_networkDetection[deviceNum]; networkDetection *m_networkDetection[deviceNum];

@ -22,6 +22,8 @@ void HomePageSetingWidget::init() {
_lLink.url = _configIni->value("L-Link/IP").toString(); _lLink.url = _configIni->value("L-Link/IP").toString();
_adHocNetwork.url = _configIni->value("HocNetwork/IP").toString(); _adHocNetwork.url = _configIni->value("HocNetwork/IP").toString();
_satelliteComm.url = _configIni->value("SatelliteComm/IP").toString(); _satelliteComm.url = _configIni->value("SatelliteComm/IP").toString();
_rescueLoad.url = _configIni->value("RescueLoading/IP").toString();
_pdtLoad.url = _configIni->value("PdtLoading/IP").toString();
_ModelCamera.net.remoteIp = _ModelCamera.net.remoteIp =
_configIni->value("ModelCamera/remoteIp").toString(); _configIni->value("ModelCamera/remoteIp").toString();
_ModelCamera.net.remotePort = _ModelCamera.net.remotePort =
@ -37,12 +39,16 @@ void HomePageSetingWidget::init() {
_allParamMap.insert({"HocNetwork", _adHocNetwork}); _allParamMap.insert({"HocNetwork", _adHocNetwork});
_allParamMap.insert({"SatelliteComm", _satelliteComm}); _allParamMap.insert({"SatelliteComm", _satelliteComm});
_allParamMap.insert({"ModelCamera", _ModelCamera}); _allParamMap.insert({"ModelCamera", _ModelCamera});
_allParamMap.insert({"RescueLoading", _rescueLoad});
_allParamMap.insert({"PdtLoading", _pdtLoad});
// 显示到配置页面 // 显示到配置页面
ui->GDDCLineEdit->setText(_GDDC.net.remoteIp); ui->GDDCLineEdit->setText(_GDDC.net.remoteIp);
ui->lLinkLineEdit->setText(_lLink.url); ui->lLinkLineEdit->setText(_lLink.url);
ui->netLineEdit->setText(_adHocNetwork.url); ui->netLineEdit->setText(_adHocNetwork.url);
ui->sateliteLineEdit->setText(_satelliteComm.url); ui->sateliteLineEdit->setText(_satelliteComm.url);
ui->RescueLineEdit->setText(_rescueLoad.url);
ui->PdtLineEdit->setText(_pdtLoad.url);
ui->modelCameraLineEditRemoteIp->setText(_ModelCamera.net.remoteIp); ui->modelCameraLineEditRemoteIp->setText(_ModelCamera.net.remoteIp);
ui->modelCameraLineEditRemotePort->setText( ui->modelCameraLineEditRemotePort->setText(
QString::number(_ModelCamera.net.remotePort)); QString::number(_ModelCamera.net.remotePort));
@ -84,6 +90,24 @@ void HomePageSetingWidget::on_sateliteButton_clicked() {
_configIni->setValue("SatelliteComm/IP", _satelliteComm.url); _configIni->setValue("SatelliteComm/IP", _satelliteComm.url);
emit sendOneSet(Satelite_Comm, _satelliteComm); emit sendOneSet(Satelite_Comm, _satelliteComm);
} }
//搜救载荷
void HomePageSetingWidget::on_RescueButton_clicked()
{
// 写参数到配置文件
_rescueLoad.url = ui->RescueLineEdit->text();
_configIni->setValue("RescueLoading/IP", _rescueLoad.url);
emit sendOneSet(RescueLoading, _rescueLoad);
}
void HomePageSetingWidget::on_PdtButton_clicked()
{
// 写参数到配置文件
_pdtLoad.url = ui->PdtLineEdit->text();
_configIni->setValue("PdtLoading/IP", _pdtLoad.url);
emit sendOneSet(PdtLoading, _pdtLoad);
}
// 三维相机 // 三维相机
void HomePageSetingWidget::on_modelCameraButton_clicked() { void HomePageSetingWidget::on_modelCameraButton_clicked() {
// 写参数到配置文件 // 写参数到配置文件
@ -106,6 +130,9 @@ void HomePageSetingWidget::on_oneKeyButton_clicked() {
on_netButton_clicked(); on_netButton_clicked();
on_sateliteButton_clicked(); on_sateliteButton_clicked();
on_modelCameraButton_clicked(); on_modelCameraButton_clicked();
on_sateliteButton_clicked();
on_RescueButton_clicked();
on_PdtButton_clicked();
} }
/************************************************* /*************************************************
* @func getAllParam * @func getAllParam
@ -115,3 +142,5 @@ void HomePageSetingWidget::on_oneKeyButton_clicked() {
std::unordered_map<QString, settingStruct> HomePageSetingWidget::getAllParam() { std::unordered_map<QString, settingStruct> HomePageSetingWidget::getAllParam() {
return _allParamMap; return _allParamMap;
} }

@ -23,7 +23,9 @@ private:
settingStruct _GDDC; // 光电吊舱 settingStruct _GDDC; // 光电吊舱
settingStruct _lLink; // L链 settingStruct _lLink; // L链
settingStruct _adHocNetwork; // 自组网 settingStruct _adHocNetwork; // 自组网
settingStruct _satelliteComm; // PDT settingStruct _satelliteComm; // 卫通
settingStruct _rescueLoad; // 搜救载荷
settingStruct _pdtLoad; // PDT
settingStruct _ModelCamera; // 三维建模 settingStruct _ModelCamera; // 三维建模
std::unordered_map<QString, settingStruct> _allParamMap; // 存储所有设置信息 std::unordered_map<QString, settingStruct> _allParamMap; // 存储所有设置信息
public: public:
@ -41,7 +43,9 @@ public:
L_Link, L_Link,
Adhoc_Network, Adhoc_Network,
Satelite_Comm, Satelite_Comm,
ModelCamera ModelCamera,
RescueLoading,
PdtLoading
}; };
private slots: private slots:
@ -50,8 +54,9 @@ private slots:
void on_sateliteButton_clicked(); void on_sateliteButton_clicked();
void on_oneKeyButton_clicked(); void on_oneKeyButton_clicked();
void on_GDDCPushButton_clicked(); void on_GDDCPushButton_clicked();
void on_modelCameraButton_clicked(); void on_modelCameraButton_clicked();
void on_RescueButton_clicked();
void on_PdtButton_clicked();
signals: signals:
// 发送信号给网页显示 // 发送信号给网页显示

@ -7,14 +7,14 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>725</width> <width>725</width>
<height>532</height> <height>611</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>设置</string> <string>设置</string>
</property> </property>
<property name="windowIcon"> <property name="windowIcon">
<iconset resource="../../mainwindow.qrc"> <iconset>
<normaloff>:/res/settings.png</normaloff>:/res/settings.png</iconset> <normaloff>:/res/settings.png</normaloff>:/res/settings.png</iconset>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
@ -222,6 +222,9 @@
<string>L链</string> <string>L链</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QLineEdit" name="lLinkLineEdit"/>
</item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
<property name="text"> <property name="text">
@ -229,9 +232,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="QLineEdit" name="lLinkLineEdit"/>
</item>
<item row="0" column="2"> <item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@ -281,51 +281,165 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="modelCameraGroupBox"> <widget class="QGroupBox" name="RescueGroupBox">
<property name="title"> <property name="title">
<string>三维建模</string> <string>搜救载荷</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_4"> <layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="1">
<widget class="QLineEdit" name="RescueLineEdit"/>
</item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label_5"> <widget class="QLabel" name="label_9">
<property name="text"> <property name="text">
<string>远端IP:</string> <string>IP:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="RescueButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>100</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>设置</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="PdtGroupBox">
<property name="title">
<string>PDT</string>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="1"> <item row="0" column="1">
<widget class="QLineEdit" name="modelCameraLineEditRemoteIp"/> <widget class="QLineEdit" name="PdtLineEdit"/>
</item> </item>
<item row="0" column="2"> <item row="0" column="0">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_10">
<property name="text"> <property name="text">
<string>远端端口:</string> <string>IP:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3"> <item row="0" column="2">
<widget class="QLineEdit" name="modelCameraLineEditRemotePort"/> <layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item> </item>
<item row="1" column="0"> <item>
<widget class="QLabel" name="label_7"> <widget class="QPushButton" name="PdtButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>100</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<property name="text"> <property name="text">
<string>本地IP:</string> <string>设置</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> </layout>
<widget class="QLineEdit" name="modelCameraLineEditLocalIp"/>
</item> </item>
<item row="1" column="2"> </layout>
<widget class="QLabel" name="label_8"> </widget>
</item>
<item>
<widget class="QGroupBox" name="modelCameraGroupBox">
<property name="title">
<string>三维建模</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="2">
<widget class="QLabel" name="label_6">
<property name="text"> <property name="text">
<string>本地端口:</string> <string>远端端口:</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>远端IP:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3">
<widget class="QLineEdit" name="modelCameraLineEditRemotePort"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="modelCameraLineEditLocalIp"/>
</item>
<item row="1" column="3"> <item row="1" column="3">
<widget class="QLineEdit" name="modelCameraLineEditLocalPort"/> <widget class="QLineEdit" name="modelCameraLineEditLocalPort"/>
</item> </item>
<item row="0" column="1">
<widget class="QLineEdit" name="modelCameraLineEditRemoteIp"/>
</item>
<item row="1" column="4"> <item row="1" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_8"> <layout class="QHBoxLayout" name="horizontalLayout_8">
<item> <item>
@ -371,6 +485,20 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>本地IP:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_8">
<property name="text">
<string>本地端口:</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -437,8 +565,6 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<resources> <resources/>
<include location="../../mainwindow.qrc"/>
</resources>
<connections/> <connections/>
</ui> </ui>

@ -2,7 +2,7 @@
global::global() {} global::global() {}
QString g_SoftwareVersion = "版本号V1.1.0.4_20241226"; QString g_SoftwareVersion = "版本号V1.1.0.5_20250207";
NotifyManager *g_notifyManager = nullptr; NotifyManager *g_notifyManager = nullptr;

Loading…
Cancel
Save