原创 串行通信同步报文提取方法

2009-11-25 11:00 2566 7 7 分类: 通信

在传统的数据传输过程中,很多企业所用的串口都没有严格的上层应用协议,导致串口通信不是很稳定,很多有趣的现象会发生。当串口数据传输过程中发生局部丢数据现象时,会影响到整个通信过程,导致整个通信过程失败。其问题的根源在于没有在通信协议中加入同步操作,即很多上层协议没有对串行数据流进行报文的切分。


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


       为了解决上述问题,根据串行通信编码方法,提出了一种采用同步编码的算法,解决串行数据流在应用层的报文同步问题,实现应用层协议自动对报文进行切分。该算法的模型与串行通信的位流同步算法存在很多类似之处,算法描述如下:


点击看大图


2        0xAA0x55为报文同步码,当接收方接收到连续的0xAA0x55时,识别到新的数据报文即将到来,开始准备接收数据报文。


2        为了保证连续0xAA0x55同步码的唯一性,不允许同步码作为数据在数据字段中出现。为了达到上述目的,引入插入码0x00。当数据字段中存在连续0xAA0x55字段时,需要在两者中间插入0x00插入码;当数据字段中存在连续0xAA0x000x55字段时,同样需要在0xAA之后插入0x00插入码。0x00起到了分割符的作用,其作用类似于C语言中的“\”。


2        在数据发送方需要对数据进行编码处理;在数据接收方需要对同步码、插入码进行丢弃处理,得到纯粹的用户数据。


 


算法的实现可以采用硬件,也可以采用软件的方法,在此给出一个软件的实现方法,运行在uc/os的操作系统之上(https://static.assets-stash.eet-china.com/album/old-resources/2009/11/25/168a0c81-b84c-40b7-8020-84634ad84ff8.rar),程序还没有得以测试,仅供参考。

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条