点播描述的就是网络中2个节点相互通信的过程,确定通信对象的就是节点的16 bit短地址。
打开AF.h(在Profile目录下)文件,找到下面的代码:
typedef enum {
afAddrNotPresent = AddrNotPresent,
afAddr16Bit = Addr16Bit,
afAddr64Bit = Addr64Bit,
afAddrGroup = AddrGroup,
afAddrBroadcast = AddrBroadcast
} afAddrMode_t;
该类型是一个枚举类型:
- 当
addrMode = Addr16Bit时,对应点播方式。 - 当
addrMode = AddrGroup时,对应组播方式。 - 当
addrMode = AddrBroadcast时,对应广播方式。
打开SampleApp.c文件,发现已经存在如下代码:
afAddrType_t SampleApp_Periodic_DstAddr;
afAddrType_t SampleApp_Flash_DstAddr;
分别是组播和广播。我们按照格式来添加自己的点播:
afAddrType_t Point_To_Point_DstAddr;
参考SampleApp_Periodic_DstAddr和SampleApp_Flash_DstAddr,对Point_To_Point_DstAddr的参数进行配置。在SampleApp_Init函数中加入如下代码:
Point_To_Point_DstAddr.addrMode = ( afAddrMode_t ) Addr16Bit; /* 点播 */
Point_To_Point_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
Point_To_Point_DstAddr.addr.shortAddr = 0x0000; /* 发给协调器 */
第3行的含义是点播的发送对象为0x0000,也就是协调器的地址,节点和协调器之间实现点对点通讯。这段代码在如下位置添加:
/* Setup for the flash command's destination address - Group 1 */
SampleApp_Flash_DstAddr.addrMode = ( afAddrMode_t ) afAddrGroup;
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr

本文详细介绍了ZigBee协议栈中如何实现点播通信。通过修改代码,设置发送对象的短地址,实现了节点与协调器之间的点对点通讯。在接收端,更新接收函数以匹配新的点播配置。最终,通过周期性点播发送数据,确保路由器和终端只与协调器通信,验证了点对点传输的正确性。

1818

被折叠的 条评论
为什么被折叠?



