在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例Qt 图形界面开发 → udp组播例子

udp组播例子

Qt 图形界面开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:5.98M
  • 下载次数:32
  • 浏览次数:200
  • 发布时间:2019-09-04
  • 实例类别:Qt 图形界面开发
  • 发 布 人:ww2ee
  • 文件格式:.rar
  • 所需积分: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);
	*/

标签: UDP

实例下载地址

udp组播例子

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警