点播、组播、广播

一、基础知识补充

  Zigbee的通信方式主要有三种:点播、组播、广播。

  点播就是点对点通信,也就是两个设备之间的通信,不允许第三个设备收到信息。

  组播就是把网络中的节点分组,每一个组员发出的信息只有相同组号的组员才能收到。

  广播,最广泛的就是1个设备上发出的信息所以设备都能接收到。 

二、点播实验步骤

  因为要将收到的数据通过串口显示在屏幕上,所以在程序开始之前先把串口初始化吧~设置波特率和关闭流控不要忘记!完成后就开始点播实验吧~

  1. 打开AF.h,找到图1所示代码段。该类型是枚举类型。

 「ZigBee模块」网络通讯实验-点播、组播、广播

图1

  我们需要知道的是Addr16Bit表示点播,AddrGroup表示组播,AddrBroadcast表示广播。

  打开SampleApp.c声明一个结构体变量(如图2

afAddrType_t Point_To_Point_DstAddr;

「ZigBee模块」网络通讯实验-点播、组播、广播 

图2

  这个是点对点通信的定义。查看afAddrType_t的定义就可以知道其中包含哪些内容。这个结构体是用于选择你将要进行哪种方式的通信。在后面发送数据的函数中会用到。

  2. 声明了结构体变量就要对其进行初始化对吧?初始化的代码一般都写在初始化函数SampleApp_Init()中。我们现在来对Point_To_Point_DstAddr进行配置吧。

  代码如下:

 Point_To_Point_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;//点播

 Point_To_Point_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;

 Point_To_Point_DstAddr.addr.shortAddr = 0x00; //发送给协调器

 「ZigBee模块」网络通讯实验-点播、组播、广播

图3

  注意最后一个值是0x0000,这个是协调器的地址,这样配置我们就可以确保只发送给协调器啦。如图3我们还可以看到另外两个同结构体类型的初始化配置。它们的通信方式分别是广播和组播。广播的发送地址是0xFFFF,这个是指发送给全部的设备。组播的发送地址从变量名就可以看出是发送给同一组内成员哒。 

  3. 在SampleApp.c下添加自己的点对点发送函数。

 1 void SampleApp_SendPointToPointMessage(void)
 2 
 3 {
 4 
 5   uint8 data[10] = {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’};
 6 
 7   if ( AF_DataRequest( &Point_To_Point_DstAddr, &SampleApp_epDesc,
 8 
 9                        SAMPLEAPP_POINT_TO_POINT_CLUSTERID,
10 
11                        10,
12 
13                        &data[0],
14 
15                        &SampleApp_TransID,
16 
17                        AF_DISCV_ROUTE,
18 
19                        AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
20 
21   {
22 
23   }
24 
25   else
26 
27   {
28 
29     // Error occurred in request to send.
30 
31   }
32 
33 }
SampleApp_SendPointToPointMessage

相关文章:

  • 2021-07-14
  • 2022-02-25
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
  • 2021-08-06
  • 2021-09-01
  • 2022-03-04
猜你喜欢
  • 2021-08-14
  • 2022-12-23
  • 2022-12-23
  • 2021-12-22
  • 2021-05-29
  • 2021-12-13
  • 2022-01-05
相关资源
相似解决方案