首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

,怎么进行串口数据解包

2012-03-06 
在线等,如何进行串口数据解包?我是在线程下处理的,比如在iLensio_read(commport,bf,255)//读串口的数据

在线等,如何进行串口数据解包?
我是在线程下处理的,比如在

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进制的)
不晓得什么是丢包

热点排行