串口通信之协议格式

缓存收到的所有数据,找到一条完整数据,分析数据,界面通知。

 

信令格式:

同步头 + 数据正文 + 同步尾

同步头 + 命令字 + 数据长度 + 数据正文 + 同步尾

同步头 + 地址码 + 命令字 + 数据长度 + 数据正文 + 同步尾

 

同步头 + 数据正文 + 校验码

同步头 + 命令字 + 数据长度 + 数据正文 + 校验码

同步头 + 地址码 + 命令字 + 数据长度 + 数据正文 + 校验码

 

  文本格式可以直观的定义回车换行是协议的结尾,所以我们可以省略数据长度,增加协议尾。即:协议头 + 数据 + 校验 + 数据尾

  

  一般情况下,同步头2B,地址码1B,命令字1B,数据长度1B,数据正文nB,同步尾2B,校验码2B

 

  信令的格式为了3个目的:a>符合业务需求;b>方便识别一条完整的数据;c>进一步验证数据,如有需要进行数据还原。

         地址码、命令字为了目的a

         同步头、数据长度、同步尾、校验码为了目的b

         校验码为了目的c

 

建议:

1>    尽量采用数据内容不会出现的字符作为同步头尾。比如数据用BCD码,则同步头可以用A-E,如5E

2>    如果同步头尾字符可能会在数据正文出现,则可能要用转义符,当然同步头+数据长度+同步尾3个条件同时成立的正文数据出现概率应该非             常非常低;

3>    如果数据较短,请使用校验码进一步验证数据的正确性;

4>    如果正确性要求特别高,请采用校验码还原可能的错误数据,如果校验码不能完成数据还原,请重发信令请求以保证正确。

 

C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

http://blog.csdn.net/wuyazhe/article/details/5627253

C#串口操作系列(4) -- 协议篇,文本协议数据解析

http://blog.csdn.net/wuyazhe/article/details/5657188

posted on 2012-05-01 11:14  fyhui  阅读(11977)  评论(1编辑  收藏  举报