ZigBee协议栈点播

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

  点播描述的就是网络中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_DstAddrSampleApp_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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值