一种串口GPS报文数据的接收及解析方法、系统技术方案

技术编号:31738668 阅读:20 留言:0更新日期:2022-01-05 16:16
本发明专利技术公开了一种串口GPS报文数据的接收及解析方法、系统,方法包括:判断串口回调函数是否接收到串口发出的串口数据到来信号;若串口回调函数接收到串口发出的串口数据到来信号,则读取串口数据并追加到本地字节数组,从本地字节数组中解析报文,更新本地字节数组。在接收串口数据时,采用追加本地字节数组的方式存储报文,不丢弃任何一个字符,保证串口报文的完全接收;对本地字节数组从起始地址开始按有效报文长度剔除拆分得到的含有报文尾的完整GPS报文,避免误丢包现象的发生,实时更新本地字节数组,防止了其溢出导致的程序崩溃;其四,对报文按协议格式长度,而非单字节的方式处理,提高了程序处理效率,适用长度不同的报文。报文。报文。

【技术实现步骤摘要】
一种串口GPS报文数据的接收及解析方法、系统


[0001]本专利技术涉及一种串口GPS报文数据的接收及解析方法、系统,属于农业机械辅助驾驶


技术介绍

[0002]字节数组是一种数据类型,可用于存取字符型数据。具有辅助驾驶功能的作业机械一般采用GPS定位,其GPS定位报文数据又采用串口传输方式,但在通讯量大时,经常会出现收不到完整的数据帧,或是在解析时出现丢失有效数据字节的情况。
[0003]专利CN111858447A公开了一种从串口接收数据、处理数据帧的方法,包括以下步骤S1:串口初始化,创建串口接收任务、串口读取任务;S2:从串口接收数据后,执行串口中断,串口中断处理时,接收端将串口接收的数据放在消息节点中,并将消息节点的数据发送到接收消息队列中;S3:执行串口接收任务,即不断从接收消息队列中获取消息节点的数据,然后从消息节点中获取到串口接收的数据,并将其添加到环形队列中;S4:执行串口读取任务,即从环形队列中读取串口接收到的数据;并对从环形队列中读取的数据进行组帧。
[0004]专利CN111858447A采用的方法,将收到的串口数据发送至消息队列,降低了中断处理耗时,同时也将串口接收数据与数据处理分开,不会造成串口溢出而丢失数据的情况。但是其一,接收串口数据采用消息队列和环形队列的方法导致程序处理上较为复杂。其二,在发送端频发发送数据,或数据量较多的情况下,接收端只是尽可能多的接收到有效数据,降低丢失数据的机率,并不保证数据的完全接收。
[0005]专利CN107395565B公开了一种定长单字节格式报文协议下串口接收预处理方法,该方法对单字节头、单字节校验、单字节尾的定长串口数据通信,设计了一种串口数据预处理架构,作用于底层串口数据接收之后,应用层根据协议处理之前,对于符合协议约束的数据,送入报文解析函数接口,对于不符合协议约束的数据,进行逐字节的剔除。若存在剩余不足一帧报文的数据,仍可将其与下一组数据,进行组包后,再次逐字节判别处理。
[0006]专利CN107395565B公开了一种定长单字节格式报文协议下串口接收预处理方法,该方法对单字节头、单字节校验、单字节尾的定长串口数据通信,其一,只适用固定长度的数据解析;其二,采用单字节判别处理方式,程序效率不是最优。

技术实现思路

[0007]本专利技术所要解决的技术问题是克服现有技术的缺陷,提供一种串口GPS报文数据的接收及解析方法,在接收串口数据时,采用追加本地字节数组的方式,保证串口报文的完全接收;对本地字节数组从起始地址开始按有效报文长度拆分、剔除得到的含有完整报文尾的GPS报文,避免误丢包现象的发生。
[0008]为达到上述目的,第一方面,本专利技术提供一种串口GPS报文数据的接收及解析方法,包括:判断串口回调函数是否接收到串口发出的串口数据到来信号;
若串口回调函数接收到串口发出的串口数据到来信号,则读取串口数据并追加到本地字节数组,从本地字节数组中解析报文,更新本地字节数组。
[0009]优先地,若串口回调函数没有接收到串口发出的串口数据到来信号,串口回调函数持续等待;若串口接收到数据,串口立即发送串口数据到来信号给串口回调函数,串口回调函数接收到串口发出的串口数据到来信号。
[0010]优先地,读取串口数据并追加到本地字节数组,包括:串口回调函数读取串口数据a,将串口数据a追加到本地字节数组b;串口数据a为单个字节、一整串报文或多条报文。
[0011]优先地,从本地字节数组中解析报文,更新本地字节数组,包括:S51:一次性读取全部本地字节数组b的数据;S52:判断本地字节数组b中是否包含报文尾部标识,若本地字节数组b中包含若干个报文尾部标识,则进入步骤S53;S53:以报文尾部标识为拆分符,将本地字节数组b拆分得到N个GPS报文cI;定义循环量i为常数,i≤N;S54:循环解析GPS报文cI,判断i是否小于N,若i小于N,则进入步骤S55;S55:从本地字节数组b中删除第i条GPS报文cI;S56:判断GPS报文cI是否包含报文头标志符, GPS报文cI包含报文头标志符,则进入步骤S57;S57:进行数据校验,若校验成功则进入步骤S58;S58:按协议分割符将GPS报文cI分割为字符串列表dM,dM包含第i个GPS报文cI的有效数据;S59:根据不同字符串列表dM的第0位第i个GPS报文cI的类型,得到不同长度类型的GPS数据。
[0012]优先地,S52中,判断本地字节数组b中是否包含报文尾部标识,若本地字节数组b中不包含报文尾部标识则返回“判断串口回调函数是否接收到串口发出的串口数据到来信号”步骤;S54中,循环解析GPS报文cI,判断i是否小于N,若i不小于N,则返回“判断串口回调函数是否接收到串口发出的串口数据到来信号”步骤;S56中,判断GPS报文cI是否包含报文头标志符,若GPS报文cI不包含报文头标志符,则i数值加1并返回到步骤S54;S57中,进行数据校验,若校验失败则i数值加1并返回步骤S54。
[0013]优先地,在判断串口回调函数是否接收到串口发出的串口数据到来信号之前,初始化串口,注册串口回调函数。
[0014]优先地,初始化串口,包括:自动查找可用串口名称,初始化串口名称、波特率、校验位和停止位,初始化本地字节数组。
[0015]优先地,注册串口回调函数,包括:定义串口回调函数,将串口数据到来信号与串口回调函数关联。
[0016]优先地,步骤S57中,进行数据校验,包括:
数据校验采用按位异与的方式,对GPS报文cI进行计算得出计算校验码,读取GPS报文cI中的校验部分得到报文校验码;判断计算校验码与报文校验码是否相等,若计算校验码与报文校验码相等,则校验成功,若计算校验码与报文校验码不相等则校验失败。
[0017]优先地,S55中,从起始地址开始按有效报文长度剔除拆分得到的含有完整报文尾的GPS报文,更新本地字节数组。
[0018]第二方面,本专利技术提供一种串口GPS报文数据的接收及解析系统,包括处理器和存储设备,所述存储设备中存储有多条指令,用于所述处理器加载并执行第一方面所述方法的步骤。
[0019]本专利技术所达到的有益效果:本专利技术提供一种串口GPS报文数据的接收及解析方法,其一,在接收串口数据时,采用追加本地字节数组的方式存储报文,不丢弃任何一个字符,保证串口报文的完全接收;其二,对本地字节数组从起始地址开始按有效报文长度剔除拆分得到的含有报文尾部标识的完整GPS报文,避免误丢包现象的发生,其三,实时更新本地字节数组,防止了其溢出导致的程序崩溃;其四,对报文按协议格式长度,而非单字节的方式处理,提高了程序处理效率,适用长度不同的报文。
[0020]本专利技术中本地字节数组的剔除更新,是按照剔除的报文头部标识至报文尾部标识之间的长度,而非固定的长度,所以适合不同长度报文更新。更新后的字节数组还保留有部分报文,待串口数据信号到来时,可继续追加,直到收到新的报文尾部标识,进行下次更新。本专利技术本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种串口GPS报文数据的接收及解析方法,其特征在于,包括:判断串口回调函数是否接收到串口发出的串口数据到来信号;若串口回调函数接收到串口发出的串口数据到来信号,则读取串口数据并追加到本地字节数组,从本地字节数组中解析报文,更新本地字节数组;其中,从本地字节数组中解析报文,更新本地字节数组,包括:S51:一次性读取全部本地字节数组b的数据;S52:判断本地字节数组b中是否包含报文尾部标识,若本地字节数组b中包含若干个报文尾部标识,则进入步骤S53;S53:以报文尾部标识为拆分符,将本地字节数组b拆分得到N个GPS报文cI;定义循环量i为常数,i≤N;S54:循环解析GPS报文cI,判断i是否小于N,若i小于N,则进入步骤S55;S55:从本地字节数组b中删除第i条GPS报文cI;S56:判断GPS报文cI是否包含报文头标志符, GPS报文cI包含报文头标志符,则进入步骤S57;S57:进行数据校验,若校验成功则进入步骤S58;S58:按协议分割符将GPS报文cI分割为字符串列表dM,dM包含第i个GPS报文cI的有效数据;S59:根据不同字符串列表dM的第0位第i个GPS报文cI的类型,得到不同长度类型的GPS数据。2.根据权利要求1所述的一种串口GPS报文数据的接收及解析方法,其特征在于,若串口回调函数没有接收到串口发出的串口数据到来信号,串口回调函数持续等待;若串口接收到数据,串口立即发送串口数据到来信号给串口回调函数,串口回调函数接收到串口发出的串口数据到来信号。3.根据权利要求1所述的一种串口GPS报文数据的接收及解析方法,其特征在于,读取串口数据并追加到本地字节数组,包括:串口回调函数读取串口数据a,将串口数据a追加到本地字节数组b;串口数据a为单个字节、一整串报文或多条报文。4.根据权利要求1所述的一种串口GPS报文数据的接收及解析方法,其特征在于,S52中,判断本地字节数组b中是否包含报文尾部标...

【专利技术属性】
技术研发人员:马厚雪陈明左帅李思辰
申请(专利权)人:徐州徐工农业装备科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1