协调器获取多个终端地址
一个协调器连接十个终端,如何能获取十个终端的短地址,求思路
终端在入网成功以后会发送
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