有个函数不懂其中过程,望大家帮助解答
时间:10-02
整理:3721RD
点击:
void To_string(uint *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');
}
}
这个函数出现在《ZigBee无线网络设计与实现》P172,调用过程如下:
/******************************************************************
*
* @fn ShowInfo
*
* @breif 向串口发送地址数据的函数,将RFTX结构体中的值
* 通过To_string()取出传送至PC上的串口助手
*
*/
void ShowInfo ( void )
{
RFTX Cook ;
uint16 nwk ;
uint8 buf[8];
uint8 CLine[2]={0x0a,0x0d};
nwk = NLME_GetShortAddr() ;
To_string(Cook.MyNWK,(uin8 *)&nwk,2); //*****
To_string(Cook.MyMAC,NLME_GetExtAddr(),8); //******哪位大神能再解释下NLME_GetExtAddr(),不胜感激(书中和协议栈中都没有定义的函数...)
nwk =NLME_GetCoordShortAddr();
To_string(FaNWK,(uint8 *)&nwk,2); //*****
NLME_GetCoordExtAddr(buf);
To_string(rftx.FaMAC,buf,8); //*********
..... //Z-stack协议栈的串口发送函数;
}
{
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');
}
}
这个函数出现在《ZigBee无线网络设计与实现》P172,调用过程如下:
/******************************************************************
*
* @fn ShowInfo
*
* @breif 向串口发送地址数据的函数,将RFTX结构体中的值
* 通过To_string()取出传送至PC上的串口助手
*
*/
void ShowInfo ( void )
{
RFTX Cook ;
uint16 nwk ;
uint8 buf[8];
uint8 CLine[2]={0x0a,0x0d};
nwk = NLME_GetShortAddr() ;
To_string(Cook.MyNWK,(uin8 *)&nwk,2); //*****
To_string(Cook.MyMAC,NLME_GetExtAddr(),8); //******哪位大神能再解释下NLME_GetExtAddr(),不胜感激(书中和协议栈中都没有定义的函数...)
nwk =NLME_GetCoordShortAddr();
To_string(FaNWK,(uint8 *)&nwk,2); //*****
NLME_GetCoordExtAddr(buf);
To_string(rftx.FaMAC,buf,8); //*********
..... //Z-stack协议栈的串口发送函数;
}
不好意思,函数修改三处:
uint8 *dest
dest[i<<1] =ch+ ((ch<10) ? '0' : '7');
dest[(i<<1) + 1] = ch + (( ch<10 ) ? '0' : '7');
NLME_GetExtAddr()是为了获得设备的64位MAC地址