#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); } //初始化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(); }