This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

如何用HalUARTWrite输出IEEE地址



想在协调器用串口输出指定终端的IEEE地址。

尝试了几种方法,包括:

1.

HalUARTWrite(0,pkt->srcAddr.addr.extAddr,8) ;

2.

uint8 extaddr[8];

AddrMgrExtAddrLookup(nwkaddr,extaddr);

HalUARTWrite(0,extaddr,8);

3.

uint8 extaddr[8];

osal_cpyExtAddr(extaddr,pkt->srcAddr.addr.extAddr);

HalUARTWrite(0,extaddr,8);

均显示乱码,不知道是不是需要转ASCII码逐个输出,感觉逐个转码很麻烦,有没有什么好的办法?

  • 如果你想打印出来可以hex显示,如果想text显示是需要转码的。
  • 你好,请问怎么设置hex显示呢?在串口初始化里么?
  • UART传输本来就是字符,我的意思是在你PC上的串口助手上让显示HEX而不是文本模式应该可以见。

    给你一个转换的函数参考。

    /*********************************************************************
     * @fn      Util_convertBdAddr2Str
     *
     * @brief   Convert Bluetooth address to string. Only needed when
     *          LCD display is used.
     *
     * @param   pAddr - BD address
     *
     * @return  BD address as a string
     */
    char *Util_convertBdAddr2Str(uint8_t *pAddr)
    {
      uint8_t     charCnt;
      char        hex[] = "0123456789ABCDEF";
      static char str[(2*B_ADDR_LEN)+3];
      char        *pStr = str;
    
      *pStr++ = '0';
      *pStr++ = 'x';
    
      // Start from end of addr
      pAddr += B_ADDR_LEN;
    
      for (charCnt = B_ADDR_LEN; charCnt > 0; charCnt--)
      {
        *pStr++ = hex[*--pAddr >> 4];
        *pStr++ = hex[*pAddr & 0x0F];
      }
      pStr = NULL;
    
      return str;
    }

  • 好的,我都试试看。
    十分感谢!