实例介绍
【实例截图】
【核心代码】
#include "test.h"
#include<QUdpSocket>
//unsigned char buf[1024];
//QByteArray arrayB;
#include<QTableWidgetItem>
#include <QColumnView>
test::test(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
m_blocalSend=false;
ssocket = new QUdpSocket();
ssocket->bind(QHostAddress::AnyIPv4,65001,(QAbstractSocket::BindMode)1|(QAbstractSocket::BindMode)0x04);
ssocket->joinMulticastGroup(QHostAddress("224.1.1.1") );
connect(ssocket,SIGNAL(readyRead()),this,SLOT(read_data()));
connect(ui.pushButton,SIGNAL(pressed()),this,SLOT(on_pushButton_clicked ()));
connect(ui.pushButton_2,SIGNAL(clicked(bool)),this,SLOT(on_pushButton_2_clicked ()));
//connect(ui.pushButton_3,SIGNAL(clicked(bool)),this,SLOT(on_pushButton_3_clicked ()));
//connect(ui.pushButton_4,SIGNAL(clicked(bool)),this,SLOT(on_pushButton_4_clicked ()));
ui.tableWidget->setColumnCount(24);
ui.tableWidget->setRowCount(10);
ui.tableWidget->verticalHeader()->setVisible(false); // 隐藏水平header
ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems); // 单个选中
ui.tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); // 可以选中多个
ui.tableWidget->verticalHeader()->setDefaultSectionSize(20);
ui.tableWidget->horizontalHeader()->setDefaultSectionSize(100);
ui.tableWidget->setHorizontalHeaderLabels(QStringList()
<< QString::fromLocal8Bit("载荷动作")
<< QString::fromLocal8Bit("待机命令")
<< QString::fromLocal8Bit("分辨率")
<< QString::fromLocal8Bit("工作模式")
<< QString::fromLocal8Bit("指令编码")
<< QString::fromLocal8Bit("逻辑块号")
<< QString::fromLocal8Bit("工作频点")
<< QString::fromLocal8Bit("雷达编号")
<< QString::fromLocal8Bit("作用距离")
<< QString::fromLocal8Bit("目标经度")
<< QString::fromLocal8Bit("目标纬度")
<< QString::fromLocal8Bit("目标高度")
<< QString::fromLocal8Bit("扫描起始角度")
<< QString::fromLocal8Bit("扫描起始角度")
<< QString::fromLocal8Bit("CFAR门限")
<< QString::fromLocal8Bit("DBF截位")
<< QString::fromLocal8Bit("扫描步进")
<< QString::fromLocal8Bit("回访率")
<< QString::fromLocal8Bit("捷变频")
<< QString::fromLocal8Bit("变换检测标志")
<< QString::fromLocal8Bit("通道1M/AGC码")
<< QString::fromLocal8Bit("通道2M/AGC码")
<< QString::fromLocal8Bit("通道3M/AGC码")
<< QString::fromLocal8Bit("通道4M/AGC码"));
/*
ui.tableWidget_2->setColumnCount(7);
ui.tableWidget_2->setRowCount(10);
ui.tableWidget_2->verticalHeader()->setVisible(false); // 隐藏水平header
ui.tableWidget_2->setSelectionBehavior(QAbstractItemView::SelectItems); // 单个选中
ui.tableWidget_2->setSelectionMode(QAbstractItemView::ExtendedSelection); // 可以选中多个
ui.tableWidget_2->verticalHeader()->setDefaultSectionSize(20);
ui.tableWidget_2->horizontalHeader()->setDefaultSectionSize(100);
ui.tableWidget_2->setHorizontalHeaderLabels(QStringList()
<< QString::fromLocal8Bit("载荷控制")
<< QString::fromLocal8Bit("指令编码")
<< QString::fromLocal8Bit("逻辑块号")
<< QString::fromLocal8Bit("参数设置")
<< QString::fromLocal8Bit("工作模式")
<< QString::fromLocal8Bit("激光测距")
<< QString::fromLocal8Bit("跟踪照射")
);*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ui.tableWidget_3->setColumnCount(6);
ui.tableWidget_3->setRowCount(3);
ui.tableWidget_3->verticalHeader()->setVisible(false); // 隐藏水平header
ui.tableWidget_3->setSelectionBehavior(QAbstractItemView::SelectItems); // 单个选中
ui.tableWidget_3->setSelectionMode(QAbstractItemView::ExtendedSelection); // 可以选中多个
ui.tableWidget_3->verticalHeader()->setDefaultSectionSize(20);
ui.tableWidget_3->horizontalHeader()->setDefaultSectionSize(100);
ui.tableWidget_3->setHorizontalHeaderLabels(QStringList()
<< QString::fromLocal8Bit("主命令方式")
<< QString::fromLocal8Bit("初始化命令")
<< QString::fromLocal8Bit("工作模式命令")
<< QString::fromLocal8Bit("工作频点")
<< QString::fromLocal8Bit("目标参数")
<< QString::fromLocal8Bit("分辨率")
);
return;
QTableWidgetItem *item_max10 = new QTableWidgetItem();//第一行,第1列,
item_max10->setText(QString::fromLocal8Bit(""));
ui.tableWidget_3->setItem(0, 0, item_max10);//第一行,第1列,
QTableWidgetItem *item_max11 = new QTableWidgetItem();//第一行,第1列,
item_max11->setText(QString::fromLocal8Bit(""));
ui.tableWidget_3->setItem(0, 1, item_max11);//第一行,第1列,
}
test::~test()
{
}
void test::read_data()
{
if(m_blocalSend)
{
m_blocalSend=false;
QByteArray sar;
sar.resize(ssocket->bytesAvailable());//根据可读数据来设置空间大小
ssocket->readDatagram(sar.data(),sar.size()); //读取数据
QString str(sar.data());
return;
}
/**/
QHostAddress addr;
quint16 port;
QByteArray arrayA;
arrayA.resize(ssocket->bytesAvailable());
ssocket->readDatagram(arrayA.data(),arrayA.size(),&addr,&port );
QString ss=addr.toString();
ui.textEdit->setText(arrayA.toHex());
//memcpy(arrayB.data(),arrayA.data(),strlen(arrayA));
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
QTableWidgetItem *item_max = new QTableWidgetItem();//第一行,第一列,载荷动作
if(arrayA.data()[4]==0)
item_max->setText(QString::fromLocal8Bit("初始化"));
if(arrayA.data()[4]==1)
item_max->setText(QString::fromLocal8Bit("启动自检"));
if(arrayA.data()[4]==2)
item_max->setText(QString::fromLocal8Bit("维护自检"));
if(arrayA.data()[4]==3)
item_max->setText(QString::fromLocal8Bit("加电"));
if(arrayA.data()[4]==4)
item_max->setText(QString::fromLocal8Bit("断电"));
if(arrayA.data()[4]==5)
item_max->setText(QString::fromLocal8Bit("复位"));
if(arrayA.data()[4]==6)
item_max->setText(QString::fromLocal8Bit("待机"));
if(arrayA.data()[4]==8)
item_max->setText(QString::fromLocal8Bit("软件版本查询"));
if(arrayA.data()[4]==9)
item_max->setText(QString::fromLocal8Bit("MFL请求"));
if(arrayA.data()[4]==0x11)
item_max->setText(QString::fromLocal8Bit("工作状态请求"));
ui.tableWidget->setItem(0, 0, item_max);//第一行,第一列,载荷动作
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
QTableWidgetItem *item_max12 = new QTableWidgetItem();//第一行,第2列,待机命令
if( arrayA.data()[6]==(char)0x80 )
item_max12->setText(QString::fromLocal8Bit("x波段左阵面待机"));
if( arrayA.data()[6]==(char)0x40 )
item_max12->setText(QString::fromLocal8Bit("X波段右阵面待机"));
if( arrayA.data()[6]==(char)0x20 )
item_max12->setText(QString::fromLocal8Bit("L波段左阵面待机"));
if( arrayA.data()[6]==(char)0x10 )
item_max12->setText(QString::fromLocal8Bit("L波段右阵面待机"));
if( arrayA.data()[6]==(char)0x08 )
item_max12->setText(QString::fromLocal8Bit("p波段左阵面待机"));
if( arrayA.data()[6]==(char)0x04 )
item_max12->setText(QString::fromLocal8Bit("p波段右阵面待机"));
//SAR_1[6]=0x40;//x波段右阵面待机
//SAR_1[6]=0x20;//l波段左阵面待机
//SAR_1[6]=0x10;//l波段右阵面待机
//SAR_1[6]=0x08;//p波段左阵面待机
//SAR_1[6]=0x04;//p波段右阵面待机
ui.tableWidget->setItem(0, 1, item_max12);//第一行,第2列,待机命令
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
QTableWidgetItem *item_max13 = new QTableWidgetItem();//第一行,第3列,分辨率
item_max13->setText(QString::fromLocal8Bit("(0,1)"));
ui.tableWidget->setItem(0, 2, item_max13);//第一行,第3列,分辨率
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
QTableWidgetItem *item_max14 = new QTableWidgetItem();//第一行,第4列, 工作模式
if( arrayA.data()[8]==0x41 )
item_max14->setText(QString::fromLocal8Bit("广域地面动目标指示(GMTI)"));
if( arrayA.data()[8]==0x42 )
item_max14->setText(QString::fromLocal8Bit("同时合成孔径成像/地面动目标指示(SAR/GMTI)"));
if( arrayA.data()[8]==0x43 )
item_max14->setText(QString::fromLocal8Bit("(条带合成孔径成像(条带SAR)"));
if( arrayA.data()[8]==0x44 )
item_max14->setText(QString::fromLocal8Bit("聚束合成孔径成像(聚束SAR)"));
if( arrayA.data()[8]==0x45 )
item_max14->setText(QString::fromLocal8Bit("空中动目标指示(AMTI)"));
if( arrayA.data()[8]==0x46 )
item_max14->setText(QString::fromLocal8Bit("无效工作模式"));
ui.tableWidget->setItem(0, 3, item_max14);//第一行,第4列, 工作模式
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
QTableWidgetItem *item_max15 = new QTableWidgetItem();//第一行,第5列, 指令编码
if( arrayA.data()[8]==0x41 )
item_max15->setText(QString::fromLocal8Bit("0x41 "));
if( arrayA.data()[8]==0x42 )
item_max15->setText(QString::fromLocal8Bit("0x42 "));
if( arrayA.data()[8]==0x43 )
item_max15->setText(QString::fromLocal8Bit("0x43 "));
if( arrayA.data()[8]==0x44 )
item_max15->setText(QString::fromLocal8Bit("0x44 "));
if( arrayA.data()[8]==0x45 )
item_max15->setText(QString::fromLocal8Bit("0x45 "));
if( arrayA.data()[8]==0x46 )
item_max15->setText(QString::fromLocal8Bit("0x46 "));
ui.tableWidget->setItem(0, 4, item_max15);//第一行,第5列, 指令编码
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
void test::on_pushButton_clicked()
{
QString proName1 = ui.tableWidget_3->item(0, 0)->text();//主方式命令反馈
QString proName2 = ui.tableWidget_3->item(0, 1)->text();
QString proName3 = ui.tableWidget_3->item(0, 2)->text();//工作模式
QString proName4 = ui.tableWidget_3->item(0, 3)->text();
QString proName5 = ui.tableWidget_3->item(0, 4)->text();
QString proName6 = ui.tableWidget_3->item(0, 5)->text();
QByteArray SAR_1;
SAR_1.resize(6);
for(int i=0;i<6;i )
{
SAR_1.data()[i] = 0x1F;
}
if(proName1=="0")
SAR_1.data()[0] = 0x00;//初始化
if(proName1=="1")
SAR_1.data()[0] = 0x01;//启动自建
if(proName1=="2")
SAR_1.data()[0] = 0x02;//维护自检
if(proName1=="3")
SAR_1.data()[0] = 0x03;// 加电
if(proName1=="4")
SAR_1.data()[0] = 0x04;// 断电
if(proName1=="5")
SAR_1.data()[0] = 0x05;// 复位
if(proName1=="6")
SAR_1.data()[0] = 0x06;// 待机
if(proName1=="7")
SAR_1.data()[0] = 0x07;// 工作及指令
if(proName1=="8")
SAR_1.data()[0] = 0x08;//软件版本查询
if(proName1=="9")
SAR_1.data()[0] = 0x09;// MFL请求
if(proName1=="11")
SAR_1.data()[0] = 0x11;// 工作状态请求
if(proName2=="0")
SAR_1.data()[1] = 0x00;// 初始化
//工作模式
if(proName3=="0")
SAR_1.data()[2] = 0x00;
if(proName3=="1")
SAR_1.data()[2] = 0x01;
if(proName3=="2")
SAR_1.data()[2] = 0x02;
if(proName3=="3")
SAR_1.data()[2] = 0x03;
if(proName3=="4")
SAR_1.data()[2] = 0x04;
if(proName3=="5")
SAR_1.data()[2] = 0x05;
if(proName3=="6")
SAR_1.data()[2] = 0x06;
if(proName4=="0")
SAR_1.data()[3] = 0x00;// 無應答
if(proName5=="0")
SAR_1.data()[4] = 0x00;// 無應答
if(proName6=="0")
SAR_1.data()[5] = 0x00;//0.15
if(proName6=="1")
SAR_1.data()[5] = 0x01;//0.3
if(proName6=="2")
SAR_1.data()[5] = 0x02;//0.5
if(proName6=="3")
SAR_1.data()[5] = 0x03;//1
if(proName6=="4")
SAR_1.data()[5] = 0x04;//3
if(proName6=="5")
SAR_1.data()[5] = 0x05;//5
if(proName6=="6")
SAR_1.data()[5] = 0x06;//10
ssocket->writeDatagram(SAR_1,QHostAddress("224.1.1.1"),65001 );
m_blocalSend=true;
}
void test::on_pushButton_2_clicked()
{
QTableWidgetItem *item_max = new QTableWidgetItem();
item_max->setText(QString("123456"));
QTableWidgetItem *item_max2 = new QTableWidgetItem();
item_max2->setText(QString("789789789"));
QTableWidgetItem *item_max3 = new QTableWidgetItem();
item_max3->setText(QString("5555"));
QTableWidgetItem *item_max4 = new QTableWidgetItem();
item_max4->setText(QString("5555"));
QTableWidgetItem *item_max5 = new QTableWidgetItem();
item_max5->setText(QString("5555"));
QTableWidgetItem *item_max6 = new QTableWidgetItem();
item_max6->setText(QString("5555"));
QTableWidgetItem *item_max7 = new QTableWidgetItem();
item_max7->setText(QString("5555"));
ui.tableWidget_2->setItem(0, 0, item_max);
ui.tableWidget_2->setItem(0, 1, item_max2);
ui.tableWidget_2->setItem(0, 2, item_max3);
ui.tableWidget_2->setItem(0, 3, item_max4);
ui.tableWidget_2->setItem(0, 4, item_max5);
ui.tableWidget_2->setItem(0, 5, item_max6);
ui.tableWidget_2->setItem(0, 6, item_max7);
/*QString str = ui.lineEdit->text();
QString str1 = ui.lineEdit_2->text();
QString str2 = ui.lineEdit_3->text();
QString str3 = ui.lineEdit_4->text();
QString str4 = ui.lineEdit_5->text();
QString str5 = ui.lineEdit_6->text();
QString strsend=str str1 str2 str3 str4 str5;
ssocket->writeDatagram(strsend.toLatin1(),QHostAddress("224.1.1.1"),65001 );*/
}
void test::on_pushButton_3_clicked()
{
}
void test::on_pushButton_4_clicked()
{
}
/*
QTableWidgetItem *item_max = new QTableWidgetItem();
item_max->setText(QString("11111"));
QTableWidgetItem *item_max2 = new QTableWidgetItem();
item_max2->setText(QString("22222"));
QTableWidgetItem *item_max3 = new QTableWidgetItem();
item_max3->setText(QString("33333"));
QTableWidgetItem *item_max4 = new QTableWidgetItem();
item_max4->setText(QString("44444"));
QTableWidgetItem *item_max5 = new QTableWidgetItem();
item_max5->setText(QString("5555"));
QTableWidgetItem *item_max6 = new QTableWidgetItem();
item_max6->setText(QString("6666"));
QTableWidgetItem *item_max7 = new QTableWidgetItem();
item_max7->setText(QString("5555"));
QTableWidgetItem *item_max8 = new QTableWidgetItem();
item_max8->setText(QString("5555"));
QTableWidgetItem *item_max9 = new QTableWidgetItem();
item_max9->setText(QString("5555"));
QTableWidgetItem *item_max10 = new QTableWidgetItem();
item_max10->setText(QString("5555"));
QTableWidgetItem *item_max11 = new QTableWidgetItem();
item_max11->setText(QString("5555"));
QTableWidgetItem *item_max12 = new QTableWidgetItem();
item_max12->setText(QString("5555"));
QTableWidgetItem *item_max13 = new QTableWidgetItem();
item_max13->setText(QString("5555"));
QTableWidgetItem *item_max14 = new QTableWidgetItem();
item_max14->setText(QString("5555"));
QTableWidgetItem *item_max15 = new QTableWidgetItem();
item_max15->setText(QString("5555"));
QTableWidgetItem *item_max16 = new QTableWidgetItem();
item_max16->setText(QString("5555"));
QTableWidgetItem *item_max17 = new QTableWidgetItem();
item_max17->setText(QString("5555"));
QTableWidgetItem *item_max18 = new QTableWidgetItem();
item_max18->setText(QString("5555"));
QTableWidgetItem *item_max19 = new QTableWidgetItem();
item_max19->setText(QString("5555"));
QTableWidgetItem *item_max20 = new QTableWidgetItem();
item_max20->setText(QString("5555"));
QTableWidgetItem *item_max21 = new QTableWidgetItem();
item_max21->setText(QString("5555"));
QTableWidgetItem *item_max22 = new QTableWidgetItem();
item_max22->setText(QString("6666"));
QTableWidgetItem *item_max23 = new QTableWidgetItem();
item_max23->setText(QString("7777"));
QTableWidgetItem *item_max24 = new QTableWidgetItem();
item_max24->setText(QString("8888"));
ui.tableWidget->setItem(0, 0, item_max);
ui.tableWidget->setItem(0, 1, item_max2);
ui.tableWidget->setItem(0, 2, item_max3);
ui.tableWidget->setItem(0, 3, item_max4);
ui.tableWidget->setItem(0, 4, item_max5);
ui.tableWidget->setItem(0, 5, item_max6);
ui.tableWidget->setItem(0, 6, item_max7);
ui.tableWidget->setItem(0, 7, item_max8);
ui.tableWidget->setItem(0, 8, item_max9);
ui.tableWidget->setItem(0, 9, item_max10);
ui.tableWidget->setItem(0, 10, item_max11);
ui.tableWidget->setItem(0, 11, item_max12);
ui.tableWidget->setItem(0, 12, item_max13);
ui.tableWidget->setItem(0, 13, item_max14);
ui.tableWidget->setItem(0, 14, item_max15);
ui.tableWidget->setItem(0, 15, item_max16);
ui.tableWidget->setItem(0, 16, item_max17);
ui.tableWidget->setItem(0, 17, item_max18);
ui.tableWidget->setItem(0, 18, item_max19);
ui.tableWidget->setItem(0, 19, item_max20);
ui.tableWidget->setItem(0, 20, item_max21);
ui.tableWidget->setItem(0, 21, item_max22);
ui.tableWidget->setItem(0, 22, item_max23);
ui.tableWidget->setItem(0, 23, item_max24);
*/
标签: UDP
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论