就是短地址发送改为了长地址发送,数据就发不出了
就是短地址发送改为了长地址发送,数据就发不出了,具体代码见下面:
// Use short address
dstAddr.addr.shortAddr = destination;//destination==0就是协调器的地址;
dstAddr.addrMode = afAddr16Bit;
改成下面代码变为长地址发送,却发不出了。
uint8 ieee[Z_EXTADDR_LEN] ={0x00,0x12,0x4b,0x00,0x05,0x52,0x7b,0x28};
dstAddr.addrMode = afAddr64Bit;
osal_memcopy(dstAddr.addr.extAddr,ieee,8);
注osal_memcopy为
void osal_memcopy (void *dst,const void GENERIC *src,unsigned int len)
{
uint8 *pDst;
const uint8 GENERIC *pSrc;
pSrc=src;
pDst=dst;
while(len--)
{
*pDst++=*pSrc++;
}
}
长地址模式发送,在底层页是通过长地址找到短地址,然后通过短地址把数据发送出去,也就是说ZIgBee网络里面,真正在空中通信的数据报文永远是短地址。
有可能在底层没有找到对应的短地址,直接丢弃了
VV你好!
现在我的设备A是一个EndDevice,从协调器那里收到了另外一个设备B的IEEE地址,设备A向设备B发送数据不能直接将地址模式写成Addr64bit,然后将ext addr里写上IEEE地址,这样发送不成功!就像您说的有可能被底层丢弃了,考虑被丢弃了我的这个应用该怎么做?
麻烦指导下!谢谢
little endian ?
长地址是过不了路由的,点对点可以。