欢迎来到天天文库
浏览记录
ID:1970816
大小:29.00 KB
页数:3页
时间:2017-11-14
《zigbee单播-组播-广播》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Zigbee单播、组播、广播网络通信(2012-12-2617:04:39)转载▼标签:z-stackzigbee单播组播广播分类:ZigbeeZigbee网络中进行数据通信主要有三种类型:单播、组播、广播。那这三种方式如何设置呢,在哪里设置呢,还记得之前学习的Zigbee协议栈进行数据发送是调用AF_DataRequest这个函数:afStatus_tAF_DataRequest(afAddrType_t*dstAddr,//目的地址指针endPointDesc_t*srcEP,//发送节点的端点描述符指针uint16
2、cID,//ClusID簇ID号uint16len,//发送数据的长度uint8*buf,//指向存放发送数据的缓冲区指针uint8*transID,//传输序列号,该序列号随着信息的发送而增加uint8options,//发送选项uint8radius//最大传输半径(发送的跳数))参数1:afAddrType_t*dstAddr该参数包含了目的节点的网络地址、端点号及数据传送的模式,如单播、广播或多播等。afAddrType_t是个结构体如下:typedefstruct{union{uint16shortAddr;/
3、/用于标识该节点网络地址的变量}addr;afAddrMode_taddrMode;//用于指定数据传送模式,单播、多播还是广播byteendPoint;//端点号}afAddrType_t;//其定义在AF.h中在Zigbee中,数据包可以单点传送(unicast),多点传送(multicast)或者广播传送,所以必须有地址模式参数。一个单点传送数据包只发送给一个设备,多点传送数据包则要传送给一组设备,而广播数据包则要发送给整个网络的所有节点。因此上述结构体中的afAddrMode_taddrMode就是用于指定数据传
4、送模式,是个枚举类型,可以设置为以下几个值,typedefenum{afAddrNotPresent=AddrNotPresent,//表示通过绑定关系指定目的地址afAddr16Bit=Addr16Bit,//单播发送afAddrGroup=AddrGroup,//组播afAddrBroadcast=AddrBroadcast//广播}afAddrMode_t;enum{AddrNotPresent=0,AddrGroup=1,Addr16Bit=2,Addr64Bit=3,AddrBroadcast=15};看到这里
5、知道了通信方式在哪里设置了,那不同的通信模式,我们要怎么设置哪些参数呢?单播:注意:其实单播有两种方式一种是绑定传输my_DstAddr.addrMode=(afAddrMode_t)AddrNotPresent,一种是直接指定目标地址的单播传输,比如协调器就是0x0000。绑定后面再学吧!单播绑定传输:my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;//单播发送my_DstAddr.endPoint=GENERICAPP_ENDPOINT;//目的端口号my_DstAddr.ad
6、dr.shortAddr=0;//按照绑定的方式进行单播,不需要指定目标地址,需要先将两个设备绑定,将两个设备绑定后即可通信直接指定目标地址的单播传输:是标准寻址模式,它将数据包发送给一个已经知道网络地址的网络设备,将afAddrMode设置为Addr16Bit并且在数据包中携带目标设备地址。my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;//单播发送my_DstAddr.endPoint=GENERICAPP_ENDPOINT;//目的端口号my_DstAddr.addr.sho
7、rtAddr=0x0000;//目标设备网络地址广播:当应用程序需要将数据包发送给网络的每一个设备时,使用这种模式。地址模式设置为AddrBroadcast。目标地址my_DstAddr.addr.shortAddr可以根据需求设置为下面广播地址的一种:NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——数据包将被传送到网络上的所有设备,包括睡眠中的设备。对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或者消息超时(NWK_INDIRECT_MSG_TIMEOUT在f8wConifg
8、.cfg中)。NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——数据包将被传送到网络上的所有在空闲时打开接收的设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——数据包发送给所有的路由器,包
此文档下载收益归作者所有