zigbee协议栈初使用(五)点播无线通讯

zigbee协议栈初使用(五)点播无线通讯
点播:点对点通讯,即两个设备间通讯,不容许第三个设备接收数据信息。
在AF.h中 有如下定义
这里写图片描述


typedef enum
{
  afAddrNotPresent = AddrNotPresent,
  afAddr16Bit      = Addr16Bit, //点播方式
  afAddr64Bit      = Addr64Bit,
  afAddrGroup      = AddrGroup,  //组播方式
  afAddrBroadcast  = AddrBroadcast //广播方式
} afAddrMode_t;

typedef struct
{
  union
  {
    uint16      shortAddr; //短地址
    ZLongAddr_t extAddr;   //IEEE地址
  } addr;
  afAddrMode_t addrMode;   //传送模式
  byte endPoint;   //端点号
  uint16 panId;  // used for the INTER_PAN feature
} afAddrType_t;

这些是关于组网方式的结构体,后面会用到。

在SampleApp.c中找到如下代码并添加点播定义

afAddrType_t SampleApp_Periodic_DstAddr; //广播
afAddrType_t SampleApp_Flash_DstAddr;   //组播
afAddrType_t SampleApp_P2P_DstAddr;    //点播

在函数声明处声明点播发送函数
void SampleApp_sendP2P_Message(void);
这里写图片描述
在初始化函数里添加初始化点播

  SampleApp_P2P_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; //点播
  SampleApp_P2P_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;  //终端
  SampleApp_P2P_DstAddr.addr.shortAddr = 0x0000;     //协调器地址

添加地址位置在下图
这里写图片描述
之后添加自己定义的点播发送函数

void SampleApp_SendP2P_Message(void)
{
  uint8 data[11] = "0123456789";
  if ( AF_DataRequest( &SampleApp_P2P_DstAddr,  //P2P的方式
                      &SampleApp_epDesc,
                       SAMPLEAPP_P2P_CLUSTERID,  //数据包号,自己定义
                       10,                       //字符数
                       data,                     //数据
                       &SampleApp_TransID,
                       AF_DISCV_ROUTE,
                       AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
  {
  }
  else
  {
    // Error occurred in request to send.
  }
}

SAMPLEAPP_P2P_CLUSTERID在头文件中定义如下:
这里写图片描述
在uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )事件处理函数中将协调器关闭,协调器不需要发送数据
这里写图片描述
将周期发送函数注释,添加刚刚写的点播发送数据
这里写图片描述
修改接收函数
这里写图片描述
最后,因为用到了串口记得初始化串口及添加串口头文件。
本文数据仅周期发送,如果需要点播收发,可以参考上篇串口透传,修改使用串口接收数据包即可。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值