微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 协调器获取多个终端地址

协调器获取多个终端地址

时间:10-02 整理:3721RD 点击:

一个协调器连接十个终端,如何能获取十个终端的短地址,求思路

终端在入网成功以后会发送

 device Announce,协调器收到这个device Announce就知道他们的地址了

temp=pkt->srcAddr.addr.shortAddr;

 

device Announce ?是记录了我协调器连接的10个终端的地址吗?

但是我需要获取10个终端

HI VV/:

device Announce ?是记录了我协调器连接的10个终端的地址吗?还是组网成功的终端就会发生一个device Announce,然后我需要处理10次吗?

每个终端都会发送device Announce,里面包含它本身的地址

最笨有效的方法:

终端入网后,直接把自己的网络地址发送给协调器不就可以了吗?

void SendAddressToCoor( void )

 {   uint8 AddrData[3];   

 AddrData[0] = 0x00;    

 uint16 ShortAddr =  NLME_GetShortAddr();

 AddrData1] = ShortAddr>>8;  

AddrData[2] = ShortAddr & 0x00FF;  

 SendData(0x0000, AddrData, 4);

 }

两种方法,

1)节点在入网的时候都会发送Device Announce,这个Device Announce是广播数据,所以每个设备的Device Announce,Coordinator都能收到,而且在Device Announce 都带有这个设备的短地址,那么你的Coordinator也就可以获得所有终端设备的短地址了。

2)如果错过了Device Announce,那么在协议栈里面有现成的API ZDP_IEEEAddrReq()函数也可以使用获得终端设备的地址,具体参考附件的文档。

0820.Method for Discovering Network Topology.pdf

HI Y.SH. Tang:

       之前也是只想到这个办法,但是当要获取更多的终端并记录就会很麻烦

呵呵,我比较笨,我目前实验采用了30多个节点,在协调器上设一个二维数据,记录各节点的网络地址,我就是这么做的,节点变化了就向00 00 发一次短地址。

thanks Y.SH. Tang

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top