如何在UART上读取具有读取功能的十六进制值

时间:2014-02-20 14:55:42

标签: serial-port hex ascii uart

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

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

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

哪个做得好。但是我的阅读有问题。我希望能够读取十六进制值并稍后使用读取值。

目前我正在阅读此功能

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

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

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

    printf(“%X”,缓冲区);

答案 1 :(得分:0)

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

如果是最近的编译器,

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

,否则

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