#include "gddcdlg.h" #include "ui_gddcdlg.h" #include #include #include #include GDDCdlg::GDDCdlg(QWidget *parent) : QWidget(parent) , ui(new Ui::GDDCdlg) { ui->setupUi(this); initWindow(); initParam(); initUDPSocket(); /*启动定时器*/ GDDCControlTimer = new QTimer(); connect(GDDCControlTimer,&QTimer::timeout,this,[=](){ GDDCControlTimeOut(); }); GDDCControlTimer->start(100); } GDDCdlg::~GDDCdlg() { //关闭定时器 GDDCControlTimer->stop(); //关闭套接字,并丢弃写缓冲区中的所有待处理数据。 udpSocket->abort(); delete ui; } //初始化window void GDDCdlg::initWindow() { QPalette palette; //设置主窗口背景颜色 palette.setColor(QPalette::Window,QColor(50, 50, 50)); this->setPalette(palette); //嵌入到主窗口 setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint); hide(); } //初始化参数 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->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("强"); } //初始化udp通信 void GDDCdlg::initUDPSocket() { //创建udp socket对象 udpSocket = new QUdpSocket(this); RemoteIP = "172.10.1.183"; //目标IP RemoteAddr.setAddress(RemoteIP); RemotePort = 6002;//目标port /*接收*/ //获取本机ip QList ipAddressesList = QNetworkInterface::allAddresses(); qDebug()<<"ip list:"<bind(port); } //定时器处理 void GDDCdlg::GDDCControlTimeOut() { UpdateDataTJDC(); //qDebug()<<"Enter timeout processing function\n"; //发出数据包 udpSocket->writeDatagram(m_DCcmdBuffer,RemoteAddr,RemotePort); } //更新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<37;++i) { m_DCcmdBuffer[i] = 0x00; } /*精确到毫秒级*/ QDateTime st = QDateTime::currentDateTime();//获取系统当前的时间 QString formattedDateTime = st.toString("yyyy-MM-dd hh:mm:ss"); 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<41;++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::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[2]=(std::byte)str; TJDCCmdBuffer[3]=(std::byte)str2; } else { TJDCCmdBuffer[0]=(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() { int ip = ui->lineEdit_1_3->text().toInt(); TJDCCmdBuffer[0]=(std::byte)0x29; TJDCCmdBuffer[1]=(std::byte)ip; } 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() { } void GDDCdlg::on_pushButton_2_5_released() { clearTJDCCmdBuffer(); } //取消跟踪 void GDDCdlg::on_pushButton_2_6_pressed() { TJDCCmdBuffer[0]=(std::byte)0x3B; } 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() { uint data = ui->lineEdit_3_1->text().toUInt()*10; TJDCCmdBuffer[0]=(std::byte)0x4C; TJDCCmdBuffer[1]=(std::byte)data; TJDCCmdBuffer[2]=(std::byte)(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)0x3F; // } // void GDDCdlg::on_pushButton_4_1_released() // { // clearTJDCCmdBuffer(); // } // //停止连续测距 // void GDDCdlg::on_pushButton_4_2_pressed() // { // TJDCCmdBuffer[0]=(std::byte)0x3D; // } // void GDDCdlg::on_pushButton_4_2_released() // { // clearTJDCCmdBuffer(); // } // //停止连续测距 // void GDDCdlg::on_pushButton_4_3_pressed() // { // TJDCCmdBuffer[0]=(std::byte)0x3F; // } // void GDDCdlg::on_pushButton_4_4_released() // { // clearTJDCCmdBuffer(); // } // //停止连续测距 // void GDDCdlg::on_pushButton_4_5_pressed() // { // TJDCCmdBuffer[0]=(std::byte)0x3F; // } // void GDDCdlg::on_pushButton_4_5_released() // { // clearTJDCCmdBuffer(); // } // //停止连续测距 // void GDDCdlg::on_pushButton_4_6_pressed() // { // TJDCCmdBuffer[0]=(std::byte)0x3F; // } // void GDDCdlg::on_pushButton_4_6_released() // { // clearTJDCCmdBuffer(); // }