本发明涉及电子通信,具体涉及通信纠错方法、装置、计算机设备及存储介质。
背景技术:
1、在一些通信条件恶劣的场景中,作业机械与服务器端的通信有很大几率出现错误,现阶段作业机械没有对串行通信数据做出校验及纠错,导致整车串行通信异常、命令偶发性不执行、动作运行异常等情况频繁出现。
2、目前,相关技术在对串行通信数据进行纠错时,往往根据预先定义的开始字符、结束字符和数据长度判断发送的数据是否为有效数据,当数据为有效数据时,再进行数据交换。
3、然而,传统方法在作业机械通信过程中错误率也较高。因为,通信过程中数据会偶发性发生翻转,例如1变成0,数据长度不变,但数据内容已经发生变更,该数据包需丢弃;此外,串行通信存在黏包的情况,下一包的数据可能黏到上一包,若仍采用数据长度进行有效性校验,那么很有可能得到数据包错误的结果,导致一些数据包被错误丢弃。
技术实现思路
1、有鉴于此,本发明提供了一种通信纠错方法、装置、计算机设备及存储介质,以解决传统作业机械通信方法在通信过程中错误率较高的问题。
2、第一方面,本发明提供了一种通信纠错方法,应用于接收端,该方法包括:
3、接收发送端传输的当前报文;
4、提取当前报文中位于开始字符和结束字符之间的数据段和校验码,开始字符和结束字符是预先定义的;
5、基于数据段进行异或运算,得到异或结果;
6、若检测到异或结果与校验码不一致,则获取在接收当前报文之前接收的上一条报文,基于上一条报文和当前报文进行截取和拼接,得到新的报文,将新的报文作为当前报文并返回至提取当前报文中位于开始字符和结束字符之间的数据段和校验码的步骤;
7、若检测到异或结果与校验码一致,则对当前报文进行回复。
8、通过提取当前报文中的数据段和校验码,对数据段进行异或校验,判断当前数据包的正确有效性,若校验不通过则将上一条报文和当前报文进行组包得到新的报文,对新的报文进行异或校验,有效解决了数据偶发性反转和黏包的问题,降低了通信的错误率。
9、在一种可选的实施方式中,基于数据段进行异或运算,得到异或结果,包括:
10、将数据段进行切分,得到按序排列的多个字符长度相同的子数据段,子数据段的长度与校验码的字符长度相等;
11、按序计算多个子数据段之间的异或值,得到异或结果。
12、从而通过对数据段进行异或运算得到异或结果,以便于将异或结果与校验码进行比较,确定报文的正确有效性,有效解决数据的偶发性反转问题。
13、在一种可选的实施方式中,基于上一条报文和当前报文进行截取和拼接,得到新的报文,包括:
14、基于上一条报文中的终点以及距离终点最近的开始字符,截取得到第一字符段;
15、基于当前报文中的起点以及距离起点最近的结束字符,截取得到第二字符段;
16、将第一字符段和第二字符段进行拼接,得到新的报文。
17、从而在检测到异或结果与校验码不一致时,通过对当前报文和上一条报文进行组包,对通信数据进行重组,有效解决了黏包问题,降低通信错误率。
18、在一种可选的实施方式中,报文依次由开始字符、数据段、校验码和结束字符构成;提取当前报文中位于开始字符和结束字符之间的数据段和校验码,包括:
19、基于当前报文,获得预先定义的开始字符和结束字符;
20、将位于开始字符与结束字符之间的前n位的字符作为数据段;
21、将位于开始字符与结束字符之间的第n+1位至第n+m位的字符作为校验码,其中,m、n均为正整数,n为m的正整数倍。
22、从而通过报文结构来直接提取数据段和校验码,以便于后续对报文进行异或校验,同时简化了数据处理过程。
23、在一种可选的实施方式中,对当前报文进行回复,包括:
24、根据当前报文,生成用于回复的数据段;
25、将用于回复的数据段进行切分,得到按序排列的多个用于回复的子数据段,每个子数据段的字符长度均为m;
26、按序计算多个用于回复的子数据段之间的异或值,得到用于回复验证的校验码,校验码的字符长度为m;
27、将开始字符、用于回复的数据段、用于回复验证的校验码以及结束字符进行拼接,得到当前报文所对应的回复报文。
28、通过接收端在对当前报文回复的时候,也会根据定义的报文格式来生成回复报文,以使发送端能够对回复报文进行校验,确保数据规范性。
29、在一种可选的实施方式中,在接收发送端传输的当前报文之前,该方法还包括:
30、持续接收并保存发送端传输的报文数据,统计保存的报文条数;
31、当报文条数达到预设条数时,执行接收发送端传输的当前报文的步骤;
32、获取在接收当前报文之前接收的上一条报文,包括:
33、基于保存的发送端传输的报文数据,得到在接收当前报文之前接收的上一条报文。
34、从而通过在接收的报文条数达到预设条数时,再接收发送端传输的当前报文,避免进行无用的计算和处理。
35、在一种可选的实施方式中,在检测到异或结果与校验码不一致之后,该方法还包括:将记录的错误报文条数加一;
36、在对当前报文进行回复之前,该方法还包括:
37、判断错误报文条数是否超过预设错误报文条数;
38、若错误报文条数超过预设错误报文条数,停止对当前报文进行回复。
39、通过在检测到错误报文条数超过预设错误报文条数,停止对当前报文进行回复,既考虑到了作业场景的恶劣性,又保障了通信过程的安全性。
40、第二方面,本发明提供了一种通信纠错装置,应用于接收端,该装置包括:
41、接收模块,用于接收发送端传输的当前报文;
42、第一处理模块,用于提取当前报文中位于开始字符和结束字符之间的数据段和校验码,开始字符和所述结束字符是预先定义的;
43、第二处理模块,用于基于数据段进行异或运算,得到异或结果;
44、第三处理模块,用于若检测到异或结果与所述校验码不一致,则获取在接收当前报文之前接收的上一条报文,基于上一条报文和当前报文进行截取和拼接,得到新的报文,将新的报文作为当前报文并返回至提取当前报文中位于开始字符和结束字符之间的数据段和校验码的步骤;
45、第四处理模块,用于若检测到异或结果与校验码一致,则对当前报文进行回复。
46、第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的通信纠错方法。
47、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的通信纠错方法。
48、本发明的有益效果为:
49、通过提取当前报文中的数据段和校验码,对数据段进行异或校验,判断当前数据包的正确有效性,若校验不通过则将上一条报文和当前报文进行组包得到新的报文,对新的报文进行异或校验,有效解决了数据偶发性反转和黏包的问题,降低了通信的错误率。