如何在UART上使用读取功能读取十六进制值



我需要串口(UART)读取功能的帮助。我需要读入并显示十六进制值,但目前我正在读取 ASCII 值。

通过我使用的UART发送十六进制

char data [] = {0xFF};
write(fd, data, sizeof(data));

这做得很好。但是我在阅读时有问题。我希望能够读取十六进制值并在以后使用读取值。

目前我正在使用此功能阅读

read(fd, buffer, sizeof(buffer));

结果它向我显示了 ASCII 值,我知道我需要进行某种转换,但我已经搜索并未能找到如何做到这一点。

提前谢谢。

代码可能读取数据正常,但需要使用"%X"进行后续显示。
对于每个字节:

如果最近的编译器,

printf("%02hhX", buffer[i]);

否则

printf("%02X", (unsigned char) buffer[i]);

由于您的问题缺乏正确回答您所需的信息,因此以下是我的假设:

  1. 您知道您正在通过该行发送单个字节(可以用十六进制表示为 0xff,以十进制表示为 255,以二进制表示为 11111111)
  2. 你知道没有区别,一切都只是数字。
  3. 您希望将这个单个数字表示为用户字符串,此字符串以十六进制表示法描述该数字。

    printf( "%X", buffer );

相关内容

  • 没有找到相关文章

最新更新