基本信息
源码名称:udp组播例子
源码大小:5.98M
文件格式:.rar
开发语言:C/C++
更新时间:2019-09-04
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
udp组播例子
udp组播例子
#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);
*/