我正在编写一个从 Linux 上的串口读取数据的程序。数据由具有以下帧格式的另一个设备发送:
|start | Command | Data | CRC | End |
|0x02 | 0x41 | (0-127 octets) | | 0x03|
----------------------------------------------------
如图所示,数据字段包含 127 个八位字节,八位字节 1,2 包含一种数据;八位字节 3,4 包含另一个数据。我需要得到这些数据。
因为在C中,一个字节只能容纳一个字符,并且在帧的起始字段中,它是 0x02,这意味着 STX 是 3 个字符。
所以,为了测试我的程序,
在发送方,我构造了一个数组作为上面格式化的帧,如:
char frame[254];
frame[0] = 0x02; // starting field
frame[1] = 0x41; // command field which is character 'A'
..so on..
然后,在接收方,我取出如下字段:
字符结果[254]; // 读取数据 读取(结果); printf("命令 = %c", 结果[1]); // 获取帧的命令字段 // 获取其他字段的值
命令字段值 (result[1]) 不是字符“A”。
我认为,这是因为帧的第一个字段值是 0x02(STX),占据了阵列帧中的 3 个首位,导致接收端出现错误的结果。
我该如何纠正这个问题,或者我在发件人方面做错了什么?