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

704 lines
15 KiB
C++

#include "gddcdlg.h"
#include "ui_gddcdlg.h"
#include <QDateTime>
#include <QNetworkInterface>
#include <QTabBar>
#include <QTabWidget>
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<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
qDebug()<<"ip list:"<<ipAddressesList;
quint16 port = 6001;
udpSocket->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();
// }