基本信息
源码名称: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); */