我需要串口(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]);
由于您的问题缺乏正确回答您所需的信息,因此以下是我的假设:
- 您知道您正在通过该行发送单个字节(可以用十六进制表示为 0xff,以十进制表示为 255,以二进制表示为 11111111)
- 你知道没有区别,一切都只是数字。
-
您希望将这个单个数字表示为用户字符串,此字符串以十六进制表示法描述该数字。
printf( "%X", buffer );