CC2530实现协议栈网络通信实验(组播)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
易思开发工作室 ES Technology http://es-tech.taobao.com
实验结果:将修改后的程序分别以协调器、路由器、终端的方式下载到 3 个设备,把协调器和路由器组号设置成 0x0002,终端设备组号设成 0x0003。 连接串口,可以观察到只有 0x0002 的两个设备相互发送信息。
} } 其中接收 ID 我们在原来基础上改成我们刚定义 Test_GROUP_CLUSTERID。
将修改后的程序分别以协调器、路由器、终端的方式下载到 3 个设备,把协 调器和路由器组号设置成 0x0002,终端设备组号设成 0x0003。连接串口,可以 观察到只有 0x0002 的两个设备相互发送信息。
易思开发工作室 ES Technology http://es-tech.taobao.com
文件名:协议栈网络通信实验(组播) Zigbee 的通讯方式主要有三种点播、组播、广播。点播,顾名思义就是点对 点通信,也就是 2 个设备之间的通讯,不容许有第三个设备收到信息;组播,就 是把网络中的节点分组,每一个组员发出的信息只有相同组号的组员才能收到。 广播,最广泛的也就是 1 个设备上发出的信息所有设备都能接收到。 这也是 ZigBee 通信的基本方式。 注意: 1. 先安装好 PL2302 USB 转串口驱动,转备好 USB 线,连接计算机与接收模块。 2. 需要两个或者两个以上模块,分别用于协调器、路由器、终端。 实验目的:学习如何使用 TI 提供的协议栈,进行组网和无线数据通信。其 中一个模块为协调器,一个模块为无线终端,一个模块为路由器。 实验步骤: 1. 打开工程文件:协议栈的无线数据传输
afAddrType_t Group_DstAddr 组播内容的结构体: 2. 加入组播参数的配置。
Group_DstAddr.addrMode = (afAddrwenku.baidu.comode_t)afAddrGroup; Group_DstAddr.endPoint = SAMPLEAPP_ENDPOINT; Group_DstAddr.addr.shortAddr = Test_GROUP; 其中 Test_GROUP 在 SampleApp.h 里面定义组号为 2:
#define Test_GROUP 0x0002 // 组播号 2
易思开发工作室 ES Technology http://es-tech.taobao.com
{
afAddrNotPresent = AddrNotPresent,
afAddr16Bit
= Addr16Bit,
afAddr64Bit
HalUARTWrite(0,"\n",1);
//
break;
case SAMPLEAPP_FLASH_CLUSTERID: flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] ); HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) ); break;
具体实验: 1. 发送部分 组播描述的就是网络中所有节点设备被分组后组内相互通信的过程。确定通
信对象的就是节点的组号。下面我们在 SampleApp 例程完通过简单的修改完成 组播实验。
终端的描述文件在 AF.h 文件里,找到下面代码: 1. 在SampleApp.c中加入2项内容: 组播afAddrType_t的类型变量
Test_GROUP_CLUSTERID, 10, data, &SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } }
其中 Group_DstAddr 我们之前已经定义,我们在 SampleApp.h 中加入 Test _GROUP_CLUSTERID 的定义如下: #define Test _GROUP_CLUSTERID 4 // 传输编号 4
case Test_GROUP_CLUSTERID: HalUARTWrite(0,"Receive data: \n",14); //
易思开发工作室 ES Technology http://es-tech.taobao.com
for(i=0;i<10;i++)
HalUARTWrite(0,&asc_16[pkt->cmd.Data[i]],1);// sent data to PC
\Projects\zstack\Samples\SampleApp\CC2530DB\ SampleApp,分别选择 EndDeviceEB-Pro, RouterEB-Pro,CoordintorEB-Pro,分别下载到三个模块中, 如下图所示。
2. 连接计算机与协调器模块,可以看到协调器接收到数据。
= Addr64Bit,
afAddrGroup
= AddrGroup,
afAddrBroadcast = AddrBroadcast
} afAddrMode_t;
发送函数 void SampleApp_SendGroupMessage( void ) {
uint8 data[10]={0,1,2,3,4,5,6,7,8,9}; if ( AF_DataRequest( &Group_DstAddr, &SampleApp_epDesc,
2. 接收部分
接收数据函数 void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) {
uint8 asc_16[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'},i; uint16 flashTime; switch ( pkt->clusterId ) {