获取自身的和父节点网络地址、MAC地址 1、实验内容: 协调器上电后建立网路,路由器自动加入网络。然后路由器调用相关的API函数获取本身的网络地址、MAC地址,父节点网络地址和父节点MAC地址,然后通过串口将其发送到PC端的串口调试助手 2、知识补充:获取本身的网络地址、MAC地址,父节点网络地址和父节点MAC地址的API函数。 uinit16 NLME_GetShortAddr(void) 返回该节点的网络地址。 byte* NLME_GetExtAddr(void) 返回指向该节点MAC地址的指针。 uint16 NLME_GetCoordShortAddr(void) 函数返回父节点的网络地址 void NLME_GetCoordExtAdd(byte* buf)该函数的参数是指向存放父节点的MAC地址的缓冲区的指针。 此外,在ZigBee还有,已知节点的网络地址查询节点的IEEE地址或已知节点的IEEE地址查询该节点的网络地址。
3、部分程序
void ShowInfo(void);void To_string(uint8* dest,char* src,uint8 length);typedef struct RFTXBUF{ uint8 myNWK[4]; uint8 myMAC[16]; uint8 pNWK[4]; uint8 pMAC[16]; }RFTX;void ShowInfo(void){ RFTX rftx; uint8 buf[8]; uint8 changline[2]={0x0A,0x0D}; uint16 nwk; nwk=NLME_GetShortAddr();To_string(rftx.myNWK,(uint8*)&nwk,2); //uint8*4 uint16=uint8*2To_string(rftx.myMAC,NLME_GetExtAddr(),8);//uint8*16 byte*8 nwk=NLME_GetCoordShortAddr();To_string(rftx.pNWK,(uint8*)&nwk,2);NLME_GetCoordExtAddr(buf);To_string(rftx.pMAC,buf,8); HalUARTWrite(0,"NWK:",osal_strlen("NWK:")); HalUARTWrite(0,rftx.myNWK,4); HalUARTWrite(0," MAC:",osal_strlen(" MAC:")); HalUARTWrite(0,rftx.myMAC,16); HalUARTWrite(0," p-NWK:",osal_strlen(" p-NWK:")); HalUARTWrite(0,rftx.pNWK,4); HalUARTWrite(0," p-MAC:",osal_strlen(" p-MAC:")); HalUARTWrite(0,rftx.pMAC,16); HalUARTWrite(0,changline,2);}void To_string(uint8 *dest,char* src,uint8 length)//二进制数转化为十六进制数
{ uint8* xad; uint8 i=0; uint8 ch; xad=src+length-1; for(i=0;i<length;i++,xad--) { ch=(*xad>>4)&0x0F; //除以十六 dest[i<<1]=ch+((ch<10)?'0':'7'); ch=*xad&0x0F; dest[(i<<1)+1]=ch+((ch<10)?'0':'7'); }}
|