我试图从串口接收数据。但是,这些数据对我来说无法识别。根本原因是因为那些是ASCII。要解码数据,它需要是字节格式。
我创建的缓冲区是unsigned char [255]
,我尝试使用
while (STOP==FALSE) {
res = read(fd,buf,255);
buf[res]=0;
printf(":%x\n", buf[0]);
if (buf[0]=='z') STOP=TRUE;
}
这里有两个问题:
答案 0 :(得分:2)
Ascii是一个以字节为单位的文本编码。阅读它们没有区别,这只是你解释所读内容的问题。这不是你的问题。
您的问题是您一次读取最多255个字节,并且只打印第一个字节。
当您期望二进制数据(可能包含buf[res]
个字节)时,将0
设置为0
是没有意义的。这对终止文本字符串非常有用。
只需在缓冲区上使用循环,例如
for (int i = 0; i < res; ++i)
{
printf("%x", buf[i]);
}