diff --git a/PayloadAPP.pro.user.ed0dad3 b/PayloadAPP.pro.user.ed0dad3
new file mode 100644
index 0000000..68acc19
--- /dev/null
+++ b/PayloadAPP.pro.user.ed0dad3
@@ -0,0 +1,273 @@
+
+
+
+
+
+ EnvironmentId
+ {ed0dad32-f81f-4133-8ec2-4a3277169847}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ 0
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+ false
+
+
+ 0
+ true
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 10
+ true
+
+
+
+ true
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop Qt 6.6.3 MSVC2019 64bit
+ Desktop Qt 6.6.3 MSVC2019 64bit
+ qt.qt6.663.win64_msvc2019_64_kit
+ 0
+ 0
+ 0
+
+ 0
+ D:\WorkData\Code\PlayLoad\build\build-PayloadAPP-Desktop_Qt_6_6_3_MSVC2019_64bit-Debug
+ D:/WorkData/Code/PlayLoad/build/build-PayloadAPP-Desktop_Qt_6_6_3_MSVC2019_64bit-Debug
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ 构建
+ 构建
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ 清除
+ 清除
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+
+
+ D:\WorkData\Code\PlayLoad\build\release
+ D:/WorkData/Code/PlayLoad/build/release
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ 构建
+ 构建
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ 清除
+ 清除
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+
+
+ 0
+ D:\WorkData\Code\build-PayloadAPP-Desktop_Qt_6_6_3_MSVC2019_64bit-Profile
+ D:/WorkData/Code/build-PayloadAPP-Desktop_Qt_6_6_3_MSVC2019_64bit-Profile
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ 构建
+ 构建
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ 清除
+ 清除
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+ 0
+
+ 3
+
+
+ 0
+ 部署
+ 部署
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ 0
+ true
+
+ 2
+
+ false
+ -e cpu-cycles --call-graph "dwarf,4096" -F 250
+
+ Qt4ProjectManager.Qt4RunConfiguration:D:/WorkData/Code/PlayLoad/PayloadAPP.pro
+ D:/WorkData/Code/PlayLoad/PayloadAPP.pro
+ false
+ true
+ true
+ true
+ D:/WorkData/Code/PlayLoad/build/build-PayloadAPP-Desktop_Qt_6_6_3_MSVC2019_64bit-Debug
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/Src/GDDC/GDDC.pri b/Src/GDDC/GDDC.pri
index e1f1fa2..4c70390 100644
--- a/Src/GDDC/GDDC.pri
+++ b/Src/GDDC/GDDC.pri
@@ -18,3 +18,6 @@ FORMS += \
$$PWD/gddcSet.ui \
$$PWD/gddcStateInfo.ui \
+
+RESOURCES += \
+ $$PWD/res.qrc
diff --git a/Src/GDDC/Pod/Center.png b/Src/GDDC/Pod/Center.png
new file mode 100644
index 0000000..bc47abe
Binary files /dev/null and b/Src/GDDC/Pod/Center.png differ
diff --git a/Src/GDDC/Pod/c.png b/Src/GDDC/Pod/c.png
new file mode 100644
index 0000000..a554398
Binary files /dev/null and b/Src/GDDC/Pod/c.png differ
diff --git a/Src/GDDC/Pod/circle.png b/Src/GDDC/Pod/circle.png
new file mode 100644
index 0000000..06f5c53
Binary files /dev/null and b/Src/GDDC/Pod/circle.png differ
diff --git a/Src/GDDC/Pod/plus.png b/Src/GDDC/Pod/plus.png
new file mode 100644
index 0000000..4bd116a
Binary files /dev/null and b/Src/GDDC/Pod/plus.png differ
diff --git a/Src/GDDC/Pod/podDown.png b/Src/GDDC/Pod/podDown.png
new file mode 100644
index 0000000..b919ce2
Binary files /dev/null and b/Src/GDDC/Pod/podDown.png differ
diff --git a/Src/GDDC/Pod/podLeft.png b/Src/GDDC/Pod/podLeft.png
new file mode 100644
index 0000000..960f52c
Binary files /dev/null and b/Src/GDDC/Pod/podLeft.png differ
diff --git a/Src/GDDC/Pod/podRight.png b/Src/GDDC/Pod/podRight.png
new file mode 100644
index 0000000..111946a
Binary files /dev/null and b/Src/GDDC/Pod/podRight.png differ
diff --git a/Src/GDDC/Pod/podUp.png b/Src/GDDC/Pod/podUp.png
new file mode 100644
index 0000000..f207e67
Binary files /dev/null and b/Src/GDDC/Pod/podUp.png differ
diff --git a/Src/GDDC/Pod/sub.png b/Src/GDDC/Pod/sub.png
new file mode 100644
index 0000000..927ae7e
Binary files /dev/null and b/Src/GDDC/Pod/sub.png differ
diff --git a/Src/GDDC/gddcCmdDlg.cpp b/Src/GDDC/gddcCmdDlg.cpp
index a106a15..13d0484 100644
--- a/Src/GDDC/gddcCmdDlg.cpp
+++ b/Src/GDDC/gddcCmdDlg.cpp
@@ -1,5 +1,6 @@
#include "gddcCmdDlg.h"
#include "ui_gddcCmdDlg.h"
+#include
GDDCCmdDlg::GDDCCmdDlg(QWidget *parent)
: QWidget(parent), ui(new Ui::GDDCCmdDlg) {
@@ -107,6 +108,10 @@ void GDDCCmdDlg::initParam() {
ui->lineEdit_6_1->setText("960");
ui->lineEdit_6_2->setText("540");
detectionAreaSetting = false;
+
+ ui->spinBox->setWrapping(true);
+ ui->spinBox->setValue(5);
+ setPodIco();
}
// 设置tabwidget的几何位置
void GDDCCmdDlg::setTabWidgetGeometry(int ax, int ay, int aw, int ah) {
@@ -337,27 +342,31 @@ void GDDCCmdDlg::on_pushButton_3_3_released() { clearTJDCCmdBuffer(); }
void GDDCCmdDlg::on_pushButton_3_4_pressed() {
TJDCCmdBuffer[0] = (std::byte)0x45;
TJDCCmdBuffer[1] = (std::byte)0x01;
+ TJDCCmdBuffer[2] = (std::byte)ui->spinBox->value();
}
void GDDCCmdDlg::on_pushButton_3_4_released() {
clearTJDCCmdBuffer();
TJDCCmdBuffer[0] = (std::byte)0x45;
TJDCCmdBuffer[1] = (std::byte)0x00;
+ sendCurDate(TJDCCmdBuffer, 1);
}
// 变倍-
void GDDCCmdDlg::on_pushButton_3_5_pressed() {
TJDCCmdBuffer[0] = (std::byte)0x45;
TJDCCmdBuffer[1] = (std::byte)0x02;
+ TJDCCmdBuffer[2] = (std::byte)ui->spinBox->value();
}
void GDDCCmdDlg::on_pushButton_3_5_released() {
clearTJDCCmdBuffer();
TJDCCmdBuffer[0] = (std::byte)0x45;
TJDCCmdBuffer[1] = (std::byte)0x00;
+ sendCurDate(TJDCCmdBuffer, 1);
}
// 可见光镜头初始化
void GDDCCmdDlg::on_pushButton_3_6_pressed() {
- TJDCCmdBuffer[0] = (std::byte)0x41;
+ TJDCCmdBuffer[0] = (std::byte)0x40;
TJDCCmdBuffer[1] = (std::byte)0x03;
}
void GDDCCmdDlg::on_pushButton_3_6_released() { clearTJDCCmdBuffer(); }
@@ -380,12 +389,16 @@ void GDDCCmdDlg::on_pushButton_3_8_released() { clearTJDCCmdBuffer(); }
// 低照度模式
void GDDCCmdDlg::on_pushButton_3_9_pressed() {
- if (param_pushButton_3_9) {
- TJDCCmdBuffer[0] = (std::byte)0x4A;
+ if (param_pushButton_3_9) {//关闭
+ TJDCCmdBuffer[0] = (std::byte)0x4B;
TJDCCmdBuffer[1] = (std::byte)0x00;
- } else {
- TJDCCmdBuffer[0] = (std::byte)0x4A;
+ param_pushButton_3_9 = false;
+ ui->pushButton_3_9->setText("低照度模式");
+ } else { //开启
+ TJDCCmdBuffer[0] = (std::byte)0x4B;
TJDCCmdBuffer[1] = (std::byte)0x01;
+ param_pushButton_3_9 = true;
+ ui->pushButton_3_9->setText("低照度模式关");
}
}
void GDDCCmdDlg::on_pushButton_3_9_released() { clearTJDCCmdBuffer(); }
@@ -646,7 +659,7 @@ void GDDCCmdDlg::on_pushButton_4_17_pressed() {
TJDCCmdBuffer[1] = (std::byte)0x00;
TJDCCmdBuffer[2] = (std::byte)0x00;
} else {
- TJDCCmdBuffer[0] = (std::byte)0x58;
+ TJDCCmdBuffer[0] = (std::byte)0x53;
TJDCCmdBuffer[1] = (std::byte)0x01;
TJDCCmdBuffer[2] = (std::byte)(sel - 1);
}
@@ -870,13 +883,13 @@ void GDDCCmdDlg::on_pushButton_5_15_released() { clearTJDCCmdBuffer(); }
// 框架
void GDDCCmdDlg::on_radioButton_5_1_clicked() {
paramIsFrame = true;
- ui->pushButton_5_5->setText("归中");
+ // ui->pushButton_5_5->setText("归中");
}
// 陀螺
void GDDCCmdDlg::on_radioButton_5_2_clicked() {
paramIsFrame = false;
- ui->pushButton_5_5->setText("自动校准");
+ // ui->pushButton_5_5->setText("自动校准");
}
// AI开
@@ -956,3 +969,59 @@ void GDDCCmdDlg::on_pushButton_6_8_clicked() {
ui->pushButton_6_8->setDown(false);
}
}
+
+void GDDCCmdDlg::wheelSwipe(int value)
+{
+ if(value > 0)//鼠标前滚
+ {
+ on_pushButton_3_4_pressed();
+ }
+ else if(value < 0)
+ {
+ on_pushButton_3_5_pressed();
+ }
+ else if(value == 0)
+ {
+ on_pushButton_3_4_released();
+ }
+ //qDebug() << value;
+}
+
+void GDDCCmdDlg::setMoveParm(QPointF size)
+{
+ int x = std::clamp(static_cast(size.x()/10), -60, 60);
+ int y = std::clamp(static_cast(- size.y()/10), -60, 60);
+ // qDebug() << "缩减之后的屏幕滑动参数==>" << "x:" << x << "y:" << y;
+ TJDCCmdBuffer[5] = (std::byte)0x70;
+ TJDCCmdBuffer[6] = (std::byte)(x & 0xFF);
+ TJDCCmdBuffer[7] = (std::byte)((x >> 8) & 0xFF);
+ TJDCCmdBuffer[8] = (std::byte)(y & 0xFF);
+ TJDCCmdBuffer[9] = (std::byte)((y >> 8) & 0xFF);
+ //qDebug() << (int)TJDCCmdBuffer[6] << "---" << (int)TJDCCmdBuffer[7];
+}
+
+/*************************************************
+ * @func
+ * @brief 设置调查控制页面图标
+ **************************************************/
+void GDDCCmdDlg::setPodIco() {
+ ui->pushButton_5_1->setIcon(QIcon(":/img/Pod/podUp.png"));
+ ui->pushButton_5_1->setIconSize(QSize(53, 53));
+ ui->pushButton_5_1->setStyleSheet("QPushButton { border: none; }");
+
+ ui->pushButton_5_2->setIcon(QIcon(":/img/Pod/podLeft.png"));
+ ui->pushButton_5_2->setIconSize(QSize(53, 53));
+ ui->pushButton_5_2->setStyleSheet("QPushButton { border: none; }");
+
+ ui->pushButton_5_3->setIcon(QIcon(":/img/Pod/podDown.png"));
+ ui->pushButton_5_3->setIconSize(QSize(53, 53));
+ ui->pushButton_5_3->setStyleSheet("QPushButton { border: none; }");
+
+ ui->pushButton_5_4->setIcon(QIcon(":/img/Pod/podRight.png"));
+ ui->pushButton_5_4->setIconSize(QSize(53, 53));
+ ui->pushButton_5_4->setStyleSheet("QPushButton { border: none; }");
+
+ ui->pushButton_5_5->setIcon(QIcon(":/img/Pod/Center.png"));
+ ui->pushButton_5_5->setIconSize(QSize(53, 53));
+ ui->pushButton_5_5->setStyleSheet("QPushButton { border: none; }");
+}
diff --git a/Src/GDDC/gddcCmdDlg.h b/Src/GDDC/gddcCmdDlg.h
index 5d12e09..15c615a 100644
--- a/Src/GDDC/gddcCmdDlg.h
+++ b/Src/GDDC/gddcCmdDlg.h
@@ -1,6 +1,7 @@
#ifndef GDDCCMDDLG_H
#define GDDCCMDDLG_H
+#include "imageswitch.h"
#include
#include
#include
@@ -17,7 +18,6 @@
#include
#include
#include
-#include "imageswitch.h"
#define cmdLength 44
namespace Ui {
@@ -230,7 +230,12 @@ private slots:
void on_pushButton_6_7_pressed();
void on_pushButton_6_7_released();
void on_pushButton_6_8_clicked();
-
+public slots:
+ //滚轮
+ void wheelSwipe(int value);
+ void setMoveParm(QPointF size);
+private:
+ void setPodIco();
};
#endif // GDDCCMDDLG_H
diff --git a/Src/GDDC/gddcCmdDlg.ui b/Src/GDDC/gddcCmdDlg.ui
index 36b1072..fd9a675 100644
--- a/Src/GDDC/gddcCmdDlg.ui
+++ b/Src/GDDC/gddcCmdDlg.ui
@@ -6,12 +6,12 @@
0
0
- 1355
- 219
+ 728
+ 830
-
+
0
0
@@ -35,13 +35,13 @@
0
- 0
- 1121
- 211
+ 10
+ 471
+ 785
-
+
0
0
@@ -55,7 +55,7 @@
16777215
- 220
+ 16777215
@@ -74,13 +74,13 @@
- QTabWidget::TabPosition::North
+ QTabWidget::TabPosition::West
QTabWidget::TabShape::Rounded
- 4
+ 0
Qt::TextElideMode::ElideNone
@@ -90,1773 +90,106 @@
- 系统控制
+ 控制
-
-
-
- 680
- 40
- 100
- 21
-
-
-
-
-
-
- 吊舱时间更新
-
-
-
-
-
- 10
- 10
- 241
- 161
-
-
-
- 目标跟踪模板大小设置
-
-
- Qt::AlignmentFlag::AlignCenter
-
-
-
-
- 70
- 130
- 91
- 21
-
-
-
-
-
-
- 设置
-
-
-
-
-
- 110
- 70
- 113
- 21
-
-
-
-
-
-
- 110
- 100
- 113
- 21
-
-
-
-
-
-
- 10
- 70
- 81
- 20
-
-
-
- 目标模板宽:
-
-
-
-
-
- 10
- 100
- 81
- 20
-
-
-
- 目标模板高:
-
-
-
-
-
- 110
- 42
- 111
- 21
-
-
-
-
-
-
- 10
- 40
- 81
- 20
-
-
-
- 类型选择:
-
-
-
-
-
-
- 260
- 10
- 231
- 161
-
-
-
- 视频显示模式设置
-
-
- Qt::AlignmentFlag::AlignCenter
-
-
-
-
- 70
- 130
- 91
- 21
-
-
-
-
-
-
- 设置
-
-
-
-
-
- 10
- 82
- 211
- 21
-
-
-
-
-
-
- 10
- 50
- 101
- 20
-
-
-
- 显示模式选择:
-
-
-
-
-
-
- 500
- 10
- 171
- 161
-
-
-
- IP设置
-
-
- Qt::AlignmentFlag::AlignCenter
-
-
-
-
- 40
- 130
- 91
- 21
-
-
-
-
-
-
- 设置
-
-
-
-
-
- 10
- 80
- 31
- 21
-
-
-
-
-
-
- 20
- 50
- 81
- 20
-
-
-
- 光电吊舱IP:
-
-
-
-
-
- 50
- 80
- 31
- 21
-
-
-
-
-
-
- 90
- 80
- 31
- 21
-
-
-
-
-
-
- 130
- 80
- 31
- 21
-
-
-
-
-
-
-
- 载荷公用
-
-
-
-
- 10
- 10
- 100
- 31
-
-
-
-
-
-
- 图像切换
-
-
-
-
-
- 10
- 50
- 100
- 31
-
-
-
-
-
-
- 抓图
-
-
-
-
-
- 130
- 90
- 100
- 30
-
-
-
-
-
-
- 开始录像
-
-
-
-
-
- 10
- 130
- 100
- 30
-
-
-
-
-
-
- 停止连续抓图
-
-
-
-
-
- 130
- 130
- 100
- 30
-
-
-
-
-
-
- 停止录像
-
-
-
-
-
- 10
- 90
- 100
- 30
-
-
-
-
-
-
- 开始连续抓图
-
-
-
-
-
- 130
- 10
- 100
- 30
-
-
-
-
-
-
- 选点跟踪
-
-
-
-
-
- 130
- 50
- 100
- 30
-
-
-
-
-
-
- 取消跟踪
-
-
-
-
-
- 250
- 10
- 100
- 30
-
-
-
-
-
-
- 单次测距
-
-
-
-
-
- 250
- 50
- 100
- 30
-
-
-
-
-
-
- 开启连续测距
-
-
-
-
-
- 250
- 90
- 100
- 30
-
-
-
-
-
-
- 停止连续测距
-
-
-
-
-
- 370
- 10
- 171
- 161
-
-
-
- 字符叠加设置
-
-
- Qt::AlignmentFlag::AlignCenter
-
-
-
-
- 20
- 70
- 111
- 21
-
-
-
-
-
-
- 20
- 110
- 111
- 30
-
-
-
-
-
-
- 设置
-
-
-
-
-
- 20
- 40
- 131
- 20
-
-
-
- OSD类型选择:
-
-
-
-
-
-
- 可见光
-
-
-
-
- 10
- 50
- 100
- 30
-
-
-
-
-
-
- 变倍-
-
-
-
-
-
- 10
- 10
- 100
- 30
-
-
-
-
-
-
- 变倍+
-
-
-
-
-
- 130
- 90
- 100
- 30
-
-
-
-
-
-
- 低照度模式
-
-
-
-
-
- 370
- 130
- 100
- 30
-
-
-
-
-
-
- 恢复出场设置
-
-
-
-
-
- 130
- 10
- 100
- 30
-
-
-
-
-
-
- 自动ICR开
-
-
-
-
-
- 130
- 50
- 100
- 30
-
-
-
-
-
-
- 自动ICR关
-
-
-
-
-
- 10
- 90
- 100
- 30
-
-
-
-
-
-
- 电子稳像开
-
-
-
-
-
- 10
- 130
- 100
- 30
-
-
-
-
-
-
- 电子稳像关
-
-
-
-
-
- 130
- 130
- 100
- 30
-
-
-
-
-
-
- 可见光镜头初始化
-
-
-
-
-
- 250
- 130
- 100
- 30
-
-
-
-
-
-
- 恢复默认
-
-
-
-
-
- 870
- 10
- 120
- 121
-
-
-
- 透雾模式
-
-
- Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter
-
-
-
-
- 10
- 70
- 100
- 30
-
-
-
-
-
-
- 设置
-
-
-
-
-
- 10
- 30
- 101
- 21
-
-
-
-
-
-
-
- 370
- 10
- 100
- 30
-
-
-
-
-
-
- 增益+
-
-
-
-
-
- 370
- 50
- 100
- 30
-
-
-
-
-
-
- 增益-
-
-
-
-
-
- 370
- 90
- 100
- 30
-
-
-
-
-
-
- 自动增益
-
-
-
-
-
- 490
- 10
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 亮度+
-
-
-
-
-
- 490
- 50
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 亮度-
-
-
-
-
-
- 490
- 90
- 101
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 自动亮度
-
-
-
-
-
- 250
- 10
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 对比度+
-
-
-
-
-
- 250
- 50
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 对比度-
-
-
-
-
-
- 250
- 90
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 自动对比度
-
-
-
-
-
- 610
- 10
- 241
- 121
-
-
-
- 焦距设置
-
-
-
-
- 10
- 30
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 焦距+
-
-
-
-
-
- 10
- 70
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 焦距-
-
-
-
-
-
- 130
- 30
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 130
- 70
- 99
- 31
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 设置
-
-
-
-
-
-
- 红外载荷
-
-
-
-
- 10
- 10
- 100
- 30
-
-
-
-
-
-
- 调焦+
-
-
-
-
-
- 130
- 10
- 100
- 30
-
-
-
-
-
-
- 调焦-
-
-
-
-
-
- 370
- 10
- 100
- 30
-
-
-
-
-
-
- 测温模式
-
-
-
-
-
- 250
- 50
- 100
- 30
-
-
-
-
-
-
- 电子放大
-
-
-
-
-
- 250
- 90
- 100
- 30
-
-
-
-
-
-
- 场景补偿
-
-
-
-
-
- 250
- 130
- 100
- 30
-
-
-
-
-
-
- 红外快门补偿
-
-
-
-
-
- 590
- 50
- 100
- 30
-
-
-
-
-
-
- 红外图像增强
-
-
-
-
-
- 10
- 90
- 100
- 30
-
-
-
-
-
-
- 亮度+
-
-
-
-
-
- 10
- 130
- 100
- 30
-
-
-
-
-
-
- 对比度+
-
-
-
-
-
- 370
- 50
- 100
- 30
-
-
-
-
-
-
- 观测模式
-
-
-
-
-
- 130
- 90
- 100
- 30
-
-
-
-
-
-
- 亮度-
-
-
-
-
-
- 130
- 130
- 100
- 30
-
-
-
-
-
-
- 对比度-
-
-
-
-
-
- 10
- 50
- 100
- 30
-
-
-
-
-
-
- 变倍+
-
-
-
-
-
- 130
- 50
- 100
- 30
-
-
-
-
-
-
- 变倍-
-
-
-
-
-
- 250
- 10
- 100
- 30
-
-
-
-
-
-
- 自动对焦
-
-
-
-
-
- 370
- 90
- 100
- 30
-
-
-
-
-
-
- 恢复默认设置
-
-
-
-
-
- 370
- 130
- 100
- 30
-
-
-
-
-
-
- 恢复出厂设置
-
-
-
-
-
- 480
- 10
- 101
- 31
-
-
-
-
-
-
- 590
- 10
- 101
- 30
-
-
-
-
-
-
- 伪色彩切换
-
-
-
-
-
- 480
- 50
- 101
- 31
-
-
-
-
-
-
- 710
- 10
- 181
- 151
-
-
-
- 红外报警设置
-
-
-
-
- 80
- 110
- 71
- 25
-
-
-
-
- 0
- 0
-
-
-
-
-
-
- 设置
-
-
-
-
-
- 75
- 70
- 81
- 23
-
-
-
-
-
-
- 160
- 70
- 14
- 21
-
-
-
- ℃
-
-
-
-
-
- 5
- 70
- 61
- 21
-
-
-
- 温度阈值
-
-
-
-
-
- 60
- 30
- 71
- 21
-
-
-
-
-
-
- 5
- 30
- 61
- 21
-
-
-
- 检测开关
-
-
-
-
-
-
- 稳定平台
-
-
-
-
- 390
- 90
- 41
- 31
-
-
-
-
-
-
- →
-
-
-
-
-
- 310
- 10
- 72
- 23
-
-
-
-
-
-
-
-
-
- 300
- 80
- 81
- 51
-
-
-
-
-
-
- 归中
-
-
-
-
-
- 140
- 10
- 151
- 20
-
-
-
- color: rgb(255, 255, 255);
-font: 12pt "Microsoft YaHei UI";
-
-
- 伺服控制步长选择:
-
-
-
-
-
- 320
- 140
- 41
- 31
-
-
-
-
-
-
- ↓
-
-
-
-
-
- 250
- 90
- 41
- 31
-
-
-
-
-
-
- ←
-
-
-
-
-
- 320
- 40
- 41
- 31
-
-
-
-
-
-
- ↑
-
-
-
-
-
- 10
- 130
- 100
- 30
-
-
-
-
-
-
- 航向锁定
-
-
-
-
-
- 130
- 130
- 100
- 30
-
-
-
-
-
-
- 关伺服
-
-
-
-
-
- 10
- 50
- 100
- 30
-
-
-
-
-
-
- 收藏模式
-
-
-
-
-
- 10
- 90
- 100
- 30
-
-
-
-
-
-
- 航向随动
-
-
-
-
-
- 10
- 10
- 100
- 30
-
-
-
-
-
-
- 垂直下视
-
-
-
-
-
- 740
- 10
- 261
- 121
-
-
-
- 指引
-
-
-
-
- 60
- 80
- 71
- 21
-
-
-
-
-
-
- 60
- 40
- 71
- 21
-
-
-
-
-
-
- 10
- 40
- 41
- 16
-
-
-
- 方位:
-
-
-
-
-
- 10
- 80
- 41
- 16
-
-
-
- 俯仰:
-
-
-
-
-
- 150
- 39
- 101
- 21
-
-
-
-
-
-
- 姿态指引
-
-
-
-
-
- 150
- 79
- 101
- 21
-
-
-
-
-
-
- 数字引导
-
-
-
-
-
-
- 460
- 10
- 261
- 121
-
-
-
- 扫描设置
-
-
-
-
- 150
- 79
- 100
- 21
-
-
-
-
-
-
- 云台扫描
-
-
-
-
-
- 150
- 39
- 100
- 21
-
-
-
-
-
-
- 设置
-
-
-
-
-
- 60
- 40
- 71
- 21
-
-
-
-
-
-
- 60
- 80
- 71
- 21
-
-
-
-
-
-
- 12
- 40
- 41
- 21
-
-
-
- 角度:
-
-
-
-
-
- 12
- 80
- 41
- 21
-
-
-
- 速度:
-
-
+
+
+
+ 174
+ 150
+ 161
+ 106
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 垂直下视
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 航向锁定
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 航向随动
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 镜头收藏
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 关伺服
+
+
+
+
-
+
- 140
- 90
- 61
+ 9
+ 9
+ 144
21
@@ -1865,16 +198,105 @@ font: 12pt "Microsoft YaHei UI";
font: 12pt "Microsoft YaHei UI";
- 陀螺
+ 伺服控制步长选择:
+
+
+
+
+
+ 174
+ 9
+ 72
+ 24
+
+
+
+
+
+
+ 9
+ 250
+ 324
+ 71
+
+
+ 视频
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 图像切换
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 停止录像
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 开始录像
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 抓图
+
+
+
+
- 140
- 50
- 61
- 21
+ 9
+ 39
+ 57
+ 27
@@ -1885,96 +307,1845 @@ font: 12pt "Microsoft YaHei UI";
框架
-
-
-
- AI检测
-
-
+
- 10
- 10
- 121
- 30
+ 92
+ 39
+ 57
+ 27
-
+ color: rgb(255, 255, 255);
+font: 12pt "Microsoft YaHei UI";
- AI开
+ 陀螺
-
+
- 10
- 130
- 121
- 30
+ 260
+ 430
+ 71
+ 91
-
-
+
+ 透雾模式
-
- AI检测框隐藏
+
+ Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter
-
-
-
-
- 10
- 50
- 121
- 30
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+
+
+ 9
+ 540
+ 324
+ 141
-
-
-
-
- AI关
+
+ 红外
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 调焦-
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 对比度-
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 亮度-
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 对比度+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 变倍-
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 亮度+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 变倍+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 调焦+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 伪色彩切换
+
+
+
+
+
+
+
+
+ 9
+ 690
+ 321
+ 71
+
+
+ 激光测距
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 单次测距
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 开启连续测距
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 停止连续测距
+
+
+
+
-
+
- 10
- 90
- 121
- 30
+ 174
+ 30
+ 161
+ 111
-
-
+
+ 指引
-
- AI检测框显示
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 姿态指引
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 数字引导
+
+
+
+ -
+
+
-
+
+
+ 方位:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 30
+
+
+
+ 俯仰:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+
+
+
+
+
+ 9
+ 430
+ 251
+ 111
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 低照度模式
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 取消跟踪
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 电子稳像关
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 选点跟踪
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 电子稳像开
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ 速度:
+
+
+ 7
+
+
+
+
+
+
+
+
+ 9
+ 320
+ 324
+ 111
+
+
+ 可见光
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 对比度-
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 变倍-
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 焦距+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 焦距-
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 对比度+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 亮度-
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 亮度+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 变倍+
+
+
+
+
+
+
+
+
+ -10
+ 60
+ 180
+ 180
+
+
+
+
+ 180
+ 180
+
+
+
+
+ 180
+ 180
+
+
+
+ -
+
+
+
+ 55
+ 55
+
+
+
+
+ 55
+ 55
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 55
+ 55
+
+
+
+
+ 55
+ 55
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 55
+ 55
+
+
+
+
+ 55
+ 55
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 55
+ 55
+
+
+
+
+ 55
+ 55
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 55
+ 55
+
+
+
+
+ 55
+ 55
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+ 扩展控制
+
+
- 380
- 10
- 241
- 151
+ 20
+ 150
+ 321
+ 211
- 目标检测方式设置
+ 可见光
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 增益-
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 增益+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 恢复出场设置
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 可见光镜头初始化
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 自动亮度
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 自动对比度
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 恢复默认
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 自动ICR开
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 自动增益
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 自动ICR关
+
+
+
+
+
+
+
+
+ 20
+ 360
+ 321
+ 211
+
-
-
-
- 80
- 120
- 100
- 21
-
+
+ 红外
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 场景补偿
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 恢复默认设置
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 恢复出厂设置
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 观测模式
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 红外快门补偿
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 电子放大
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 测温模式
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 自动对焦
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 红外图像增强
+
+
+
+
+
+
+
+
+ 10
+ 0
+ 341
+ 153
+
+
+
+ -
+
+
+ 字符叠加设置
+
+
+ Qt::AlignmentFlag::AlignCenter
+
+
+
-
+
+
+
+ 0
+ 20
+
+
+
+ OSD类型选择:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+ -
+
+
+ 视频显示模式设置
+
+
+ Qt::AlignmentFlag::AlignCenter
+
+
+
-
+
+
+
+ 0
+ 20
+
+
+
+ 显示模式选择:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+
+
+
+
+
+ 10
+ 580
+ 341
+ 152
+
+
+
+ -
+
+
+ 红外报警设置
+
+
+
-
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+ 温度阈值
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+ 设置
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+ 检测开关
+
+
+
+ -
+
+
+ ℃
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+
+ -
+
+
+ 目标跟踪模板大小设置
+
+
+ Qt::AlignmentFlag::AlignCenter
+
+
+
-
+
+
+
+ 0
+ 30
+
+
+
+ 类型选择:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ 目标模板宽:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ 目标模板高:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 20
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+
+
+
+
+
+ 10
+ 730
+ 341
+ 47
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 停止连续抓图
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 开始连续抓图
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+
+
+ 吊舱时间更新
+
+
+
+
+
+
+
+
+ AI检测
+
+
+
+
+ 10
+ 0
+ 321
+ 174
+
+
+
+ -
+
+
+
-
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+ AI开
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+ AI关
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+ AI检测框显示
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+ AI检测框隐藏
+
+
+
+
+
+
+ -
+
+
+ AI跟踪
+
+
+ Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter
+
+
+
-
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+ 目标类型:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+ 编号选择:
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+
+
+ AI跟踪
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 520
+ 20
+ 101
+ 81
+
+
+
+ IP设置
+
+
+ Qt::AlignmentFlag::AlignCenter
+
+
+ -
+
+
+ 光电吊舱IP:
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
@@ -1982,74 +2153,226 @@ font: 12pt "Microsoft YaHei UI";
设置
-
-
-
- 140
- 40
- 91
- 21
-
+
+
+
+
+
+
+ 540
+ 100
+ 71
+ 61
+
+
+
+ 焦距设置
+
+
+ -
+
+
+
+ 0
+ 0
+
-
-
-
- 140
- 80
- 91
- 21
-
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+
+ 520
+ 270
+ 131
+ 51
+
+
+
+ 扫描设置
+
+
+
+
+ 150
+ 79
+ 100
+ 21
+
+
+
+
+
+
+ 云台扫描
+
+
+
+
+
+ 150
+ 39
+ 100
+ 21
+
+
+
+
+
+
+ 设置
+
+
+
+
+
+ 60
+ 40
+ 71
+ 21
+
+
+
+
+
+
+ 60
+ 80
+ 71
+ 21
+
+
+
+
+
+
+ 12
+ 40
+ 41
+ 21
+
+
+
+ 角度:
+
+
+
+
+
+ 12
+ 80
+ 41
+ 21
+
+
+
+ 速度:
+
+
+
+
+
+
+ 530
+ 180
+ 91
+ 71
+
+
+
+ 目标检测方式设置
+
+
+ -
-
-
- 10
- 40
- 121
- 20
-
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
传感器类型选择:
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+ -
-
-
- 10
- 80
- 121
- 20
-
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
检测方式:
-
-
-
-
- 640
- 10
- 221
- 151
-
-
-
- 检测兴趣区域位置设置
-
-
-
-
- 110
- 120
- 91
- 21
-
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ 16777215
+ 30
+
+
+
+
+ -
+
@@ -2057,60 +2380,105 @@ font: 12pt "Microsoft YaHei UI";
设置
+
+
+
+
+
+
+ 500
+ 370
+ 181
+ 101
+
+
+
+ 检测兴趣区域位置设置
+
+
+ -
-
-
- 10
- 40
- 81
- 20
-
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
方位像素:
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+ -
-
-
- 10
- 80
- 81
- 20
-
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
俯仰像素:
-
-
-
- 100
- 40
- 81
- 23
-
-
-
+
+ -
-
-
- 100
- 80
- 81
- 23
-
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+ -
-
-
- 10
- 120
- 91
- 21
-
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
@@ -2122,86 +2490,30 @@ font: 12pt "Microsoft YaHei UI";
false
-
-
-
-
- 150
- 10
- 211
- 151
-
-
-
- AI跟踪
-
-
- Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter
-
-
-
-
- 60
- 120
- 100
- 21
-
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
- AI跟踪
-
-
-
-
-
- 100
- 40
- 101
- 21
-
-
-
-
-
-
- 12
- 40
- 81
- 21
-
-
-
- 目标类型:
-
-
-
-
-
- 10
- 80
- 81
- 21
-
-
-
- 编号选择:
-
-
-
-
-
- 100
- 80
- 101
- 21
-
+ 设置
-
-
+
+
diff --git a/Src/GDDC/gddcStateInfo.cpp b/Src/GDDC/gddcStateInfo.cpp
index b5a012f..a237412 100644
--- a/Src/GDDC/gddcStateInfo.cpp
+++ b/Src/GDDC/gddcStateInfo.cpp
@@ -584,9 +584,9 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da, int size) {
}
bool GDDCStateInfo::checkdata(QByteArray buffer, int length, int type) {
- if (length != 64) {
- return false;
- }
+ // if (length != 64) {
+ // return false;
+ // }
if ((buffer.at(0) != '\xFC') || (buffer.at(1) != '\x2C') ||
buffer.at(63) != '\xF0') {
return false;
diff --git a/Src/GDDC/gddcdlg.cpp b/Src/GDDC/gddcdlg.cpp
index d7f332f..58cb8eb 100644
--- a/Src/GDDC/gddcdlg.cpp
+++ b/Src/GDDC/gddcdlg.cpp
@@ -9,182 +9,232 @@
#include
#include
#include
-
+#include
#include "ui_gddcdlg.h"
#pragma comment(lib, "Wtsapi32.lib")
using namespace std;
DWORD GetmPid(LPCWSTR ProcessName) {
- PWTS_PROCESS_INFOW wts;
- DWORD Count;
- DWORD i = 0;
-
- BOOL result =
- WTSEnumerateProcessesW(WTS_CURRENT_SERVER_HANDLE, 0, 1, &wts, &Count);
- if (result == 0) {
- cout << "WTSEnumerateProcessesW Error" << endl;
-
- return 1;
- }
- cout << "WTSEnumerateProcessesW Success" << endl;
- for (i; i < Count; i++) {
- if (lstrcmpiW(wts[i].pProcessName, ProcessName) == 0) {
- DWORD pid = wts[i].ProcessId;
- cout << "find pid:" << pid << endl;
-
- return pid;
- break;
- }
+ PWTS_PROCESS_INFOW wts;
+ DWORD Count;
+ DWORD i = 0;
+
+ BOOL result =
+ WTSEnumerateProcessesW(WTS_CURRENT_SERVER_HANDLE, 0, 1, &wts, &Count);
+ if (result == 0) {
+ cout << "WTSEnumerateProcessesW Error" << endl;
+
+ return 1;
+ }
+ cout << "WTSEnumerateProcessesW Success" << endl;
+ for (i; i < Count; i++) {
+ if (lstrcmpiW(wts[i].pProcessName, ProcessName) == 0) {
+ DWORD pid = wts[i].ProcessId;
+ cout << "find pid:" << pid << endl;
+
+ return pid;
+ break;
}
+ }
- WTSFreeMemory(wts);
+ WTSFreeMemory(wts);
}
#define CONFIG_PATH "config.ini"
-#define CMDPAGEHIGHT 210
+#define CMDPAGEWIDTH 380
#define STATEPAGEWIDTH 250
GDDCdlg::GDDCdlg(QWidget *parent) : QWidget(parent), ui(new Ui::GDDCdlg) {
- ui->setupUi(this);
+ ui->setupUi(this);
- initWindow();
- initParam();
- initSignalSlot();
+ initWindow();
+ initParam();
+ initSignalSlot();
}
GDDCdlg::~GDDCdlg() {
- // 停止所有通信
- stopPushURL();
- stopConnectURL1();
- stopConnectURL2();
- stopConnectSerialCtrl();
- stopConnectUDPCtrl();
- stopConnectTCPCtrl();
-
- delete m_DlgGDDCSet;
- delete m_GDDCCmdDlg;
- delete m_GDDCStateDlg;
- delete ui;
+ // 停止所有通信
+ stopPushURL();
+ 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(this);
- m_DlgGDDCSet->setWindowFlags(Qt::Dialog);
- m_DlgGDDCSet->setWindowModality(Qt::WindowModal); // 设置为模态对话框
- m_GDDCCmdDlg = new GDDCCmdDlg(this);
- m_GDDCStateDlg = new GDDCStateInfo(this);
- ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png"));
- ui->pushButShowCmdPage->setIcon(QIcon(":/res/down.png"));
-
- // connect(
- // ui->WgtffmpegVideo, &VideoWidget::sendErrorMessageSignal, this,
- // [&](QString message, int type) {
- // qDebug() << "GDDC receive message:" << message;
- // g_notifyManager->notify(message, "", type);
- // },
- // Qt::UniqueConnection);
- connect(ui->WgtffmpegVideo, &VideoWidget::sendErrorMessageSignal, this,
- &GDDCdlg::showErrorMessage, Qt::UniqueConnection);
- ui->WgtffmpegVideo->setVedioSaveFileDirPath("./Video");
+ QPalette palette;
+ // 设置主窗口背景颜色
+ palette.setColor(QPalette::Window, QColor(50, 50, 50));
+ this->setPalette(palette);
+ // 嵌入到主窗口
+ setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
+ hide();
+
+ m_DlgGDDCSet = new GDDCSet(this);
+ m_DlgGDDCSet->setWindowFlags(Qt::Dialog);
+ m_DlgGDDCSet->setWindowModality(Qt::WindowModal); // 设置为模态对话框
+ m_GDDCCmdDlg = new GDDCCmdDlg(this);
+ m_GDDCStateDlg = new GDDCStateInfo(this);
+ ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png"));
+ ui->pushButShowCmdPage->setIcon(QIcon(":/res/right.png"));
+
+ // connect(
+ // ui->WgtffmpegVideo, &VideoWidget::sendErrorMessageSignal, this,
+ // [&](QString message, int type) {
+ // qDebug() << "GDDC receive message:" << message;
+ // g_notifyManager->notify(message, "", type);
+ // },
+ // Qt::UniqueConnection);
+ connect(ui->WgtffmpegVideo, &VideoWidget::sendErrorMessageSignal, this,
+ &GDDCdlg::showErrorMessage, Qt::UniqueConnection);
+ ui->WgtffmpegVideo->setVedioSaveFileDirPath("./Video");
}
// 初始化参数
void GDDCdlg::initParam() {
- pointSelectionTracking = false;
- Is_openVideo = false;
- isCmdPageShow = true;
- isStatePageShow = true;
- detectionAreaSetting = false;
- connectFlag.resize(12, false);
+ pointSelectionTracking = false;
+ Is_openVideo = false;
+ isCmdPageShow = true;
+ isStatePageShow = false;
+ detectionAreaSetting = false;
+ connectFlag.resize(12, false);
+
+ _delta = 0;
+
+ _wheelStopTime = new QTimer(this);
+ _wheelStopTime->setInterval(300);
+ _wheelStopTime->setSingleShot(true);
+ _dragFlag = false;
+ _moveFlag = false;
+
+ firstLocation = new QLabel(this);
+ firstLocation->setPixmap(QPixmap(":/img/Pod/c.png"));
+ firstLocation->setScaledContents(true);
+ firstLocation->resize(30,30);
+ firstLocation->setStyleSheet("border: none; background: transparent;");
+ firstLocation->hide();
+
+ lastLocation = new QLabel(this);
+ lastLocation->setPixmap(QPixmap(":/img/Pod/circle.png"));
+ lastLocation->setScaledContents(true);
+ lastLocation->resize(25,25);
+ lastLocation->setStyleSheet("border: none; background: transparent;");
+ lastLocation->hide();
+
+ wheelPlus = new QLabel(this);
+ wheelPlus->setPixmap(QPixmap(":/img/Pod/plus.png"));
+ wheelPlus->setScaledContents(true);
+ wheelPlus->resize(30,30);
+ wheelPlus->setStyleSheet("border: none; background: transparent;");
+ wheelPlus->hide();
+
+ wheelSub = new QLabel(this);
+ wheelSub->setPixmap(QPixmap(":/img/Pod/sub.png"));
+ wheelSub->setScaledContents(true);
+ wheelSub->resize(30,30);
+ wheelSub->setStyleSheet("border: none; background: transparent;");
+ wheelSub->hide();
}
// 初始化信号与槽
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::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))); // 停止连接
+ /*******有四种方式*******/
+ // 方式一
+ connect(ui->pushButtonSet, SIGNAL(clicked()), this,
+ SLOT(pushButtonSet_clicked()));
+ // 方式二
+ // connect(ui->pushButtonSet,&QPushButton::clicked,this,&::GDDCdlg::pushButtonSet_clicked);
+ // 方式三
+ // connect(ui->pushButtonSet,
+ // QOverload::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))); // 停止连接
+
+ connect(this, &GDDCdlg::wheelSendData, m_GDDCCmdDlg, &GDDCCmdDlg::wheelSwipe);
+ connect(_wheelStopTime, &QTimer::timeout, this, [this](){
+ emit wheelSendData(0);
+ qDebug()<<"滚轮停止了";
+ // if(wheelPlus->isVisible())
+ // {
+ // wheelPlus->hide();
+ // }
+ // else if(wheelSub->isVisible())
+ // {
+ // wheelSub->hide();
+ // }
+ });
}
// 槽函数开始连接
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;
- case 6: // 视频(1)推流
- startPushURL();
- break;
- default:
- break;
- }
+ 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;
+ case 6: // 视频(1)推流
+ startPushURL();
+ 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;
- case 6:
- stopPushURL();
- break;
- default:
- break;
- }
+ switch (type) {
+ case 1:
+ stopConnectURL1();
+ break;
+ case 2:
+ stopConnectURL2();
+ break;
+ case 3:
+ stopConnectSerialCtrl();
+ break;
+ case 4:
+ stopConnectUDPCtrl();
+ break;
+ case 5:
+ stopConnectTCPCtrl();
+ break;
+ case 6:
+ stopPushURL();
+ break;
+ default:
+ break;
+ }
}
// bool GDDCdlg::eventFilter(QObject *watched, QEvent *event)
// {
@@ -202,447 +252,533 @@ void GDDCdlg::stopConnect(int type) {
// }
// 鼠标左键
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->setAIDetcLineEditText(QString::number((int)dir),
- 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);
+ // 如果鼠标左键按下
+ /*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->setAIDetcLineEditText(QString::number((int)dir),
+ QString::number((int)pitch));
+ }
+
+ }*/
+ if(ui->WgtffmpegVideo->underMouse())
+ {
+ if(event->button() == Qt::LeftButton)
+ {
+ //记录鼠标按下位置
+ _dragStartPositon = event->pos();
+ //QPointF b = event->globalPosition();
+ qDebug() << "局部坐标" << "x" << _dragStartPositon.x() << "y" << _dragStartPositon.y();
+ //qDebug() << "全局坐标" << "x" << b.x() << "y" << b.y();
+ _dragFlag = true;
+ }
+ }
+}
+// 鼠标移动
+void GDDCdlg::mouseMoveEvent(QMouseEvent *event) {
+ /*if (m_GDDCCmdDlg->detectionAreaSetting == true) {
+ // qDebug() << this->geometry().x();
+ // qDebug() << this->geometry().y();
+ QPointF sPoint1 = event->globalPosition();
+ // qDebug()<<"相对于屏幕坐标1:"<<"("<mapFromGlobal(sPoint2);
+ // qDebug()<<"相对于窗口坐标:"<<"("<WgtffmpegVideo->mapFromGlobal(sPoint1);
+ // qDebug()<<"相对于控件坐标:"<<"("<WgtffmpegVideo->width();
+ double b = ui->WgtffmpegVideo->height();
+ double dir = 1920 / a * widgetPoint.rx() - 960;
+ double pitch = -(1080 / b * widgetPoint.ry() - 540);
+ m_GDDCCmdDlg->setAIDetcLineEditText(QString::number((int)dir),
+ QString::number((int)pitch));
+ }*/
+ if(_dragFlag)//点击并且移动
+ {
+ QPointF diff = event->pos() - _dragStartPositon;
+ qDebug() << "x:" << diff.x() <<"y:" <setMoveParm(diff);
+ _moveFlag = true;
+ firstLocation->move((_dragStartPositon - QPoint(firstLocation->width()/2, firstLocation->height()/2)).toPoint());
+ lastLocation->move(event->pos() - QPoint(lastLocation->width() / 2, lastLocation->height() / 2));
+ firstLocation->show();
+ lastLocation->show();
+ }
+}
+
+void GDDCdlg::mouseReleaseEvent(QMouseEvent *event)
+{
+ if(ui->WgtffmpegVideo->underMouse())
+ {
+ if(event->button() == Qt::LeftButton && _moveFlag)
+ {
+ _moveFlag = false;
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[5] = (std::byte)0x70;
buffer[6] = (std::byte)0x00;
buffer[7] = (std::byte)0x00;
buffer[8] = (std::byte)0x00;
buffer[9] = (std::byte)0x00;
- // 发送5次
+ // 发送3次
m_GDDCCmdDlg->sendCurDate(buffer, 3);
+ firstLocation->hide();
+ lastLocation->hide();
+ }
+ else if(event->button() == Qt::LeftButton && _dragFlag)
+ {
+ // 目标跟踪
+ 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次
+ m_GDDCCmdDlg->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:"<<"("<mapFromGlobal(sPoint2);
- // qDebug()<<"相对于窗口坐标:"<<"("<WgtffmpegVideo->mapFromGlobal(sPoint1);
- // qDebug()<<"相对于控件坐标:"<<"("<WgtffmpegVideo->width();
- double b = ui->WgtffmpegVideo->height();
- double dir = 1920 / a * widgetPoint.rx() - 960;
- double pitch = -(1080 / b * widgetPoint.ry() - 540);
- m_GDDCCmdDlg->setAIDetcLineEditText(QString::number((int)dir),
- QString::number((int)pitch));
}
}
// 区域重绘
void GDDCdlg::resizeEvent(QResizeEvent *event) {
- resizeUI(); // 重新设置布局
+ resizeUI(); // 重新设置布局
}
// 重新设置布局
void GDDCdlg::resizeUI() {
- /* -------------->x
- * | (0,0)
- * |
- * |
- * |
- * |
- * ↓ y
- */
- double GDDCPageHeight = (double)(this->height());
- double GDDCPageWidth = (double)(this->width());
- // qDebug()<<"宽度,高度:"<setGeometry(0, GDDCPageHeight - cmdAreaHeight,
- (int)cmdAreaWidth, (int)cmdAreaHeight);
- m_GDDCCmdDlg->setTabWidgetGeometry(0, 0, cmdAreaWidth, cmdAreaHeight);
-
- /*********状态区位置和大小设置***********/
- double stateAreaHeight = GDDCPageHeight;
- double stateAreaWidth;
- if (isStatePageShow) {
- stateAreaWidth = STATEPAGEWIDTH;
- } else {
- stateAreaWidth = 0;
- }
- m_GDDCStateDlg->setGeometry(GDDCPageWidth - stateAreaWidth, 0,
- stateAreaWidth, stateAreaHeight);
- m_GDDCStateDlg->setTableViewGeometry(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, 0, 30, 30);
- ui->pushButtonSet->raise();
-
- /**********控制页显示隐藏按钮********/
- ui->pushButShowCmdPage->setGeometry(
- cmdAreaWidth * 0.5, GDDCPageHeight - cmdAreaHeight - 15, 50, 15);
- ui->pushButShowCmdPage->raise();
-
- /**********状态页显示隐藏按钮********/
- ui->pushButShowStatePage->setGeometry(
- GDDCPageWidth - stateAreaWidth - 15,
- (stateAreaHeight - cmdAreaHeight) * 0.5, 15, 50);
- ui->pushButShowStatePage->raise();
+ /* -------------->x
+ * | (0,0)
+ * |
+ * |
+ * |
+ * |
+ * ↓ y
+ */
+ double GDDCPageHeight = (double)(this->height());
+ double GDDCPageWidth = (double)(this->width());
+ // qDebug()<<"宽度,高度:"<setGeometry(GDDCPageWidth - cmdAreaWidth, 0, (int)cmdAreaWidth,
+ GDDCPageHeight);
+ m_GDDCCmdDlg->setTabWidgetGeometry(0, 0, cmdAreaWidth, cmdAreaHeight);
+
+ /*********状态区位置和大小设置***********/
+ double stateAreaHeight = 0;
+ double stateAreaWidth = 0;
+ if (isStatePageShow) {
+ stateAreaWidth = STATEPAGEWIDTH;
+ stateAreaHeight = GDDCPageHeight;
+ }
+ m_GDDCStateDlg->setGeometry(0, 0, stateAreaWidth, stateAreaHeight);
+ m_GDDCStateDlg->setTableViewGeometry(0, 0, stateAreaWidth, stateAreaHeight);
+
+ /*******视频区位置和大小设置********/
+ double VideoAreaHeight = GDDCPageHeight /*- cmdAreaHeight*/; // 视频区高度
+ double VideoAreaWidth = GDDCPageWidth - cmdAreaWidth; // 视频区宽度
+ // //高度值相对比较大
+ // 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 - cmdAreaWidth - 30, 0, 30, 30);
+ ui->pushButtonSet->raise();
+
+ /**********控制页显示隐藏按钮********/
+ ui->pushButShowCmdPage->setGeometry(GDDCPageWidth - cmdAreaWidth - 15,
+ GDDCPageHeight * 0.5, 15, 50);
+ ui->pushButShowCmdPage->raise();
+
+ /**********状态页显示隐藏按钮********/
+ ui->pushButShowStatePage->setGeometry(0 + stateAreaWidth,
+ GDDCPageHeight * 0.5, 15, 50);
+ ui->pushButShowStatePage->raise();
}
void GDDCdlg::setGlobalSetMap(
std::unordered_map &gSetMap) {
- if (m_DlgGDDCSet) {
- m_DlgGDDCSet->initPullURL(gSetMap["光电吊舱"].net.remoteIp);
- }
+ if (m_DlgGDDCSet) {
+ m_DlgGDDCSet->initPullURL(gSetMap["光电吊舱"].net.remoteIp);
+ }
}
// 定时器处理
void GDDCdlg::GDDCControlTimeOut() {
- if (m_GDDCCmdDlg->sendTimes > 0) { // 优先发送次数指令
- m_GDDCCmdDlg->sendTimes -= 1;
-
- // UDP控制
- if (connectFlag[3]) {
- udpSocket->writeDatagram(
- m_GDDCCmdDlg->m_DCcmdBuffer,
- m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),
- m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
- }
- // TCP控制
-
- // 串口控制
+ if (m_GDDCCmdDlg->sendTimes > 0) { // 优先发送次数指令
+ m_GDDCCmdDlg->sendTimes -= 1;
- if (m_GDDCCmdDlg->sendTimes == 0) {
- m_GDDCCmdDlg->clearTJDCCmdBuffer();
- }
- } else { // 发送常发帧或长按指令
- m_GDDCCmdDlg->UpdateDataTJDC();
- // UDP控制
- if (connectFlag[3]) {
- udpSocket->writeDatagram(
- m_GDDCCmdDlg->m_DCcmdBuffer,
- m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),
- m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
- }
+ // UDP控制
+ if (connectFlag[3]) {
+ udpSocket->writeDatagram(m_GDDCCmdDlg->m_DCcmdBuffer,
+ m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),
+ m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
+ }
+ // TCP控制
- // TCP控制
+ // 串口控制
- // 串口控制
+ if (m_GDDCCmdDlg->sendTimes == 0) {
+ m_GDDCCmdDlg->clearTJDCCmdBuffer();
+ }
+ } else { // 发送常发帧或长按指令
+ m_GDDCCmdDlg->UpdateDataTJDC();
+ // UDP控制
+ if (connectFlag[3]) {
+ udpSocket->writeDatagram(m_GDDCCmdDlg->m_DCcmdBuffer,
+ m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),
+ m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
}
+
+ // TCP控制
+
+ // 串口控制
+ }
}
// 播放视频1
void GDDCdlg::startConnectURL1() {
- if (!connectFlag[0]) {
- connectFlag[0] = true;
- /* ffmpegvideoDlg版本
- ffmpegvideoDlg *videoDlg = ui->WgtffmpegVideo;
- // 开始拉流
- videoDlg->m_flowType = m_DlgGDDCSet->m_FlowType;
- videoDlg->setStreamIP(m_DlgGDDCSet->m_playURL1);
- videoDlg->setPlayVideo(true);
- // ui->WgtffmpegVideo->play(m_DlgGDDCSet->m_playURL1);
- */
-
- VideoWidget *videoWidget = ui->WgtffmpegVideo;
- if (!videoWidget->play(m_DlgGDDCSet->m_playURL1)) {
- g_notifyManager->notify("获取视频流失败!", "", 2, 3000);
- // ui->WgtffmpegVideo->stopPlay();
- // m_DlgGDDCSet->setPullBtnText(false);
- };
- }
+ if (!connectFlag[0]) {
+ connectFlag[0] = true;
+ /* ffmpegvideoDlg版本
+ ffmpegvideoDlg *videoDlg = ui->WgtffmpegVideo;
+ // 开始拉流
+ videoDlg->m_flowType = m_DlgGDDCSet->m_FlowType;
+ videoDlg->setStreamIP(m_DlgGDDCSet->m_playURL1);
+ videoDlg->setPlayVideo(true);
+ // ui->WgtffmpegVideo->play(m_DlgGDDCSet->m_playURL1);
+ */
+
+ VideoWidget *videoWidget = ui->WgtffmpegVideo;
+ if (!videoWidget->play(m_DlgGDDCSet->m_playURL1)) {
+ g_notifyManager->notify("获取视频流失败!", "", 2, 3000);
+ // ui->WgtffmpegVideo->stopPlay();
+ // m_DlgGDDCSet->setPullBtnText(false);
+ };
+ }
}
// 关闭视频1
void GDDCdlg::stopConnectURL1() {
- if (connectFlag[0]) {
- connectFlag[0] = false;
- // ui->WgtffmpegVideo->setPlayVideo(false);
- ui->WgtffmpegVideo->stopPlay();
- }
+ if (connectFlag[0]) {
+ connectFlag[0] = false;
+ // ui->WgtffmpegVideo->setPlayVideo(false);
+ ui->WgtffmpegVideo->stopPlay();
+ }
}
// 播放视频2
void GDDCdlg::startConnectURL2() {
- if (!connectFlag[1]) {
- connectFlag[1] = true;
- }
+ if (!connectFlag[1]) {
+ connectFlag[1] = true;
+ }
}
// 关闭视频2
void GDDCdlg::stopConnectURL2() {
- if (connectFlag[1]) {
- connectFlag[1] = false;
- }
+ if (connectFlag[1]) {
+ connectFlag[1] = false;
+ }
}
void GDDCdlg::startConnectSerialCtrl() {
- if (!connectFlag[2]) {
- connectFlag[2] = true;
- }
+ if (!connectFlag[2]) {
+ connectFlag[2] = true;
+ }
}
void GDDCdlg::stopConnectSerialCtrl() {
- if (connectFlag[2]) {
- connectFlag[2] = false;
- }
+ 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 ipAddressesList =
- // QNetworkInterface::allAddresses();//获取本机ip
- udpSocket->bind(m_DlgGDDCSet->m_myPairNetwork.getLocalPort());
- connect(udpSocket, SIGNAL(readyRead()), this,
- SLOT(UDPMessageReceive()));
- connectFlag[3] = true;
- }
+ if (!connectFlag[3]) {
+ /*启动定时器*/
+ GDDCControlTimer = new QTimer();
+ GDDCControlTimer->setInterval(40);
+ connect(GDDCControlTimer, &QTimer::timeout, this,
+ [=]() { GDDCControlTimeOut(); });
+ GDDCControlTimer->start();
+
+ // 创建udp socket对象
+ udpSocket = new QUdpSocket(this);
+ /*接收*/
+ // QList 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;
- }
+ if (connectFlag[3]) {
+ // 关闭定时器
+ GDDCControlTimer->stop();
+ delete GDDCControlTimer;
+ udpSocket->abort(); // 关闭套接字,并丢缓冲区中的所有待处理数据
+ delete udpSocket;
+ connectFlag[3] = false;
+ }
}
// 开始TCP控制通信
void GDDCdlg::startConnectTCPCtrl() {
- if (!connectFlag[4]) {
- connectFlag[4] = true;
- }
+ if (!connectFlag[4]) {
+ connectFlag[4] = true;
+ }
}
// 停止TCP控制通信
void GDDCdlg::stopConnectTCPCtrl() {
- if (connectFlag[4]) {
- connectFlag[4] = false;
- }
+ if (connectFlag[4]) {
+ connectFlag[4] = false;
+ }
}
// 开始视频推流
void GDDCdlg::startPushURL() {
- if (!connectFlag[5]) {
- // //方式1:命令行推流
- // process = new QProcess();
- // connect(process, &QProcess::readyReadStandardOutput, this, [=]()
- // mutable
- // {
- // QString Output = process->readAllStandardOutput();
- // qDebug() << "Output:" << Output;
- // });
- // connect(process, &QProcess::readyReadStandardError, this, [=]()
- // mutable {
- // QString Error = process->readAllStandardError();
- // qDebug() << "Error Output:" << Error;
- // });
-
- // // process->start("cmd",QStringList()<<"/c"<<"ffmpeg -i
- // // rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -c copy
- // -f flv
- // // rtmp://182.92.130.23/app/test");
-
- // QStringList m_cmd;
- // QString str;
- // // str = "ffmpeg -i " + m_DlgGDDCSet->m_playURL1 + " -c copy -f flv "
- // +
- // // m_DlgGDDCSet->m_pushURL;
- // str = "ffmpeg -rtsp_transport tcp -i " + m_DlgGDDCSet->m_playURL1 + "
- // -c:v libx264 -c:a copy -f flv " +
- // m_DlgGDDCSet->m_pushURL;
- // m_cmd << "/c" << str;
- // process->start("cmd", m_cmd);
-
- // //方式2:代码推流
- // if(!connectFlag[0])
- // {
- // QMessageBox::information(NULL, tr("提示"), "请先开始连接",
- // QMessageBox::Ok); m_DlgGDDCSet->setPushStreamText("推送");
- // return;
- // }
-
- /* ffmpegvideoDlg版本
- ffmpegvideoDlg *videoDlg = ui->WgtffmpegVideo;
- videoDlg->setStreamIP(m_DlgGDDCSet->m_playURL1);
- videoDlg->setPushStreamIP(m_DlgGDDCSet->m_pushURL);
- qDebug() << "DLG:" << m_DlgGDDCSet->m_pushURL;
- videoDlg->setPushStream(true);
- */
-
- ui->WgtffmpegVideo->setPullURL(m_DlgGDDCSet->m_playURL1);
- if (!ui->WgtffmpegVideo->pushStream(m_DlgGDDCSet->m_pushURL)) {
- g_notifyManager->notify("推流失败!", "", 2, 3000);
- };
- m_DlgGDDCSet->setPushStreamText("停止推送");
-
- connectFlag[5] = true;
- }
+ if (!connectFlag[5]) {
+ // //方式1:命令行推流
+ // process = new QProcess();
+ // connect(process, &QProcess::readyReadStandardOutput, this, [=]()
+ // mutable
+ // {
+ // QString Output = process->readAllStandardOutput();
+ // qDebug() << "Output:" << Output;
+ // });
+ // connect(process, &QProcess::readyReadStandardError, this, [=]()
+ // mutable {
+ // QString Error = process->readAllStandardError();
+ // qDebug() << "Error Output:" << Error;
+ // });
+
+ // // process->start("cmd",QStringList()<<"/c"<<"ffmpeg -i
+ // // rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -c copy
+ // -f flv
+ // // rtmp://182.92.130.23/app/test");
+
+ // QStringList m_cmd;
+ // QString str;
+ // // str = "ffmpeg -i " + m_DlgGDDCSet->m_playURL1 + " -c copy -f flv "
+ // +
+ // // m_DlgGDDCSet->m_pushURL;
+ // str = "ffmpeg -rtsp_transport tcp -i " + m_DlgGDDCSet->m_playURL1 + "
+ // -c:v libx264 -c:a copy -f flv " +
+ // m_DlgGDDCSet->m_pushURL;
+ // m_cmd << "/c" << str;
+ // process->start("cmd", m_cmd);
+
+ // //方式2:代码推流
+ // if(!connectFlag[0])
+ // {
+ // QMessageBox::information(NULL, tr("提示"), "请先开始连接",
+ // QMessageBox::Ok); m_DlgGDDCSet->setPushStreamText("推送");
+ // return;
+ // }
+
+ /* ffmpegvideoDlg版本
+ ffmpegvideoDlg *videoDlg = ui->WgtffmpegVideo;
+ videoDlg->setStreamIP(m_DlgGDDCSet->m_playURL1);
+ videoDlg->setPushStreamIP(m_DlgGDDCSet->m_pushURL);
+ qDebug() << "DLG:" << m_DlgGDDCSet->m_pushURL;
+ videoDlg->setPushStream(true);
+ */
+
+ ui->WgtffmpegVideo->setPullURL(m_DlgGDDCSet->m_playURL1);
+ if (!ui->WgtffmpegVideo->pushStream(m_DlgGDDCSet->m_pushURL)) {
+ g_notifyManager->notify("推流失败!", "", 2, 3000);
+ };
+ m_DlgGDDCSet->setPushStreamText("停止推送");
+
+ connectFlag[5] = true;
+ }
}
// 停止视频推流
void GDDCdlg::stopPushURL() {
- if (connectFlag[5]) {
- // //方式1:命令行推流
- // if (process != nullptr) {
- // process->terminate();
- // process->close();
- // process->kill();
- // // 检查进程退出状态
- // if (process->exitStatus() == QProcess::CrashExit) {
- // qDebug() << "Process crashed";
- // } else {
- // qDebug() << "Process exited normally";
- // }
- // delete process;
-
- // // 推流进程未自动关闭,手动关闭
- // int pids = GetmPid(L"ffmpeg.exe");
- // qDebug() << "ffmpeg.exe进程的pid为:" << pids;
- // if (pids != 0) {
- // QStringList m_cmd;
- // m_cmd << "/c" << "taskkill /pid " << QString::number(pids) << "
- // -f"; QProcess::startDetached("cmd", m_cmd);
- // }
- // }
-
- // 方式2:代码推流
- // ui->WgtffmpegVideo->setPushStream(false);
- ui->WgtffmpegVideo->stopPushStream();
- m_DlgGDDCSet->setPushStreamText("推送");
-
- connectFlag[5] = false;
- }
+ if (connectFlag[5]) {
+ // //方式1:命令行推流
+ // if (process != nullptr) {
+ // process->terminate();
+ // process->close();
+ // process->kill();
+ // // 检查进程退出状态
+ // if (process->exitStatus() == QProcess::CrashExit) {
+ // qDebug() << "Process crashed";
+ // } else {
+ // qDebug() << "Process exited normally";
+ // }
+ // delete process;
+
+ // // 推流进程未自动关闭,手动关闭
+ // int pids = GetmPid(L"ffmpeg.exe");
+ // qDebug() << "ffmpeg.exe进程的pid为:" << pids;
+ // if (pids != 0) {
+ // QStringList m_cmd;
+ // m_cmd << "/c" << "taskkill /pid " << QString::number(pids) << "
+ // -f"; QProcess::startDetached("cmd", m_cmd);
+ // }
+ // }
+
+ // 方式2:代码推流
+ // ui->WgtffmpegVideo->setPushStream(false);
+ ui->WgtffmpegVideo->stopPushStream();
+ m_DlgGDDCSet->setPushStreamText("推送");
+
+ connectFlag[5] = false;
+ }
}
// 设置页面弹出
void GDDCdlg::pushButtonSet_clicked() {
- m_DlgGDDCSet->show();
- m_DlgGDDCSet->activateWindow(); // 置为顶层
+ 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());
+ 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);
- }
+ if (isCmdPageShow) {
+ m_GDDCCmdDlg->setVisible(false);
+ isCmdPageShow = false;
+ resizeUI();
+ ui->pushButShowCmdPage->setIcon(QIcon(":/res/left.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/right.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);
- }
+ if (isStatePageShow) {
+ m_GDDCStateDlg->setVisible(false);
+ isStatePageShow = false;
+ resizeUI();
+ ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png"));
+ } else {
+ m_GDDCStateDlg->setVisible(true);
+ isStatePageShow = true;
+ resizeUI();
+ ui->pushButShowStatePage->setIcon(QIcon(":/res/left.png"));
+ // ui->pushButton->setGeometry(this->width()/2,ui->tabWidget->height(),50,50);
+ }
}
void GDDCdlg::showErrorMessage(QString message, int type) {
- g_notifyManager->notify(message, "", type, 3000);
+ g_notifyManager->notify(message, "", type, 3000);
+}
+
+//鼠标滚轮事件
+void GDDCdlg::wheelEvent(QWheelEvent *event)
+{
+ if(ui->WgtffmpegVideo->underMouse())
+ {
+ // 获取滚轮的滚动方向和角度增量
+ _delta = event->angleDelta().y();
+ QPointF currentLocation = event->position();
+ // qDebug() << "当前位置:" << currentLocation;
+
+ if (_delta > 0)
+ {
+ // 向上滚动
+ //qDebug() << "鼠标滚轮向上滚动" << " 步长:" << _delta;
+ // if(wheelSub->isVisible())
+ // {
+ // wheelSub->hide();
+ // }
+ // wheelPlus->move((currentLocation - QPoint(wheelPlus->width()/2, wheelPlus->height()/2)).toPoint());
+ // wheelPlus->show();
+ emit wheelSendData(_delta);
+ }
+ else if (_delta < 0)
+ {
+ // 向下滚动
+ // if(wheelPlus->isVisible())
+ // {
+ // wheelPlus->hide();
+ // }
+ // wheelSub->move((currentLocation - QPoint(wheelSub->width()/2, wheelSub->height()/2)).toPoint());
+ // wheelSub->show();
+ emit wheelSendData(_delta);
+ //qDebug() << "鼠标滚轮事向下滚动" << " 步长:" << _delta;
+ }
+
+ if(!_wheelStopTime->isActive())
+ {
+ _wheelStopTime->start();
+ }
+ else
+ {
+ _wheelStopTime->stop();
+ _wheelStopTime->start();
+ }
+ }
+ QWidget::wheelEvent(event);
}
diff --git a/Src/GDDC/gddcdlg.h b/Src/GDDC/gddcdlg.h
index 623d4fd..d900383 100644
--- a/Src/GDDC/gddcdlg.h
+++ b/Src/GDDC/gddcdlg.h
@@ -17,14 +17,17 @@
#include
#include
-#include "gddcCmdDlg.h" //吊舱控制对话框
+#include "gddcCmdDlg.h" //吊舱控制对话框
#include "global.h"
// #include "ui_gddcCmdDlg.h" //吊舱控制对话框ui
-#include "gddcStateInfo.h" //吊舱状态信息显示对话框
+#include "gddcStateInfo.h" //吊舱状态信息显示对话框
// #include "ui_gddcStateInfo.h" //吊舱状态信息显示对话框
// #include "ui_gddcSet.h"
#include
#include
+#include
+#include
+#include
#include "QProcess"
@@ -34,74 +37,91 @@ class GDDCdlg;
}
class GDDCdlg : public QWidget {
- Q_OBJECT
+ Q_OBJECT
public:
- explicit GDDCdlg(QWidget *parent = nullptr);
- ~GDDCdlg();
+ explicit GDDCdlg(QWidget *parent = nullptr);
+ ~GDDCdlg();
private:
- Ui::GDDCdlg *ui;
- QTimer *GDDCControlTimer;
+ Ui::GDDCdlg *ui;
+ QTimer *GDDCControlTimer;
protected:
- void resizeEvent(QResizeEvent *event);
+ void resizeEvent(QResizeEvent *event);
public:
- void initWindow(); // 初始化窗口
- void initParam(); // 初始化参数
- void initSignalSlot(); // 初始化信号与槽
- void resizeUI(); // 重新设置布局
- void setGlobalSetMap(std::unordered_map &gSetMap);
+ void initWindow(); // 初始化窗口
+ void initParam(); // 初始化参数
+ void initSignalSlot(); // 初始化信号与槽
+ void resizeUI(); // 重新设置布局
+ void setGlobalSetMap(std::unordered_map &gSetMap);
- GDDCSet *m_DlgGDDCSet; // 光电吊舱设置对话框
- GDDCCmdDlg *m_GDDCCmdDlg; // 光电吊舱控制对话框
- GDDCStateInfo *m_GDDCStateDlg; // 光电吊舱状态数据对话框
+ GDDCSet *m_DlgGDDCSet; // 光电吊舱设置对话框
+ GDDCCmdDlg *m_GDDCCmdDlg; // 光电吊舱控制对话框
+ GDDCStateInfo *m_GDDCStateDlg; // 光电吊舱状态数据对话框
public:
- // socket对象
- QUdpSocket *udpSocket;
- // QString RemoteIP; //目标IP
- // QHostAddress RemoteAddr; //目标地址
- // quint16 RemotePort; //目标port
- QString localIP; // 本地IP
- QHostAddress localAddr; // 本地地址
- quint16 localPort; // 本地port
- QProcess *process; // 执行CMD
- QThread workerThread; // 线程
- // bool eventFilter(QObject *,QEvent *); //事件过滤器
- void mousePressEvent(QMouseEvent *event); // 事件过滤器
- void mouseMoveEvent(QMouseEvent *event); // 事件过滤器
+ // socket对象
+ QUdpSocket *udpSocket;
+ // QString RemoteIP; //目标IP
+ // QHostAddress RemoteAddr; //目标地址
+ // quint16 RemotePort; //目标port
+ QString localIP; // 本地IP
+ QHostAddress localAddr; // 本地地址
+ quint16 localPort; // 本地port
+ QProcess *process; // 执行CMD
+ QThread workerThread; // 线程
+ // bool eventFilter(QObject *,QEvent *); //事件过滤器
+ void mousePressEvent(QMouseEvent *event) override; // 事件过滤器
+ void mouseMoveEvent(QMouseEvent *event) override; // 事件过滤器
+ void mouseReleaseEvent(QMouseEvent *event) override;
- void startConnectURL1();
- void stopConnectURL1();
- void startConnectURL2();
- void stopConnectURL2();
- void startConnectSerialCtrl();
- void stopConnectSerialCtrl();
- void startConnectUDPCtrl();
- void stopConnectUDPCtrl();
- void startConnectTCPCtrl();
- void stopConnectTCPCtrl();
- void startPushURL();
- void stopPushURL();
+ void startConnectURL1();
+ void stopConnectURL1();
+ void startConnectURL2();
+ void stopConnectURL2();
+ void startConnectSerialCtrl();
+ void stopConnectSerialCtrl();
+ void startConnectUDPCtrl();
+ void stopConnectUDPCtrl();
+ void startConnectTCPCtrl();
+ void stopConnectTCPCtrl();
+ void startPushURL();
+ void stopPushURL();
public:
- bool pointSelectionTracking; // 选点跟踪
- bool Is_openVideo; // 视频是否已打开,默认未打开
- std::vector connectFlag; // 0视频流1;1视频流2;2串口通信,3网口通信
- bool isCmdPageShow; // 控制页是否显示
- bool isStatePageShow; // 状态页是否显示
- bool detectionAreaSetting; // 检测区域设置
+ bool pointSelectionTracking; // 选点跟踪
+ bool Is_openVideo; // 视频是否已打开,默认未打开
+ std::vector connectFlag; // 0视频流1;1视频流2;2串口通信,3网口通信
+ bool isCmdPageShow; // 控制页是否显示
+ bool isStatePageShow; // 状态页是否显示
+ bool detectionAreaSetting; // 检测区域设置
public slots:
- void GDDCControlTimeOut();
- void startConnect(int); // 开始连接
- void stopConnect(int); // 停止连接
- void UDPMessageReceive(); // udp数据接收
- void pushButtonSet_clicked();
- void pushButShowCmdPage_clicked();
- void pushButShowStatePage_clicked();
+ void GDDCControlTimeOut();
+ void startConnect(int); // 开始连接
+ void stopConnect(int); // 停止连接
+ void UDPMessageReceive(); // udp数据接收
+ void pushButtonSet_clicked();
+ void pushButShowCmdPage_clicked();
+ void pushButShowStatePage_clicked();
+
+ void showErrorMessage(QString message, int type);
- void showErrorMessage(QString message, int type);
+protected:
+ void wheelEvent(QWheelEvent* event) override;
+private:
+ int _delta; //滚轮滚动量
+ QTimer *_wheelStopTime;
+ QPointF _dragStartPositon; //记录滑动操作当前点击的局部坐标
+ bool _dragFlag; //记录滑动初始标志
+ bool _moveFlag; //记录正在滑动中的标志
+ QLabel* firstLocation;
+ QLabel* lastLocation;
+ // QPointF _currentLocation; //记录鼠标当前位置
+ QLabel* wheelPlus; //鼠标+图标
+ QLabel* wheelSub; //鼠标-图标
+signals:
+ void wheelSendData(int value);
};
-#endif // GDDCDLG_H
+#endif // GDDCDLG_H
diff --git a/Src/GDDC/res.qrc b/Src/GDDC/res.qrc
new file mode 100644
index 0000000..55b2660
--- /dev/null
+++ b/Src/GDDC/res.qrc
@@ -0,0 +1,13 @@
+
+
+ Pod/podDown.png
+ Pod/podLeft.png
+ Pod/podRight.png
+ Pod/podUp.png
+ Pod/Center.png
+ Pod/c.png
+ Pod/circle.png
+ Pod/plus.png
+ Pod/sub.png
+
+
diff --git a/Src/Video/cffmpeg_decode.cpp b/Src/Video/cffmpeg_decode.cpp
index d635d5a..051bcd8 100644
--- a/Src/Video/cffmpeg_decode.cpp
+++ b/Src/Video/cffmpeg_decode.cpp
@@ -85,7 +85,7 @@ bool Cffmpeg_decode::open_input_file() {
// av_dict_set(&avdic, "listen_timeout", "200000", 0);
// 在尝试连接到一个流或网络资源时,等待的最长时间。如果在这个时间内无法建立连接,就会返回超时错误
av_dict_set(&avdic, "stimeout", "5000000", 0); // 设置超时5秒
- // av_dict_set(&avdic, "max_delay", "300000", 0); // 设置最大时延300ms
+ av_dict_set(&avdic, "max_delay", "300000", 0); // 设置最大时延300ms
av_dict_set(&avdic, "tune", "zerolatency", 0); // 实时编码
av_dict_set(&avdic, "preset", "ultrafast", 0); // faster
// av_dict_set(&avdic, "threads", "auto", 0); // 自动开启线程数
diff --git a/Src/VideoGL/videowidget.cpp b/Src/VideoGL/videowidget.cpp
index 2de644d..3bf47e9 100644
--- a/Src/VideoGL/videowidget.cpp
+++ b/Src/VideoGL/videowidget.cpp
@@ -572,3 +572,8 @@ void VideoWidget::receiveErrorMessage(QString message, int type) {
// qDebug() << "receive message:" << message;
emit sendErrorMessageSignal(message, type);
}
+
+QSizeF VideoWidget::getCurImgSize()
+{
+ return m_zoomSize;
+}
diff --git a/Src/VideoGL/videowidget.h b/Src/VideoGL/videowidget.h
index 235e89f..b3c67e5 100644
--- a/Src/VideoGL/videowidget.h
+++ b/Src/VideoGL/videowidget.h
@@ -113,6 +113,8 @@ private:
signals:
void startPullSignal();
void sendErrorMessageSignal(QString message, int type);
+public:
+ QSizeF getCurImgSize();
};
#endif // VIDEOWIDGET_H
diff --git a/main.cpp b/main.cpp
index 0432eee..002d08c 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2,12 +2,13 @@
#include
#include
#include
-
+#include
#include "mainwindow.h"
int main(int argc, char *argv[]) {
// QApplication::setAttribute(Qt::AA_UseOpenGLES);
// qputenv("QTWEBENGINE_CHROMIUM_FLAGS", "--enable-gpu-rasterization");
+ QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
QApplication a(argc, argv);
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();