|
|
#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);
|
|
|
}
|
|
|
}
|
|
|
|