在线等,如何进行串口数据解包?
我是在线程下处理的,比如在
iLen=sio_read(commport,bf,255); //读串口的数据
接下来该怎么处理包文呢,接收包文定为如下格式:
参数 类型 长度 说明
0x02 Char 1 (固定成0x02)
数据长度 Char 3 通讯序号的长度+实际报文的长度(如123)
通讯序号 Char 1 从’0’~’9’的一个循环,当值为’9’后,系统将自动恢复成’0’
报文数据 Char N 请求报文(加密的http报文)
MAC Char 1 对数据长度、通讯序号、报文数据的一个校验值(异或校验)
0x03 Char 1 固定值
我是把接收下来的bf转换为16进制再处理呢,还是该怎么解决
[解决办法]
直接根据报文格式解析就行,如
char buf[32];
int len;
strcpy(buf, bf+1, 3);
buf[3]= '\0 ';
len = atoi(buf);
就得到长度了
[解决办法]
问的似乎太乱了,捡重点的说撒.
解码的时候如果是ASC格式的,直接读就可以,注意控制字节读
BCD码需要转换一下:(转化十个字节的)
String str;
for(int i=0;i <10;i++)
str.cat_printf( "%02x ",buff[i]);(这也可以将要读的信息转化为16进制的)
不晓得什么是丢包