ZigBee组播通信原理



组播通信原理
组播通信:在Zigbee网络,模块可以分组来标记,发送的模块如果组号和网络里面标记模块的组号相对应,那么这些模块就可以
拿到这些无线数据包。


组播的特点:
1,分组中的编号是两个字节(即组号是两个字节)
2,组号必须和已经定义了的端点相关联。
   即:组都是和模块里已经定义了的端点相关联,如果我们说一个模块标记为组0x01,那么这个模块里面至少有一个定义了的
   端点与这个和组(0x01)相关联
 
3,发送模块必须指明发送给哪个组,哪个端点,簇编号,原则上,只要当接收模块的这三个参数匹配上了,才能拿到和处理这样
一个无线数据包。

4,组标记中,同一个模块下的定义的一个组,可以关联多个可用的端点,同一个端点也可以关联多个组。


代码示例:

#define SAMPLEAPP_FLASH_CLUSTERID    2        //簇编号
#define SAMPLEAPP_FLASH_GROUP                 0x0001 //组编号


afAddrType_t  SampleApp_Flash_DstAddr;    //组播
// 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.shortAddr    = SAMPLEAPP_FLASH_GROUP;//注意这里是接收模块的组编号


endPointDesc_t SampleApp_epDesc;
SampleApp_epDesc.endPoint   = SAMPLEAPP_ENDPOINT;//模块的端点
SampleApp_epDesc.task_id    = &SampleApp_TaskID;//指明数据由接收方的哪一个任务来处理
SampleApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
SampleApp_epDesc.latencyReq = noLatencyReqs;
afRegister( &SampleApp_epDesc );//绑定

aps_Group_t   SampleApp_Group;
SampleApp_Group.ID = 0x0001; //接收模块的组编号
osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );//把组跟端点关联,一定要端点关联

uint8         SampleApp_TransID = 0; //发送成功的帧条数,由底层负责更新

uint8 buffer[3];
uint16 flashTime = 856;//组播的数据
buffer[0] = (uint8)(SampleAppFlashCounter++);
buffer[1] = LO_UINT16( flashTime );
buffer[2] = HI_UINT16( flashTime );
if ( AF_DataRequest( &SampleApp_Flash_DstAddr,
                     &SampleApp_epDesc,
                     SAMPLEAPP_FLASH_CLUSTERID,
                     3,
                     buffer,
                     &SampleApp_TransID,
                     AF_DISCV_ROUTE,
                     AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{

}




代码很简单,有以下几点需要说明一下:

1,在使用上广播没有什么区别,仅仅是地址模式、地址内容不一样
2,可以调用aps_RemoveGroup方法解除关联。
2,协调器用到了组,要引入#include "aps_groups.h" 头文件。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值