You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PayloadAPP/Src/GDDC/gddcdlg.cpp

2339 lines
60 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "gddcdlg.h"
#include "ui_gddcdlg.h"
#include <QDateTime>
#include <QNetworkInterface>
#include <QTabBar>
#include <QTabWidget>
#include <windows.h>
#include <QDir>
#define CONFIG_PATH "config.ini"
GDDCdlg::GDDCdlg(QWidget *parent)
: QWidget(parent)
, ui(new Ui::GDDCdlg)
{
ui->setupUi(this);
initWindow();
initParam();
initSignalSlot();
/*启动定时器*/
GDDCControlTimer = new QTimer();
GDDCControlTimer->setInterval(100);
connect(GDDCControlTimer,&QTimer::timeout,this,[=](){
GDDCControlTimeOut();
});
GDDCControlTimer->start();
}
GDDCdlg::~GDDCdlg()
{
//关闭定时器
GDDCControlTimer->stop();
delete GDDCControlTimer;
//停止所有通信
stopConnectURL1();
stopConnectURL2();
stopConnectSerialCtrl();
stopConnectUDPCtrl();
stopConnectTCPCtrl();
delete m_DlgGDDCSet;
delete m_tableModel;
delete ui;
}
//初始化window
void GDDCdlg::initWindow()
{
QPalette palette;
//设置主窗口背景颜色
palette.setColor(QPalette::Window,QColor(50, 50, 50));
this->setPalette(palette);
//嵌入到主窗口
//int m_height=this->size().rheight();
//int m_width = (m_height*16)/9;
//ui->WgtffmpegVideo->resize(m_width,m_height);
// ui->WgtffmpegVideo->move();
setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
hide();
m_DlgGDDCSet = new GDDCSet();
}
//初始化参数
void GDDCdlg::initParam()
{
m_DCcmdBuffer.resize(cmdLength);
memset(TJDCCmdBuffer,0,10);
/*系统控制*/
ui->comboBox_1_1->addItem("自定义模板");
ui->comboBox_1_1->addItem("16*16");
ui->comboBox_1_1->addItem("32*32");
ui->comboBox_1_1->addItem("64*64");
ui->comboBox_1_1->addItem("128*128");
ui->comboBox_1_2->addItem("红外");
ui->comboBox_1_2->addItem("可见光");
ui->comboBox_1_2->addItem("上下分屏");
ui->comboBox_1_2->addItem("可见光画中画(暂不支持)");
ui->comboBox_1_2->addItem("红外画中画(暂不支持)");
ui->comboBox_1_2->addItem("左右分屏(暂不支持)");
ui->lineEdit_1_1->setText("24");
ui->lineEdit_1_2->setText("24");
ui->lineEdit_1_3->setText("192");
ui->lineEdit_1_4->setText("168");
ui->lineEdit_1_5->setText("1");
ui->lineEdit_1_6->setText("160");
/*载荷公用*/
ui->comboBox_2_1->addItem("隐藏");
ui->comboBox_2_1->addItem("部分显示");
ui->comboBox_2_1->addItem("全部显示(默认)");
//ui->comboBox_2_1->addItem("OSD显示内容设置");
//ui->comboBox_2_1->addItem("OSD显示颜色和中英文设置");
/*可见光*/
param_pushButton_3_9 = false;
ui->comboBox_3_1->addItem("");
ui->comboBox_3_1->addItem("");
ui->comboBox_3_1->addItem("");
ui->comboBox_3_1->addItem("");
paramDigitalZoom = 0;
ui->lineEdit_3_1->setText("4.3");
/*红外*/
ui->comboBox_4_1->addItem("循环切换");
ui->comboBox_4_1->addItem("白热");
ui->comboBox_4_1->addItem("黑热");
ui->comboBox_4_1->addItem("蓝红黄");
ui->comboBox_4_1->addItem("紫红黄");
ui->comboBox_4_1->addItem("蓝绿红");
ui->comboBox_4_1->addItem("彩虹1");
ui->comboBox_4_1->addItem("彩虹2");
ui->comboBox_4_1->addItem("黑红");
ui->comboBox_4_1->addItem("墨绿红");
ui->comboBox_4_1->addItem("蓝绿红粉");
ui->comboBox_4_1->addItem("混合色");
ui->comboBox_4_1->addItem("红头");
ui->comboBox_4_2->addItem("");
ui->comboBox_4_2->addItem("1");
ui->comboBox_4_2->addItem("2");
ui->comboBox_4_2->addItem("3");
ui->comboBox_4_2->addItem("4");
ui->comboBox_4_2->addItem("5");
ui->comboBox_4_2->addItem("6");
ui->comboBox_4_2->addItem("7");
/*稳定平台*/
ui->comboBox_5_1->addItem("非常慢");
ui->comboBox_5_1->addItem("很慢");
ui->comboBox_5_1->addItem("");
ui->comboBox_5_1->addItem("较慢");
ui->comboBox_5_1->addItem("中等");
ui->comboBox_5_1->addItem("较快");
ui->comboBox_5_1->addItem("");
ui->comboBox_5_1->addItem("很快");
ui->comboBox_5_1->addItem("非常快");
ui->comboBox_5_1->setCurrentIndex(4);
ui->radioButton_5_1->setChecked(true);
paramIsFrame = true;
ui->lineEdit_5_1->setText("100");
ui->lineEdit_5_2->setText("5");
ui->lineEdit_5_3->setText("50");
ui->lineEdit_5_4->setText("50");
/*AI检测*/
ui->comboBox_6_1->addItem("绿框目标");
ui->comboBox_6_1->addItem("下发编号目标");
ui->comboBox_6_2->addItem("红外");
ui->comboBox_6_2->addItem("可见光");
ui->comboBox_6_3->addItem("常规检测");
ui->comboBox_6_3->addItem("兴趣区域检测");
ui->comboBox_6_3->addItem("分块遍历检测");
ui->lineEdit_6_1->setText("960");
ui->lineEdit_6_2->setText("540");
detectionAreaSetting = false;
connectFlag.resize(10,false);
ui->pushButShowCmdArea->setIcon(QIcon(":/res/down.png"));
m_tableModel = new QStandardItemModel();
m_tableModel->setHorizontalHeaderItem(0,new QStandardItem("类型"));
m_tableModel->setHorizontalHeaderItem(1,new QStandardItem("详细信息"));
// m_tableModel->setVerticalHeaderItem(0,new QStandardItem("序号"));
ui->tableViewShowIState->setModel(m_tableModel);
//栅格显示或隐藏
ui->tableViewShowIState->setShowGrid(true);
// 固定表格宽度不可扩展,不可手动调整宽度
ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
// 表格宽度随内容自动扩展
//ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
// 表格宽度自动根据UI进行计算不可手动调整宽度
//ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// 固定表格高度不可扩展,不可手动调整高度
ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
// 表格高度随内容自动扩展
//ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
// 表格高度自动根据UI进行计算不可手动调整高度
//ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableViewShowIState->setColumnWidth(0,100);
ui->tableViewShowIState->setColumnWidth(1,100);
m_tableModel->setItem(0,0,new QStandardItem("跟踪源类型"));
m_tableModel->setItem(1,0,new QStandardItem("姿态方位角"));
m_tableModel->setItem(2,0,new QStandardItem("姿态俯仰角"));
m_tableModel->setItem(3,0,new QStandardItem("姿态横滚角"));
m_tableModel->setItem(4,0,new QStandardItem("中心点宽坐标"));
m_tableModel->setItem(5,0,new QStandardItem("中心点高坐标"));
m_tableModel->setItem(6,0,new QStandardItem("可见光焦距"));
m_tableModel->setItem(7,0,new QStandardItem("可见光视场角"));
m_tableModel->setItem(8,0,new QStandardItem("红外焦距"));
m_tableModel->setItem(9,0,new QStandardItem("红外视场角"));
m_tableModel->setItem(10,0,new QStandardItem("激光测距值"));
m_tableModel->setItem(11,0,new QStandardItem("命令反馈"));
m_tableModel->setItem(12,0,new QStandardItem("视频输出类型"));
m_tableModel->setItem(13,0,new QStandardItem("红外电子变倍"));
m_tableModel->setItem(14,0,new QStandardItem("可见光电子放大"));
m_tableModel->setItem(15,0,new QStandardItem("吊舱框架方位角"));
m_tableModel->setItem(16,0,new QStandardItem("吊舱框架俯仰角"));
m_tableModel->setItem(17,0,new QStandardItem("吊舱框架横滚角"));
m_tableModel->setItem(18,0,new QStandardItem("TF剩余百分比"));
m_tableModel->setItem(19,0,new QStandardItem("TF卡总容量"));
m_tableModel->setItem(20,0,new QStandardItem("TF插卡状态"));
m_tableModel->setItem(21,0,new QStandardItem("拍照"));
m_tableModel->setItem(22,0,new QStandardItem("视频抓图"));
m_tableModel->setItem(23,0,new QStandardItem("连拍"));
m_tableModel->setItem(24,0,new QStandardItem("视频连续抓图"));
m_tableModel->setItem(25,0,new QStandardItem("录像状态"));
m_tableModel->setItem(26,0,new QStandardItem("文件命名"));
m_tableModel->setItem(27,0,new QStandardItem("当前图像反馈"));
m_tableModel->setItem(28,0,new QStandardItem("载荷类型"));
m_tableModel->setItem(29,0,new QStandardItem("红外机芯"));
m_tableModel->setItem(30,0,new QStandardItem("可见光机芯"));
m_tableModel->setItem(31,0,new QStandardItem("陀螺仪"));
m_tableModel->setItem(32,0,new QStandardItem("角度传感器"));
m_tableModel->setItem(33,0,new QStandardItem("电机"));
m_tableModel->setItem(34,0,new QStandardItem("压缩"));
m_tableModel->setItem(35,0,new QStandardItem("综合控制"));
m_tableModel->setItem(36,0,new QStandardItem("吊舱准备状态"));
m_tableModel->setItem(37,0,new QStandardItem("红外伪彩"));
m_tableModel->setItem(38,0,new QStandardItem("红外图像增强"));
m_tableModel->setItem(39,0,new QStandardItem("当前载荷版本"));
m_tableModel->setItem(40,0,new QStandardItem("目标定位经度"));
m_tableModel->setItem(41,0,new QStandardItem("目标定位纬度"));
m_tableModel->setItem(42,0,new QStandardItem("目标海拔高度"));
m_tableModel->setItem(43,0,new QStandardItem("姿态指示完成反馈"));
m_tableModel->setItem(44,0,new QStandardItem("目标宽"));
m_tableModel->setItem(45,0,new QStandardItem("目标高"));
m_tableModel->setItem(46,0,new QStandardItem("目标类型"));
m_tableModel->setItem(47,0,new QStandardItem("跟踪状态"));
m_tableModel->setItem(48,0,new QStandardItem("最高温"));
m_tableModel->setItem(49,0,new QStandardItem("配置保存"));
m_tableModel->setItem(50,0,new QStandardItem("伺服状态"));
m_tableModel->setItem(51,0,new QStandardItem("超温报警"));
m_tableModel->setItem(52,0,new QStandardItem("红点指示"));
//ui->tableViewShowIState->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(255,228,225);color: black;}");
}
//初始化信号与槽
void GDDCdlg::initSignalSlot()
{
connect(m_DlgGDDCSet,SIGNAL(SignalStartConnect(int)),this,SLOT(startConnect(int)));
connect(m_DlgGDDCSet,SIGNAL(SignalStopConnect(int)),this,SLOT(stopConnect(int)));
}
//槽函数开始连接
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;
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;
default :
break;
}
}
// bool GDDCdlg::eventFilter(QObject *watched, QEvent *event)
// {
// qDebug() << this->geometry().x();
// qDebug() << this->geometry().y();
// QPoint sPoint2=QCursor::pos();
// qDebug()<<"相对于屏幕坐标2:"<<"("<<sPoint2.rx()<<","<<sPoint2.ry()<<")";
// QPoint windowPoint=this->mapFromGlobal(sPoint2);
// qDebug()<<"相对于窗口坐标:"<<"("<<windowPoint.rx()<<","<<windowPoint.ry()<<")";
// return true;
// }
//鼠标左键
void GDDCdlg::mousePressEvent(QMouseEvent *event)
{
//如果鼠标左键按下
if (event->type() == QEvent::MouseButtonPress) {
//AI检测区域设置
if(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);
ui->lineEdit_6_1->setText(QString::number((int)dir));
ui->lineEdit_6_2->setText(QString::number((int)pitch));
}
//目标跟踪
if(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次
sendCurDate(buffer,3);
}
}
}
//鼠标移动
void GDDCdlg::mouseMoveEvent(QMouseEvent *event)
{
if(detectionAreaSetting==true)
{
qDebug() << this->geometry().x();
qDebug() << this->geometry().y();
QPointF sPoint1=event->globalPosition();
//qDebug()<<"相对于屏幕坐标1:"<<"("<<sPoint1.rx()<<","<<sPoint1.ry()<<")";
QPointF sPoint2=QCursor::pos();
//qDebug()<<"相对于屏幕坐标2:"<<"("<<sPoint2.rx()<<","<<sPoint2.ry()<<")";
QPointF windowPoint=this->mapFromGlobal(sPoint2);
//qDebug()<<"相对于窗口坐标:"<<"("<<windowPoint.rx()<<","<<windowPoint.ry()<<")";
QPointF widgetPoint=ui->WgtffmpegVideo->mapFromGlobal(sPoint1);
//qDebug()<<"相对于控件坐标:"<<"("<<widgetPoint.rx()<<","<<widgetPoint.ry()<<")";
//更新LineEdit信息
double a = ui->WgtffmpegVideo->width();
double b = ui->WgtffmpegVideo->height();
double dir = 1920/a*widgetPoint.rx()-960;
double pitch = -(1080/b*widgetPoint.ry()-540);
ui->lineEdit_6_1->setText(QString::number((int)dir));
ui->lineEdit_6_2->setText(QString::number((int)pitch));
}
}
//区域重绘
void GDDCdlg::resizeEvent(QResizeEvent *event)
{
resizeUI(); //重新设置布局
}
//重新设置布局
void GDDCdlg::resizeUI()
{
/* -------------->x
* | (0,0)
* |
* |
* |
* |
* ↓ y
*/
double GDDCPageHeight = (double)(this->height());
double GDDCPageWidth = (double)(this->width());
//qDebug()<<"宽度,高度:"<<GDDCPageHeight<<GDDCPageWidth;
/******控制区位置和大小设置*****/
double cmdAreaHeight;
double cmdAreaWidth = GDDCPageWidth-250;
if(ui->tabWidget->isVisible()){cmdAreaHeight = 250;}
else{cmdAreaHeight = 0;}
ui->tabWidget->setGeometry(0,GDDCPageHeight-cmdAreaHeight,(int)cmdAreaWidth,(int)cmdAreaHeight);
/*********状态区位置和大小设置***********/
double stateAreaHeight = GDDCPageHeight;
double stateAreaWidth;
if(ui->tableViewShowIState->isVisible()){stateAreaWidth = 250;}
else{stateAreaWidth = 0;}
ui->tableViewShowIState->setGeometry(GDDCPageWidth-stateAreaWidth,0,stateAreaWidth,stateAreaHeight);
//ui->listViewShowCmdArea->lower();
/*******视频区位置和大小设置********/
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->pushButtonSet->setGeometry(GDDCPageWidth-stateAreaWidth-45,0,40,40);
/**********控制指令区显示隐藏按钮********/
ui->pushButShowCmdArea->setGeometry((GDDCPageWidth-200)*0.5,GDDCPageHeight-cmdAreaHeight-20,40,20);
ui->pushButShowCmdArea->raise();
}
//定时器处理
void GDDCdlg::GDDCControlTimeOut()
{
if(sendTimes>0)
{
sendTimes-=1;
//UDP控制
if(connectFlag[3])
{
udpSocket->writeDatagram(m_DCcmdBuffer,m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
}
//TCP控制
//串口控制
if(sendTimes==0)
{
clearTJDCCmdBuffer();
}
}
else
{
UpdateDataTJDC();
//UDP控制
if(connectFlag[3])
{
udpSocket->writeDatagram(m_DCcmdBuffer,m_DlgGDDCSet->m_myPairNetwork.getRemoteAddr(),m_DlgGDDCSet->m_myPairNetwork.getRemotePort());
}
//TCP控制
//串口控制
}
}
//更新m_DCcmdBuffer
void GDDCdlg::UpdateDataTJDC()
{
/******************模拟发送天进吊舱控制指令************************/
m_DCcmdBuffer[0] = 0xfb;//帧头
m_DCcmdBuffer[1] = 0x2C;//帧头
m_DCcmdBuffer[2] = (char)TJDCCmdBuffer[0];
m_DCcmdBuffer[3] = (char)TJDCCmdBuffer[1];
m_DCcmdBuffer[4] = (char)TJDCCmdBuffer[2];
m_DCcmdBuffer[5] = (char)TJDCCmdBuffer[3];
m_DCcmdBuffer[6] = (char)TJDCCmdBuffer[4];
for(int i=7;i<13;++i)
{
m_DCcmdBuffer[i] = 0x00;
}
/*精确到毫秒级*/
QDateTime st = QDateTime::currentDateTime();//获取系统当前的时间
//QString formattedDateTime = st.toString("yyyy-MM-dd hh:mm:ss");
int year = st.date().year()-2000;
int month = st.date().month();
int day = st.date().day();
int hour = st.time().hour();
int minute = st.time().minute();
int second = st.time().second();
int msec = st.time().msec();
m_DCcmdBuffer[13] = (char)year;
m_DCcmdBuffer[14] = (char)month;
m_DCcmdBuffer[15] = (char)day;
m_DCcmdBuffer[16] = (char)hour;
m_DCcmdBuffer[17] = (char)minute;
m_DCcmdBuffer[18] = (char)second;
m_DCcmdBuffer[19] = (char)msec;
for(int i=20;i<37;++i)
{
m_DCcmdBuffer[i] = 0x00;
}
m_DCcmdBuffer[37] = (char)TJDCCmdBuffer[5];
m_DCcmdBuffer[38] = (char)TJDCCmdBuffer[6];
m_DCcmdBuffer[39] = (char)TJDCCmdBuffer[7];
m_DCcmdBuffer[40] = (char)TJDCCmdBuffer[8];
m_DCcmdBuffer[41] = (char)TJDCCmdBuffer[9];
char S2 = (char)m_DCcmdBuffer[2];
char S3 = (char)m_DCcmdBuffer[3];
for(int i = 4;i<43;++i)
{
S3 = S3^S2;
S2 = m_DCcmdBuffer[i];
}
m_DCcmdBuffer[42] = S3;
m_DCcmdBuffer[43] = 0xF0;
// QString msg = "12312";//发送的消息内容
// QByteArray str;// = msg.toUtf8();
}
//赋值后清空TJDCCmdBuffer
void GDDCdlg::clearTJDCCmdBuffer()
{
memset(TJDCCmdBuffer,0,sizeof(TJDCCmdBuffer));
}
//设置发送数据和次数
void GDDCdlg::sendCurDate(std::byte *buffer, int num)
{
sendTimes = num;
for(int i=0;i<10;++i)
{
TJDCCmdBuffer[i] = buffer[i];
}
UpdateDataTJDC();
}
//拍一张照 按下
void GDDCdlg::on_pushButton_11_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x32;
}
//松开
void GDDCdlg::on_pushButton_11_released()
{
clearTJDCCmdBuffer();
}
//授时
void GDDCdlg::on_pushButton_1_1_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x20;
}
void GDDCdlg::on_pushButton_1_1_released()
{
clearTJDCCmdBuffer();
}
//目标模板设置
void GDDCdlg::on_pushButton_1_2_pressed()
{
uint chose = ui->comboBox_1_1->currentIndex();
if(chose==0)
{
uint str = ui->lineEdit_1_1->text().toUInt();
uint str2 = ui->lineEdit_1_2->text().toUInt();
TJDCCmdBuffer[0]=(std::byte)0x23;
TJDCCmdBuffer[1]=(std::byte)0x00;
TJDCCmdBuffer[2]=(std::byte)0x00;
TJDCCmdBuffer[3]=(std::byte)str;
TJDCCmdBuffer[4]=(std::byte)str2;
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x23;
TJDCCmdBuffer[1]=(std::byte)chose;
}
}
void GDDCdlg::on_pushButton_1_2_released()
{
clearTJDCCmdBuffer();
}
//目标模板设置
void GDDCdlg::on_pushButton_1_3_pressed()
{
uint selection = ui->comboBox_1_2->currentIndex();
TJDCCmdBuffer[0]=(std::byte)0x25;
TJDCCmdBuffer[1]=(std::byte)selection;
}
void GDDCdlg::on_pushButton_1_3_released()
{
clearTJDCCmdBuffer();
}
//吊舱IP设置
void GDDCdlg::on_pushButton_1_4_pressed()
{
uint ip1 = ui->lineEdit_1_3->text().toUInt();
uint ip2 = ui->lineEdit_1_4->text().toUInt();
uint ip3 = ui->lineEdit_1_5->text().toUInt();
uint ip4 = ui->lineEdit_1_6->text().toUInt();
TJDCCmdBuffer[0]=(std::byte)0x29;
TJDCCmdBuffer[1]=(std::byte)ip1;
TJDCCmdBuffer[2]=(std::byte)ip2;
TJDCCmdBuffer[3]=(std::byte)ip3;
TJDCCmdBuffer[4]=(std::byte)ip4;
}
void GDDCdlg::on_pushButton_1_4_released()
{
clearTJDCCmdBuffer();
}
//图像切换
void GDDCdlg::on_pushButton_2_1_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x31;
}
void GDDCdlg::on_pushButton_2_1_released()
{
clearTJDCCmdBuffer();
}
//抓图
void GDDCdlg::on_pushButton_2_2_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x32;
}
void GDDCdlg::on_pushButton_2_2_released()
{
clearTJDCCmdBuffer();
}
//开始连续抓图
void GDDCdlg::on_pushButton_2_3_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x32;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_2_3_released()
{
clearTJDCCmdBuffer();
}
//停止连续抓图
void GDDCdlg::on_pushButton_2_4_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x32;
TJDCCmdBuffer[1]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_2_4_released()
{
clearTJDCCmdBuffer();
}
//选点跟踪
void GDDCdlg::on_pushButton_2_5_pressed()
{
pointSelectionTracking = true;
}
void GDDCdlg::on_pushButton_2_5_released()
{
clearTJDCCmdBuffer();
}
//取消跟踪
void GDDCdlg::on_pushButton_2_6_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x3B;
pointSelectionTracking = false;
}
void GDDCdlg::on_pushButton_2_6_released()
{
clearTJDCCmdBuffer();
}
//开始录像
void GDDCdlg::on_pushButton_2_7_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x33;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_2_7_released()
{
clearTJDCCmdBuffer();
}
//停止录像
void GDDCdlg::on_pushButton_2_8_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x33;
TJDCCmdBuffer[1]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_2_8_released()
{
clearTJDCCmdBuffer();
}
//单次测距
void GDDCdlg::on_pushButton_2_9_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x3D;
}
void GDDCdlg::on_pushButton_2_9_released()
{
clearTJDCCmdBuffer();
}
//开始连续测距
void GDDCdlg::on_pushButton_2_10_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x3E;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_2_10_released()
{
clearTJDCCmdBuffer();
}
//停止连续测距
void GDDCdlg::on_pushButton_2_11_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x3F;
}
void GDDCdlg::on_pushButton_2_11_released()
{
clearTJDCCmdBuffer();
}
//字符叠加设置
void GDDCdlg::on_pushButton_2_12_pressed()
{
uint sel = ui->comboBox_2_1->currentIndex();
TJDCCmdBuffer[0]=(std::byte)0x37;
TJDCCmdBuffer[1]=(std::byte)sel;
}
void GDDCdlg::on_pushButton_2_12_released()
{
clearTJDCCmdBuffer();
}
//增益+
void GDDCdlg::on_pushButton_3_1_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x05;
TJDCCmdBuffer[2]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_3_1_released()
{
clearTJDCCmdBuffer();
}
//增益-
void GDDCdlg::on_pushButton_3_2_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x05;
TJDCCmdBuffer[2]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_3_2_released()
{
clearTJDCCmdBuffer();
}
//自动增益
void GDDCdlg::on_pushButton_3_3_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x05;
TJDCCmdBuffer[2]=(std::byte)0x03;
}
void GDDCdlg::on_pushButton_3_3_released()
{
clearTJDCCmdBuffer();
}
//变倍+
void GDDCdlg::on_pushButton_3_4_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_3_4_released()
{
clearTJDCCmdBuffer();
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
//变倍-
void GDDCdlg::on_pushButton_3_5_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_3_5_released()
{
clearTJDCCmdBuffer();
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
//可见光镜头初始化
void GDDCdlg::on_pushButton_3_6_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x03;
}
void GDDCdlg::on_pushButton_3_6_released()
{
clearTJDCCmdBuffer();
}
//电子稳像开
void GDDCdlg::on_pushButton_3_7_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x04;
TJDCCmdBuffer[2]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_3_7_released()
{
clearTJDCCmdBuffer();
}
//电子稳像关
void GDDCdlg::on_pushButton_3_8_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x04;
TJDCCmdBuffer[2]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_3_8_released()
{
clearTJDCCmdBuffer();
}
//低照度模式
void GDDCdlg::on_pushButton_3_9_pressed()
{
if(param_pushButton_3_9)
{
TJDCCmdBuffer[0]=(std::byte)0x4A;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x4A;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
}
void GDDCdlg::on_pushButton_3_9_released()
{
clearTJDCCmdBuffer();
}
//自动ICR开
void GDDCdlg::on_pushButton_3_10_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x03;
TJDCCmdBuffer[2]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_3_10_released()
{
clearTJDCCmdBuffer();
}
//自动ICR关
void GDDCdlg::on_pushButton_3_11_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x03;
TJDCCmdBuffer[2]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_3_11_released()
{
clearTJDCCmdBuffer();
}
//恢复默认
void GDDCdlg::on_pushButton_3_12_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x3F;
}
void GDDCdlg::on_pushButton_3_12_released()
{
clearTJDCCmdBuffer();
}
//恢复出厂设置
void GDDCdlg::on_pushButton_3_13_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x06;
}
void GDDCdlg::on_pushButton_3_13_released()
{
clearTJDCCmdBuffer();
}
//亮度+
void GDDCdlg::on_pushButton_3_14_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x02;
TJDCCmdBuffer[2]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_3_14_released()
{
clearTJDCCmdBuffer();
}
//亮度-
void GDDCdlg::on_pushButton_3_15_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x02;
TJDCCmdBuffer[2]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_3_15_released()
{
clearTJDCCmdBuffer();
}
//自动亮度
void GDDCdlg::on_pushButton_3_16_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x02;
TJDCCmdBuffer[2]=(std::byte)0x03;
}
void GDDCdlg::on_pushButton_3_16_released()
{
clearTJDCCmdBuffer();
}
// //亮度输入设置
// void GDDCdlg::on_pushButton_3_17_pressed()
// {
// TJDCCmdBuffer[0]=(std::byte)0x3F;
// }
// void GDDCdlg::on_pushButton_3_17_released()
// {
// clearTJDCCmdBuffer();
// }
//对比度+
void GDDCdlg::on_pushButton_3_18_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x01;
TJDCCmdBuffer[2]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_3_18_released()
{
clearTJDCCmdBuffer();
}
//对比度-
void GDDCdlg::on_pushButton_3_19_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x01;
TJDCCmdBuffer[2]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_3_19_released()
{
clearTJDCCmdBuffer();
}
//自动对比度
void GDDCdlg::on_pushButton_3_20_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x41;
TJDCCmdBuffer[1]=(std::byte)0x01;
TJDCCmdBuffer[2]=(std::byte)0x03;
}
void GDDCdlg::on_pushButton_3_20_released()
{
clearTJDCCmdBuffer();
}
// //对比度输入设置
// void GDDCdlg::on_pushButton_3_21_pressed()
// {
// TJDCCmdBuffer[0]=(std::byte)0x3F;
// }
// void GDDCdlg::on_pushButton_3_21_released()
// {
// clearTJDCCmdBuffer();
// }
//焦距+
void GDDCdlg::on_pushButton_3_22_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x03;
}
void GDDCdlg::on_pushButton_3_22_released()
{
clearTJDCCmdBuffer();
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
//焦距-
void GDDCdlg::on_pushButton_3_23_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x04;
}
void GDDCdlg::on_pushButton_3_23_released()
{
clearTJDCCmdBuffer();
TJDCCmdBuffer[0]=(std::byte)0x45;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
//焦距输入设置
void GDDCdlg::on_pushButton_3_24_pressed()
{
double data = ui->lineEdit_3_1->text().toDouble()*10;
TJDCCmdBuffer[0]=(std::byte)0x4C;
TJDCCmdBuffer[1]=(std::byte)(int)data;
TJDCCmdBuffer[2]=(std::byte)((int)data>>8);
}
void GDDCdlg::on_pushButton_3_24_released()
{
clearTJDCCmdBuffer();
}
//透雾模式设置
void GDDCdlg::on_pushButton_3_25_pressed()
{
uint sel = ui->comboBox_3_1->currentIndex();
TJDCCmdBuffer[0]=(std::byte)0x4A;
TJDCCmdBuffer[1]=(std::byte)sel;
}
void GDDCdlg::on_pushButton_3_25_released()
{
clearTJDCCmdBuffer();
}
//调焦+
void GDDCdlg::on_pushButton_4_1_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x50;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_4_1_released()
{
clearTJDCCmdBuffer();
}
//调焦-
void GDDCdlg::on_pushButton_4_2_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x50;
TJDCCmdBuffer[1]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_4_2_released()
{
clearTJDCCmdBuffer();
}
//自动对焦测
void GDDCdlg::on_pushButton_4_3_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x50;
TJDCCmdBuffer[1]=(std::byte)0x03;
}
void GDDCdlg::on_pushButton_4_3_released()
{
clearTJDCCmdBuffer();
}
//测温模式
void GDDCdlg::on_pushButton_4_4_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x51;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_4_4_released()
{
clearTJDCCmdBuffer();
}
//变倍+
void GDDCdlg::on_pushButton_4_5_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x50;
TJDCCmdBuffer[1]=(std::byte)0x0F;
}
void GDDCdlg::on_pushButton_4_5_released()
{
clearTJDCCmdBuffer();
}
//变倍-
void GDDCdlg::on_pushButton_4_6_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x50;
TJDCCmdBuffer[1]=(std::byte)0x10;
}
void GDDCdlg::on_pushButton_4_6_released()
{
clearTJDCCmdBuffer();
}
//电子放大
void GDDCdlg::on_pushButton_4_7_pressed()
{
paramDigitalZoom+=1;
if(paramDigitalZoom == 5)
paramDigitalZoom = 0;
TJDCCmdBuffer[0]=(std::byte)0x54;
TJDCCmdBuffer[1]=(std::byte)paramDigitalZoom;
}
void GDDCdlg::on_pushButton_4_7_released()
{
clearTJDCCmdBuffer();
}
//观测模式
void GDDCdlg::on_pushButton_4_8_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x51;
TJDCCmdBuffer[1]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_4_8_released()
{
clearTJDCCmdBuffer();
}
//亮度+
void GDDCdlg::on_pushButton_4_9_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x59;
}
void GDDCdlg::on_pushButton_4_9_released()
{
clearTJDCCmdBuffer();
}
//亮度-
void GDDCdlg::on_pushButton_4_10_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x59;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_4_10_released()
{
clearTJDCCmdBuffer();
}
//场景补偿
void GDDCdlg::on_pushButton_4_11_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x55;
}
void GDDCdlg::on_pushButton_4_11_released()
{
clearTJDCCmdBuffer();
}
//恢复默认设置
void GDDCdlg::on_pushButton_4_12_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x58;
TJDCCmdBuffer[1]=(std::byte)0x02;
}
void GDDCdlg::on_pushButton_4_12_released()
{
clearTJDCCmdBuffer();
}
//对比度+
void GDDCdlg::on_pushButton_4_13_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x5A;
}
void GDDCdlg::on_pushButton_4_13_released()
{
clearTJDCCmdBuffer();
}
//对比度-
void GDDCdlg::on_pushButton_4_14_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x5A;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_4_14_released()
{
clearTJDCCmdBuffer();
}
//红外快门补偿
void GDDCdlg::on_pushButton_4_15_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x56;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
void GDDCdlg::on_pushButton_4_15_released()
{
clearTJDCCmdBuffer();
}
//恢复出厂设置
void GDDCdlg::on_pushButton_4_16_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x58;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_4_16_released()
{
clearTJDCCmdBuffer();
}
//伪色彩切换
void GDDCdlg::on_pushButton_4_17_pressed()
{
int sel = ui->comboBox_4_1->currentIndex();
if(sel==0)
{
TJDCCmdBuffer[0]=(std::byte)0x53;
TJDCCmdBuffer[1]=(std::byte)0x00;
TJDCCmdBuffer[2]=(std::byte)0x00;
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x58;
TJDCCmdBuffer[1]=(std::byte)0x01;
TJDCCmdBuffer[2]=(std::byte)(sel-1);
}
}
void GDDCdlg::on_pushButton_4_17_released()
{
clearTJDCCmdBuffer();
}
//图像增强
void GDDCdlg::on_pushButton_4_18_pressed()
{
int sel = ui->comboBox_4_2->currentIndex();
TJDCCmdBuffer[0]=(std::byte)0x57;
TJDCCmdBuffer[1]=(std::byte)0x01;
TJDCCmdBuffer[2]=(std::byte)(sel);
}
void GDDCdlg::on_pushButton_4_18_released()
{
clearTJDCCmdBuffer();
}
//俯仰+
void GDDCdlg::on_pushButton_5_1_pressed()
{
if(paramIsFrame)
{
int sel = ui->comboBox_5_1->currentIndex();
sel+=1;
TJDCCmdBuffer[5]=(std::byte)0x70;
TJDCCmdBuffer[6]=(std::byte)0x00;
TJDCCmdBuffer[7]=(std::byte)0x00;
TJDCCmdBuffer[8]=(std::byte)(sel*2);
TJDCCmdBuffer[9]=(std::byte)((sel*2)>>8);
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x76;
TJDCCmdBuffer[1]=(std::byte)0x03;
TJDCCmdBuffer[2]=(std::byte)0x00;
TJDCCmdBuffer[3]=(std::byte)0x01;
TJDCCmdBuffer[4]=(std::byte)0x00;
}
}
void GDDCdlg::on_pushButton_5_1_released()
{
clearTJDCCmdBuffer();
}
//方位+
void GDDCdlg::on_pushButton_5_2_pressed()
{
if(paramIsFrame)
{
int sel = ui->comboBox_5_1->currentIndex();
sel+=1;
TJDCCmdBuffer[5]=(std::byte)0x70;
TJDCCmdBuffer[6]=(std::byte)(sel*2);
TJDCCmdBuffer[7]=(std::byte)((sel*2)>>8);
TJDCCmdBuffer[8]=(std::byte)0x00;
TJDCCmdBuffer[9]=(std::byte)0x00;
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x76;
TJDCCmdBuffer[1]=(std::byte)0x03;
TJDCCmdBuffer[2]=(std::byte)0xFF;
TJDCCmdBuffer[3]=(std::byte)0x00;
TJDCCmdBuffer[4]=(std::byte)0x00;
}
}
void GDDCdlg::on_pushButton_5_2_released()
{
clearTJDCCmdBuffer();
}
//俯仰-
void GDDCdlg::on_pushButton_5_3_pressed()
{
if(paramIsFrame)
{
int sel = ui->comboBox_5_1->currentIndex();
sel+=1;
TJDCCmdBuffer[5]=(std::byte)0x70;
TJDCCmdBuffer[6]=(std::byte)0x00;
TJDCCmdBuffer[7]=(std::byte)0x00;
TJDCCmdBuffer[8]=(std::byte)(-sel*2);
TJDCCmdBuffer[9]=(std::byte)((-sel*2)>>8);
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x76;
TJDCCmdBuffer[1]=(std::byte)0x03;
TJDCCmdBuffer[2]=(std::byte)0x00;
TJDCCmdBuffer[3]=(std::byte)0xFF;
TJDCCmdBuffer[4]=(std::byte)0x00;
}
}
void GDDCdlg::on_pushButton_5_3_released()
{
clearTJDCCmdBuffer();
}
//方位-
void GDDCdlg::on_pushButton_5_4_pressed()
{
if(paramIsFrame)
{
int sel = ui->comboBox_5_1->currentIndex();
sel+=1;
TJDCCmdBuffer[5]=(std::byte)0x70;
TJDCCmdBuffer[6]=(std::byte)(-sel*2);
TJDCCmdBuffer[7]=(std::byte)((-sel*2)>>8);
TJDCCmdBuffer[8]=(std::byte)0x00;
TJDCCmdBuffer[9]=(std::byte)0x00;
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x76;
TJDCCmdBuffer[1]=(std::byte)0x03;
TJDCCmdBuffer[2]=(std::byte)0x01;
TJDCCmdBuffer[3]=(std::byte)0x00;
TJDCCmdBuffer[4]=(std::byte)0x00;
}
}
void GDDCdlg::on_pushButton_5_4_released()
{
if(paramIsFrame)
{
clearTJDCCmdBuffer();
TJDCCmdBuffer[5]=(std::byte)0x70;
}
else
{
clearTJDCCmdBuffer();
}
}
//归中/陀螺校准
void GDDCdlg::on_pushButton_5_5_pressed()
{
if(paramIsFrame)
{
TJDCCmdBuffer[0]=(std::byte)0x71;
}
else
{
TJDCCmdBuffer[0]=(std::byte)0x76;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
}
void GDDCdlg::on_pushButton_5_5_released()
{
clearTJDCCmdBuffer();
}
//垂直下视
void GDDCdlg::on_pushButton_5_6_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x73;
}
void GDDCdlg::on_pushButton_5_6_released()
{
clearTJDCCmdBuffer();
}
//收藏模式
void GDDCdlg::on_pushButton_5_7_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x74;
}
void GDDCdlg::on_pushButton_5_7_released()
{
clearTJDCCmdBuffer();
}
//关伺服
void GDDCdlg::on_pushButton_5_8_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x75;
}
void GDDCdlg::on_pushButton_5_8_released()
{
clearTJDCCmdBuffer();
}
//方位弱随动机头 航向随动
void GDDCdlg::on_pushButton_5_9_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x7B;
}
void GDDCdlg::on_pushButton_5_9_released()
{
clearTJDCCmdBuffer();
}
// //
// void GDDCdlg::on_pushButton_5_10_pressed()
// {
// TJDCCmdBuffer[0]=(std::byte)0x00;
// }
// void GDDCdlg::on_pushButton_5_10_released()
// {
// clearTJDCCmdBuffer();
// }
//航向锁定
void GDDCdlg::on_pushButton_5_11_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x7A;
}
void GDDCdlg::on_pushButton_5_11_released()
{
clearTJDCCmdBuffer();
}
//扫描设置
void GDDCdlg::on_pushButton_5_12_pressed()
{
int angle = ui->lineEdit_5_1->text().toInt();
int speed = ui->lineEdit_5_2->text().toInt();
TJDCCmdBuffer[0]=(std::byte)0x77;
TJDCCmdBuffer[1]=(std::byte)angle;
TJDCCmdBuffer[2]=(std::byte)(angle>>8);
TJDCCmdBuffer[3]=(std::byte)speed;
TJDCCmdBuffer[4]=(std::byte)(speed>>8);
}
void GDDCdlg::on_pushButton_5_12_released()
{
clearTJDCCmdBuffer();
}
//执行扫描
void GDDCdlg::on_pushButton_5_13_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x79;
}
void GDDCdlg::on_pushButton_5_13_released()
{
clearTJDCCmdBuffer();
}
//姿态指引
void GDDCdlg::on_pushButton_5_14_pressed()
{
double Dir = ui->lineEdit_5_3->text().toDouble();
double Pitch = ui->lineEdit_5_4->text().toDouble();
int dir = Dir*100;
int pitch = Pitch*100;
TJDCCmdBuffer[0]=(std::byte)0x7C;
TJDCCmdBuffer[1]=(std::byte)dir;
TJDCCmdBuffer[2]=(std::byte)(dir>>8);
TJDCCmdBuffer[3]=(std::byte)pitch;
TJDCCmdBuffer[4]=(std::byte)(pitch>>8);
}
void GDDCdlg::on_pushButton_5_14_released()
{
clearTJDCCmdBuffer();
}
//数字指引
void GDDCdlg::on_pushButton_5_15_pressed()
{
double Dir = ui->lineEdit_5_3->text().toDouble();
double Pitch = ui->lineEdit_5_4->text().toDouble();
int dir = Dir*100;
int pitch = Pitch*100;
TJDCCmdBuffer[0]=(std::byte)0x72;
TJDCCmdBuffer[1]=(std::byte)dir;
TJDCCmdBuffer[2]=(std::byte)(dir>>8);
TJDCCmdBuffer[3]=(std::byte)pitch;
TJDCCmdBuffer[4]=(std::byte)(pitch>>8);
}
void GDDCdlg::on_pushButton_5_15_released()
{
clearTJDCCmdBuffer();
}
//框架
void GDDCdlg::on_radioButton_5_1_clicked()
{
paramIsFrame = true;
ui->pushButton_5_5->setText("归中");
}
//陀螺
void GDDCdlg::on_radioButton_5_2_clicked()
{
paramIsFrame = false;
ui->pushButton_5_5->setText("自动校准");
}
//AI开
void GDDCdlg::on_pushButton_6_1_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x91;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_6_1_released()
{
clearTJDCCmdBuffer();
}
//AI关
void GDDCdlg::on_pushButton_6_2_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x91;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
void GDDCdlg::on_pushButton_6_2_released()
{
clearTJDCCmdBuffer();
}
//AI框显示
void GDDCdlg::on_pushButton_6_3_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x94;
TJDCCmdBuffer[1]=(std::byte)0x01;
}
void GDDCdlg::on_pushButton_6_3_released()
{
clearTJDCCmdBuffer();
}
//AI框隐藏
void GDDCdlg::on_pushButton_6_4_pressed()
{
TJDCCmdBuffer[0]=(std::byte)0x94;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
void GDDCdlg::on_pushButton_6_4_released()
{
clearTJDCCmdBuffer();
}
//AI跟踪
void GDDCdlg::on_pushButton_6_5_pressed()
{
int sel = ui->comboBox_6_1->currentIndex();
if(sel == 0)
{
TJDCCmdBuffer[0]=(std::byte)0x93;
TJDCCmdBuffer[1]=(std::byte)0x00;
}
if(sel == 1)
{
int value = ui->spinBox_6_1->value();
TJDCCmdBuffer[0]=(std::byte)0x93;
TJDCCmdBuffer[1]=(std::byte)0x01;
TJDCCmdBuffer[2]=(std::byte)value;
}
}
void GDDCdlg::on_pushButton_6_5_released()
{
clearTJDCCmdBuffer();
}
//目标检测方式
void GDDCdlg::on_pushButton_6_6_pressed()
{
int sel = ui->comboBox_6_2->currentIndex();
int sel2 = ui->comboBox_6_3->currentIndex();
TJDCCmdBuffer[0]=(std::byte)0x9A;
TJDCCmdBuffer[1]=(std::byte)sel;
TJDCCmdBuffer[2]=(std::byte)sel2;
}
void GDDCdlg::on_pushButton_6_6_released()
{
clearTJDCCmdBuffer();
}
//检测兴趣区域位置设置
void GDDCdlg::on_pushButton_6_7_pressed()
{
int Direction = ui->lineEdit_6_1->text().toInt();
int Pitch = ui->lineEdit_6_2->text().toInt();
TJDCCmdBuffer[0]=(std::byte)0x93;
TJDCCmdBuffer[1]=(std::byte)Direction;
TJDCCmdBuffer[2]=(std::byte)(Direction>>8);
TJDCCmdBuffer[3]=(std::byte)Pitch;
TJDCCmdBuffer[4]=(std::byte)(Pitch>>8);
detectionAreaSetting = false;
}
void GDDCdlg::on_pushButton_6_7_released()
{
clearTJDCCmdBuffer();
}
//像素选取
void GDDCdlg::on_pushButton_6_8_clicked()
{
if(detectionAreaSetting == false)
{
detectionAreaSetting = true;
ui->pushButton_6_8->setDown(true);
}
else
{
detectionAreaSetting = false;
ui->pushButton_6_8->setDown(false);
}
}
//播放视频1
void GDDCdlg::startConnectURL1()
{
if(!connectFlag[0])
{
connectFlag[0] = true ;
//ui->WgtffmpegVideo->Isplay(Is_openVideo);
ui->WgtffmpegVideo->play();
ui->WgtffmpegVideo->setUrl(m_DlgGDDCSet->m_playURL1);
ui->WgtffmpegVideo->m_PlayStatus =Is_openVideo;
}
}
//关闭视频1
void GDDCdlg::stopConnectURL1()
{
if(connectFlag[0])
{
connectFlag[0] = false ;
ui->WgtffmpegVideo->m_PlayStatus = Is_openVideo;
ui->WgtffmpegVideo->stop();
}
}
//播放视频2
void GDDCdlg::startConnectURL2()
{
if(!connectFlag[1])
{
connectFlag[1] = true ;
}
}
//关闭视频2
void GDDCdlg::stopConnectURL2()
{
if(connectFlag[1])
{
connectFlag[1] = false ;
}
}
void GDDCdlg::startConnectSerialCtrl()
{
if(!connectFlag[2])
{
connectFlag[2] = true ;
}
}
void GDDCdlg::stopConnectSerialCtrl()
{
if(connectFlag[2])
{
connectFlag[2] = false ;
}
}
//开始UDP控制通信
void GDDCdlg::startConnectUDPCtrl()
{
if(!connectFlag[3])
{
//创建udp socket对象
udpSocket = new QUdpSocket(this);
/*接收*/
//QList<QHostAddress> 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])
{
udpSocket->abort();//关闭套接字,并丢缓冲区中的所有待处理数据
delete udpSocket;
connectFlag[3] = false;
}
}
//开始TCP控制通信
void GDDCdlg::startConnectTCPCtrl()
{
if(!connectFlag[4])
{
connectFlag[4] = true;
}
}
//停止TCP控制通信
void GDDCdlg::stopConnectTCPCtrl()
{
if(connectFlag[4])
{
connectFlag[4] = false;
}
}
//设置页面弹出
void GDDCdlg::on_pushButtonSet_clicked()
{
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);
//const char* chardata= data.constData();
qDebug()<<data.data();
if(checkdata(data,data.size(),1))
{
QString str;
double dou;
float flo;
//载荷类型
switch(data.at(2))
{
case '\x01':
str = "白光";
break;
case '\x02':
str = "红外";
break;
case '\x03':
str = "双光";
break;
case '\x04':
str = "三光";
break;
case '\x05':
str = "四光";
break;
default:
str = "未知";
break;
}
m_tableModel->setItem(28,1,new QStandardItem(str));
/*****自检结果*****/
//红外机芯
if((data.at(3)&'\x01')==0x01){
str = "正常";
}
else{
str = "异常";
}
m_tableModel->setItem(29,1,new QStandardItem(str));
//可见光机芯
if((data.at(3)>>1)&'\x01'){
str = "正常";
}
else{
str = "异常";
}
m_tableModel->setItem(30,1,new QStandardItem(str));
//陀螺仪
if((data.at(3)>>2)&'\x01'){
str = "正常";
}
else{
str = "异常";
}
m_tableModel->setItem(31,1,new QStandardItem(str));
//角度传感器
if((data.at(3)>>3)&'\x01'){
str = "正常";
}
else{
str = "异常";
}
m_tableModel->setItem(32,1,new QStandardItem(str));
//驱动板-电机
if((data.at(3)>>4)&'\x01'){
str = "正常";
}
else{
str = "异常";
}
m_tableModel->setItem(33,1,new QStandardItem(str));
//压缩存储
if((data.at(3)>>5)&'\x01'){
str = "正常";
}
else{
str = "异常";
}
m_tableModel->setItem(34,1,new QStandardItem(str));
//综合处理
if((data.at(3)>>6)&'\x01'){
str = "正常";
}
else{
str = "异常";
}
m_tableModel->setItem(35,1,new QStandardItem(str));
//吊舱准备状态
if((data.at(3)>>7)&'\x01'){
str = "已准备好";
}
else{
str = "未准备好";
}
m_tableModel->setItem(36,1,new QStandardItem(str));
/*****吊舱状态1******/
//拍照
if(data.at(4)&'\x01'){
str = "正在拍照";
}
else{
str = "未拍照";
}
m_tableModel->setItem(21,1,new QStandardItem(str));
//视频抓图
if((data.at(4)>>1)&'\x01'){
str = "正在抓图";
}
else{
str = "未抓图";
}
m_tableModel->setItem(22,1,new QStandardItem(str));
//连拍
if((data.at(4)>>2)&'\x01'){
str = "正在连拍";
}
else{
str = "未连拍";
}
m_tableModel->setItem(23,1,new QStandardItem(str));
//视频连续抓图
if((data.at(4)>>3)&'\x01'){
str = "正在连续抓图";
}
else{
str = "未连续抓图";
}
m_tableModel->setItem(24,1,new QStandardItem(str));
//录像状态
if((data.at(4)>>4)&'\x01'){
str = "正在录像";
}
else{
str = "未开始录像";
}
m_tableModel->setItem(25,1,new QStandardItem(str));
//文件命名
if((data.at(4)>>5)&'\x01'){
str = "信息导入完毕";
}
else{
str = "未成功导入";
}
m_tableModel->setItem(26,1,new QStandardItem(str));
//TF插卡状态
if((data.at(4)>>6)&'\x01'){
str = "TF卡已插入";
}
else{
str = "TF卡未插入";
}
m_tableModel->setItem(20,1,new QStandardItem(str));
//超温报警状态
if((data.at(4)>>7)&'\x01'){
str = "超温";
}
else{
str = "未超温";
}
m_tableModel->setItem(51,1,new QStandardItem(str));
//红点指示
if(data.at(5)&'\x01'){
str = "";
}
else{
str = "";
}
m_tableModel->setItem(52,1,new QStandardItem(str));
//备用
//红外图像增强
str = QString::number((data.at(5)>>3)&'\x0F');
m_tableModel->setItem(38,1,new QStandardItem(str));
//备用
//备用
/*****吊舱状态2******/
//备用
//跟踪源类型
if(data.at(6)&'\x02'){
str = "可见光";
}
else{
str = "红外";
}
m_tableModel->setItem(0,1,new QStandardItem(str));
//红外电子变倍
str = QString::number(((data.at(6)>>2)&'\x7F')*0.1,'f', 1);
m_tableModel->setItem(13,1,new QStandardItem(str));
//配置保存
if(data.at(7)&'\x01'){
str = "保存成功";
}
else{
str = "未保存";
}
m_tableModel->setItem(49,1,new QStandardItem(str));
//可见光电子变倍
switch((data.at(7)>>1)&'\x03')
{
case 0:
str = "1x";
break;
case 1:
str = "2x";
break;
case 2:
str = "4x";
break;
default:
str = "未知";
break;
}
m_tableModel->setItem(14,1,new QStandardItem(str));
//红外伪彩-色带
switch((data.at(7)>>3)&'\x1F')
{
case 0x00:
str = "白热";
break;
case 0x01:
str = "黑热";
break;
case 0x02:
str = "彩虹";
break;
case 0x03:
str = "高对比度彩虹";
break;
case 0x04:
str = "铁红";
break;
case 0x05:
str = "熔岩";
break;
case 0x06:
str = "天空";
break;
case 0x07:
str = "中灰";
break;
case 0x08:
str = "灰红";
break;
case 0x09:
str = "紫橙";
break;
case 0x0b:
str = "警示红";
break;
case 0x0c:
str = "冰火";
break;
default:
str = "未知";
break;
}
m_tableModel->setItem(37,1,new QStandardItem(str));
/*********伺服状态********/
//红外伪彩-色带
switch((data.at(7)>>3)&'\x1F')
{
case 0x00:
str = "待命";
break;
case 0x01:
str = "关伺服";
break;
case 0x02:
str = "手动";
break;
case 0x03:
str = "收藏";
break;
case 0x04:
str = "数引";
break;
case 0x05:
str = "航向锁定";
break;
case 0x06:
str = "扫描";
break;
case 0x07:
str = "跟踪";
break;
case 0x08:
str = "垂直下视";
break;
case 0x09:
str = "陀螺自动较漂";
break;
case 0xA0:
str = "陀螺温度较漂";
break;
case 0x0B:
str = "航向随动";
break;
case 0x0C:
str = "归中";
break;
case 0x0D:
str = "手动陀螺较漂";
break;
case 0x0F:
str = "姿态指引";
break;
default:
str = "";
break;
}
m_tableModel->setItem(50,1,new QStandardItem(str));
//吊舱框架方位角
dou = (data.at(9)+data.at(10)*256)*0.01;
str = QString::number(dou,'f', 2);
m_tableModel->setItem(15,1,new QStandardItem(str));
//吊舱框架俯仰角
dou = (data.at(11)+data.at(12)*256)*0.01;
str = QString::number(dou,'f', 2);
m_tableModel->setItem(16,1,new QStandardItem(str));
//吊舱框架横滚角
dou = (data.at(13)+data.at(14)*256)*0.01;
str = QString::number(dou,'f', 2);
m_tableModel->setItem(17,1,new QStandardItem(str));
//当前载荷版本号
str = QString::number(data.at(15)>>4) + "." + 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);
m_tableModel->setItem(9,1,new QStandardItem(str));
//TF使用容量百分比
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);
m_tableModel->setItem(7,1,new QStandardItem(str));
//TF卡总容量
dou = ((UINT8)data.at(21)+(UINT16)data.at(22)*256)*0.1;
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);
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);
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));
//目标定位经度
flo = m_uint32_to_float(data.at(29),data.at(30),data.at(31),data.at(32));
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);
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));
//最高温-温度
// dou = (data.at(39)+data.at(40)*256)*0.1;
// str = QString::number(dou,'f',1);
// m_tableModel->setItem(42,1,new QStandardItem(str));
//吊舱姿态方位角
dou = (data.at(41)+data.at(42)*256)*0.01;
str = QString::number(dou,'f',2);
m_tableModel->setItem(1,1,new QStandardItem(str));
//吊舱姿态俯仰角
dou = (data.at(43)+data.at(44)*256)*0.01;
str = QString::number(dou,'f',2);
m_tableModel->setItem(2,1,new QStandardItem(str));
//吊舱姿态横滚角
dou = (data.at(45)+data.at(46)*256)*0.01;
str = QString::number(dou,'f',2);
m_tableModel->setItem(3,1,new QStandardItem(str));
//当前显示图像反馈
switch (data.at(47)) {
case 0x00:
str = "红外";
break;
case 0x01:
str = "可见光";
break;
case 0x02:
str = "上下分屏";
break;
case 0x03:
str = "可见光画中画";
break;
case 0x04:
str = "红外画中画";
break;
case 0x05:
str = "左右分屏";
break;
default:
str = "未知";
break;
}
m_tableModel->setItem(27,1,new QStandardItem(str));
//接收到的命令字反馈
str = QString::number(data.at(48));
m_tableModel->setItem(11,1,new QStandardItem(str));
//姿态指示完成反馈
switch (data.at(49)) {
case 0x12:
str = "姿态指示中";
break;
case 0x13:
str = "姿态指示完成";
break;
default:
str = "------";
break;
}
m_tableModel->setItem(43,1,new QStandardItem(str));
//跟踪中心点宽方向坐标
str = QString::number((UINT8)data[50]+(UINT16)data[51]*256);
m_tableModel->setItem(4,1,new QStandardItem(str));
//跟踪中心点高方向坐标
str = QString::number((UINT8)data[52]+(UINT16)data[53]*256);
m_tableModel->setItem(5,1,new QStandardItem(str));
//目标宽
str = QString::number((UINT8)data.at(54)+data.at(55)*256);
m_tableModel->setItem(44,1,new QStandardItem(str));
//目标高
str = QString::number((UINT8)data.at(56)+data.at(57)*256);
m_tableModel->setItem(45,1,new QStandardItem(str));
//目标类型
switch (data.at(58)) {
case 0x00:
if(data.at(6)&'\x02'){//可见光
str = "";
}
else{//红外
str = "";
}
break;
case 0x01:
if(data.at(6)&'\x02'){//可见光
str = "小汽车";
}
else{//红外
str = "";
}
break;
case 0x02:
if(data.at(6)&'\x02'){//可见光
str = "公交车";
}
break;
case 0x03:
if(data.at(6)&'\x02'){//可见光
str = "卡车";
}
break;
default:
str = "未知";
break;
}
m_tableModel->setItem(46,1,new QStandardItem(str));
//跟踪状态
switch (data.at(59)) {
case 0x00:
str = "空闲状态";
break;
case 0x01:
str = "稳定跟踪";
break;
case 0x02:
str = "记忆跟踪";
break;
case 0x03:
str = "目标丢失";
break;
case 0x05:
str = "截获状态";
break;
default:
str = "未知";
break;
}
m_tableModel->setItem(47,1,new QStandardItem(str));
//最高温
dou = (data.at(60)+data.at(61)*256)*0.1;
str = QString::number(dou,'f',1)+"";
m_tableModel->setItem(48,1,new QStandardItem(str));
//
}
}
bool GDDCdlg::checkdata(QByteArray buffer,int length, int type)
{
if(length!=64){
return false;
}
if((buffer.at(0) != '\xFC')||(buffer.at(1) != '\x2C')||buffer.at(63) !='\xF0')
{
return false;
}
if(type==1)
{
//亦或校验
// for(int i = 2;i<62;++i)
// {
// buffer.at(i)^buffer.at(i+1);
// }
}
else if (type==2)
{
//和校验
}
return true;
}
//控制页面隐藏与显示
void GDDCdlg::on_pushButShowCmdArea_clicked()
{
if(isCmdAreaShow)
{
ui->tabWidget->setVisible(false);
ui->tableViewShowIState->setVisible(false);
isCmdAreaShow = false;
resizeUI();
ui->pushButShowCmdArea->setIcon(QIcon(":/res/up.png"));
//ui->pushButton->setGeometry(this->width()/2,this->height()-50,50,50);
}
else
{
ui->tabWidget->setVisible(true);
ui->tableViewShowIState->setVisible(true);
isCmdAreaShow = true;
resizeUI();
ui->pushButShowCmdArea->setIcon(QIcon(":/res/down.png"));
//ui->pushButton->setGeometry(this->width()/2,ui->tabWidget->height(),50,50);
}
}