自定义协议解析组包中,大小端问题如何处理?
时间:2021-09-23 15:43:44
手机看文章
扫描二维码
随时随地手机看文章
[导读]关注「嵌入式大杂烩」,选择「星标公众号」一起进步!在嵌入式产品开发中,经常会遇到两个设备之间的通信、设备与服务器的通信、设备和上位机的通信等,很多时候通信协议都是自定义的,所以就涉及到自定义协议的解析和组包问题。比如针对下面的这样一个协议:帧头1帧头2字段1字段2校验固定值:0x...
关注「嵌入式大杂烩」,选择「星标公众号」一起进步!
数据在发送时涉及到一个大小端的概念,大小端是针对多字节数据的传输,比如上述协议中字段1,假设两字节内容为0x0001,先发送0x01后发送0x00,称为小端模式;先发送0x00后发送0x01,称为大端模式。
帧头1 | 帧头2 | 字段1 | 字段2 | 校验 |
---|---|---|---|---|
固定值:0x55 | 固定值:0xAA | 设备ID | 电压值 | 前面所有数据异或值 |
char | char | short | float | char |
1字节 | 1字节 | 2字节 | 4字节 | 1字节 |
#include
int main()
{
unsigned char Rxbuf[9] = {0x55,0xAA,0x01,0x00,0x33,0x33,0x53,0x40,0xED};
short DeviceId;
float Voltage;
unsigned char check = 0;
int i;
for(i=0;i<8;i )
{
check ^= Rxbuf[i];
}
if(Rxbuf[0]==0x55