[讨论] 有个函数不懂其中过程,望大家帮助解答

450803313   2014-7-28 22:58 楼主
void To_string(uint *dest ,char *src ,uint8 length)
{
    uint8 *xad;
    uint8 i=0;
    uint8 ch;
    xad = src +length  -1 ;
    for (i=0; i     {
        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协议栈的串口发送函数;
}

回复评论 (2)

不好意思,函数修改三处:
uint8 *dest
dest[i<<1] =ch+ ((ch<10) ? '0' : '7');
dest[(i<<1) + 1] = ch + (( ch<10 ) ? '0' : '7');
点赞  2014-7-28 23:26
NLME_GetExtAddr()是为了获得设备的64位MAC地址
点赞  2014-12-9 19:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复