本发明涉及一种用于车辆卫星定位系统的通讯数据包封装方法以及系统。
背景技术:
《道路运输车辆卫星定位系统北斗兼容车载终端通讯协议技术规范》中的消息结构由标识符、消息头、消息体、校验码合标识符组成。标识位采用0x7e表示,若校验码、消息头以及消息体中出现0x7e,则要进行转义处理,转义规则定义如下:
后紧跟一个0x02;
后紧跟一个0x01。
从理论上从0x7e开始到0x7e结束认为是一条消息,但是如果是收到的数据如下:
其中就很难判断消息A是对的,还是消息B是对的,有可能是前面一条消息结束标识位出错或数据丢失,也有可能后面一条消息的开始标识位数据出错或丢失。
假设结束标识符使用0x7c,则消息头以及消息体中出现0x7c,则要进行转义处理(如0x7e转义处理类似),理论上可以实现区分消息头与消息尾。但这样需要2次转义处理如0x7e,0x7c转义,会影响程序性能。
技术实现要素:
本发明要解决的技术问题,在于提供一种用于车辆卫星定位系统的通讯数据包封装方法以及系统,使用不同的开始标识符与结束标识符可以快速、直观分割每一条消息。
本发明之一是这样实现的:一种用于车辆卫星定位系统的通讯数据包封装方法,包括如下步骤:
将需要发送的数据添加的头部添加一首标识符;
在所述数据的尾部添加一尾标识符;
在该数据包中加入校验码,完成数据封装;所述首标识符与尾标识符不相同。
进一步地,所述首标识符以及尾标识符的长度为两个字节。
本发明之二是这样实现的:一种用于车辆卫星定位系统的通讯数据包封装系统,包括如下模块:
添加首标识符模块,将需要发送的数据添加的头部添加一首标识符;
添加尾标识符模块,在所述数据的尾部添加一尾标识符;
封装模块,在该数据包中加入校验码,完成数据封装;所述首标识符与尾标识符不相同。
进一步地,所述首标识符以及尾标识符的长度为两个字节。
本发明具有如下优点:本发明一种用于车辆卫星定位系统的通讯数据包封装方法以及系统,使用不同的开始标识符与结束标识符可以快速、直观分割每一条消息。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明一种用于车辆卫星定位系统的通讯数据包封装方法的执行流程图。
具体实施方式
如图1所示,本发明用于车辆卫星定位系统的通讯数据包封装方法,包括如下步骤:
将需要发送的数据添加的头部添加一首标识符;
在所述数据的尾部添加一尾标识符;
在该数据包中加入校验码,完成数据封装;所述首标识符与尾标识符不相同,所述首标识符以及尾标识符的长度为两个字节。
本发明用于车辆卫星定位系统的通讯数据包封装系统,包括如下模块:
添加首标识符模块,将需要发送的数据添加的头部添加一首标识符;
添加尾标识符模块,在所述数据的尾部添加一尾标识符;
封装模块,在该数据包中加入校验码,完成数据封装;所述首标识符与尾标识符不相同,所述首标识符以及尾标识符的长度为两个字节。
只要将原首尾标识符扩展到2字节(Byte)就可以实现,如0x7e 0xnn为消息的开始标识符,0x7e 0xmm为消息的结束标识符。nn、mm的取值范围:0x00~0xff(0x7e,0x7d除外)且nn≠mm。
假设nn为00,mm为ff,以下分析一下各种情况消息识别效果。
1、
分析:消息1没有结束标识符;消息2认为是一条完整的消息,传输是否有异常需要校验码来检查。
2、
分析:消息3没有结束标识符;消息4认为是一条完整的消息,传输是否有异常需要校验码来检查。
3、
分析:消息5没有开始标识符;消息6认为是一条完整的消息,传输是否有异常需要校验码来检查。
4、
分析:消息7中没有结束标识符,其中0x7e 0x01是非法数据,目前与0x7e接合使用只有0x7e 0x00或0x7e 0xff;消息8认为是一条完整的消息,传输是否有异常需要校验码来检查。
5、未收到0x7e字符
分析:消息9中没有结束标识符,认为未收齐消息内容,继续等待接收数据,待一下判断。
综上所述,使用不同的开始标识符与结束标识符可以快速、直观分割每一条消息。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。