基本信息
源码名称:udp组播例子
源码大小:5.98M
文件格式:.rar
开发语言:C/C++
更新时间:2019-09-04
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
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);
	*/