#include "gddcdlg.h" #include "ui_gddcdlg.h" #include #include #include #include #include #include #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:"<<"("<mapFromGlobal(sPoint2); // qDebug()<<"相对于窗口坐标:"<<"("<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:"<<"("<mapFromGlobal(sPoint2); //qDebug()<<"相对于窗口坐标:"<<"("<WgtffmpegVideo->mapFromGlobal(sPoint1); //qDebug()<<"相对于控件坐标:"<<"("<WgtffmpegVideo->width(); double b = ui->WgtffmpegVideo->height(); double dir = 1920/a*widgetPoint.rx()-960; double pitch = -(1080/b*widgetPoint.ry()-540); 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()<<"宽度,高度:"<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 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()<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); } }