一个协调器连接十个终端,如何能获取十个终端的短地址,求思路
VV:
终端在入网成功以后会发送
device Announce,协调器收到这个device Announce就知道他们的地址了
aa qq:
temp=pkt->srcAddr.addr.shortAddr;
wenqi lu:
回复 VV:
device Announce ??是记录了我协调器连接的10个终端的地址吗?
wenqi lu:
回复 aa qq:
但是我需要获取10个终端
wenqi lu:
回复 VV:
HI VV/:
device Announce ??是记录了我协调器连接的10个终端的地址吗?还是组网成功的终端就会发生一个device Announce,然后我需要处理10次吗?
Viki Shi:
回复 wenqi lu:
每个终端都会发送device Announce,里面包含它本身的地址
Y.SH. Tang:
最笨有效的方法:
终端入网后,直接把自己的网络地址发送给协调器不就可以了吗?
void SendAddressToCoor( void )
{ uint8 AddrData[3];
AddrData[0] = 0x00;
uint16 ShortAddr = NLME_GetShortAddr();
AddrData1] = ShortAddr>>8;
AddrData[2] = ShortAddr & 0x00FF;
SendData(0x0000, AddrData, 4);
}
VV:
回复 Y.SH. Tang:
两种方法,
1)节点在入网的时候都会发送Device Announce,这个Device Announce是广播数据,所以每个设备的Device Announce,Coordinator都能收到,而且在Device Announce 都带有这个设备的短地址,那么你的Coordinator也就可以获得所有终端设备的短地址了。
2)如果错过了Device Announce,那么在协议栈里面有现成的API ZDP_IEEEAddrReq()函数也可以使用获得终端设备的地址,具体参考附件的文档。
wenqi lu:
回复 Y.SH. Tang:
HI Y.SH. Tang:
之前也是只想到这个办法,但是当要获取更多的终端并记录就会很麻烦
TI中文支持网
