一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于串行通讯的私有协议容错处理方法、装置及存储介质与流程

2022-04-13 16:15:20 来源:中国专利 TAG:


1.本发明涉及无线通信技术领域,尤其涉及一种基于串行通讯的私有协议容错处理方法、装置及存储介质。


背景技术:

2.目前,多合一的电子控制单元ecu总成(如obc dcdc pdu)只有一个对外的低压通信接口,ecu内部不同控制器之间需要建立通讯,以便实现信息的传递和交互,最后通过ecu总成低压接口控制器统一汇总后传递到整车通讯总线。当ecu内部控制器之间的通讯采用串行通讯(如spi/sci)方式时,需要定制私有通讯协议。
3.数据传输的过程中,在数据发送之前,需在数据帧的头部增加一些额外的表征信息的数据,称之为“帧头”,以便接收方知晓一段数据帧的开始。通常数据帧包含:帧头、数据区和crc校验码。其中:“帧头”表示数据帧的起始位置,不同的帧头可以表示数据帧的不同长度和功能;“数据区”为该数据帧需要传递的有用数据;“crc校验码”为帧头和数据区数据的校验值,接收方在接收到完整数据帧后通过验证该校验码,可以判断该帧数据在传输过程中是否出现错误。
4.当“数据区”或者“crc校验码”中的数据与“帧头”的数值相同(即出现“伪帧头”)时,接收方就会存在帧头判断错误的可能性。如果接收方按照“伪帧头”开始接收后续数据,接收完成后对已接收的数据进行校验。若校验失败,则该帧数据不可信,应该丢弃不用(极大概率)。若校验成功,该帧数据代表的信息已经完全偏离原有通讯协议,数据解析结果为错误信息,而此时接收方依然默认数据可信,则会造成接收方接收到的数据与发送方发送的数据不一致,进而可能会导致通信失败。
5.为了彻底解决因数据帧中出现与帧头相同的数据(伪帧头),进而导致帧头识别错误的问题,


技术实现要素:

6.本发明实施例所要解决的技术问题在于,提供一种基于串行通讯的私有协议容错处理方法、装置及存储介质,当数据帧中出现与帧头相同的数据时,能够有效避免帧头识别错误,提高私有协议通讯的可靠性。
7.为了实现上述目的,本发明实施例提供了一种基于串行通讯的私有协议容错处理方法,包括:
8.数据发送方在原始数据帧的尾部增加帧头校验数据,得到第一数据帧;其中,所述第一数据帧包括帧头、数据区、crc校验码和帧头校验数据;
9.将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,并将所述第二数据帧发送至数据接收方;其中,所述伪帧头的数据与所述帧头的数据相同;
10.数据接收方判断接收到的数据帧的帧头校验数据是否符合预设条件;
11.若是,则将接收到的数据帧中的所述替换数据还原为所述伪帧头,以使所述数据接收方接收到的数据帧与所述数据发送方发送的数据帧相同。
12.作为上述方案的改进,所述将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,具体包括:
13.将所述数据区以及所述crc校验码中的数据与所述帧头的数据逐一进行比对;
14.确定所述数据区和所述crc校验码中与所述帧头的数据相同的数据,作为伪帧头;
15.将所述伪帧头的数据用替换数据进行替换,得到所述第二数据帧。
16.作为上述方案的改进,将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换后,所述第二数据帧的帧头校验数据中与所述替换数据对应的比特位置为1。
17.作为上述方案的改进,所述预设条件为:
18.帧头校验数据不为0,且所述帧头校验数据中的非0位对应在数据帧中的数据为所述替换数据。
19.作为上述方案的改进,所述将接收到的数据帧中的所述替换数据还原为所述伪帧头,具体包括:
20.查找接收到的数据帧的帧头校验数据中所有的非0位;
21.将所有非0位对应在数据帧中的所述替换数据还原为所述伪帧头。
22.作为上述方案的改进,所述将接收到的数据帧中的所述替换数据还原为所述伪帧头,之后还包括:
23.计算还原后的数据帧中除帧头校验数据外所有数据的crc校验码;
24.对所述crc校验码进行校验,若校验通过,则还原后的数据帧中的数据可信;若校验未通过,则还原后的数据帧中的数据不可信。
25.本发明实施例还提供了一种基于串行通讯的私有协议容错处理装置,包括:
26.处理模块,用于数据发送方在原始数据帧的尾部增加帧头校验数据,得到第一数据帧;其中,所述第一数据帧包括帧头、数据区、crc校验码和帧头校验数据;
27.替换模块,用于将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,并将所述第二数据帧发送至数据接收方;其中,所述伪帧头的数据与所述帧头的数据相同;
28.判断模块,用于数据接收方判断接收到的数据帧的帧头校验数据是否符合预设条件;
29.还原模块,用于若符合预设条件,则将接收到的数据帧中的所述替换数据还原为所述伪帧头,以使所述数据接收方接收到的数据帧与所述数据发送方发送的数据帧相同。
30.进一步的,所述替换模块中将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,具体包括:
31.将所述数据区以及所述crc校验码中的数据与所述帧头的数据逐一进行比对;
32.确定所述数据区和所述crc校验码中与所述帧头的数据相同的数据,作为伪帧头;
33.将所述伪帧头的数据用替换数据进行替换,得到所述第二数据帧。
34.本发明实施例还提供了一种基于串行通讯的私有协议容错处理装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的基于串行通讯的私有协议容错处理方
法。
35.本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任一项所述的基于串行通讯的私有协议容错处理方法。
36.相对于现有技术,本发明实施例提供的一种基于串行通讯的私有协议容错处理方法、装置及存储介质的有益效果在于:通过数据发送方在原始数据帧的尾部增加帧头校验数据,得到第一数据帧;其中,所述第一数据帧包括帧头、数据区、crc校验码和帧头校验数据;将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,并将所述第二数据帧发送至数据接收方;其中,所述伪帧头的数据与所述帧头的数据相同;数据接收方判断接收到的数据帧的帧头校验数据是否符合预设条件;若是,则将接收到的数据帧中的所述替换数据还原为所述伪帧头,以使所述数据接收方接收到的数据帧与所述数据发送方发送的数据帧相同。本发明实施例通过将数据帧中的伪帧头用替换数据进行替换,以确保数据帧中帧头的唯一性,同时,接收方在接收到发送方发送的数据帧后,通过帧头校验数据进行识别,将替换数据还原为真实数据,以确保接收方接收到的数据和发送方发送的数据相同,有效避免帧头识别错误,提高私有协议通讯的可靠性。
附图说明
37.图1是本发明提供的一种基于串行通讯的私有协议容错处理方法的一个优选实施例的流程示意图;
38.图2是本发明提供的一种基于串行通讯的私有协议容错处理方法的一个优选实施例中替换伪帧头的示意图;
39.图3是本发明提供的一种基于串行通讯的私有协议容错处理装置的一个优选实施例的结构示意图;
40.图4是本发明提供的一种基于串行通讯的私有协议容错处理装置的另一个优选实施例的结构示意图。
具体实施方式
41.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.请参阅图1,图1是本发明提供的一种基于串行通讯的私有协议容错处理方法的一个优选实施例的流程示意图。所述基于串行通讯的私有协议容错处理方法,包括:
43.s1,数据发送方在原始数据帧的尾部增加帧头校验数据,得到第一数据帧;其中,所述第一数据帧包括帧头、数据区、crc校验码和帧头校验数据;
44.s2,将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,并将所述第二数据帧发送至数据接收方;其中,所述伪帧头的数据与所述帧头的数据相同;
45.s3,数据接收方判断接收到的数据帧的帧头校验数据是否符合预设条件;
46.s4,若是,则将接收到的数据帧中的所述替换数据还原为所述伪帧头,以使所述数据接收方接收到的数据帧与所述数据发送方发送的数据帧相同。
47.具体的,本实施例为了解决因数据帧中出现与帧头相同的数据(即伪帧头),进而导致帧头识别错误的问题,数据发送方在发送数据之前,在原始数据帧的尾部,增加帧头校验数据,得到第一数据帧,该第一数据帧包括帧头、数据区、crc校验码和帧头校验数据。然后,请参阅图2,图2是本发明提供的一种基于串行通讯的私有协议容错处理方法的一个优选实施例中替换伪帧头的示意图。将第一数据帧的数据区和crc校验码中与帧头的数据相同的伪帧头用替换数据进行替换,得到第二数据帧,并将该第二数据帧发送至数据接收方,以确保数据发送方发送的数据帧中仅有唯一的帧头。该第二数据帧同样包括帧头、数据区、crc校验码和帧头校验数据,但需要注意的是,对伪帧头进行替换后得到的第二数据帧中的数据区、crc校验码和帧头校验数据与第一数据帧不完全相同。
48.例如,串行通讯的数据帧以双字节(双字节=1个字=16二进制位)为一个数据传输单位,替换前后的数据帧如下表1所示;
49.表1替换前后的数据帧
[0050][0051]
原始数据帧1的帧头为0xfa59(1111 1010 0101 1001),数据区中word1和word5为“伪帧头”,将word1和word5用“替换数据”0x9669(1001 0110 0110 1001)进行替换。数据发送方在发送第二数据帧时的“帧头校验数据”为0x4400(0100 0100 0000 0000)(数据左对齐,低位不足的补0)。
[0052]
数据接收方判断接收到的数据帧的帧头校验数据是否符合预设条件。若是,则将接收到的数据帧中的替换数据还原为伪帧头,以使数据接收方接收到的数据帧与数据发送方发送的数据帧相同。
[0053]
需要说明的是,本实施例的应用范围可不局限于ecu内部不同控制器之间的通讯,任何基于串行通讯的私有协议均可适用。例如,单一控制器内部定义的主控制器读写data-flash或者eeprom时定义的私有协议。
[0054]
本实施例通过将数据帧中的伪帧头用替换数据进行替换,以确保数据帧中帧头的唯一性,同时,接收方在接收到发送方发送的数据帧后,通过帧头校验数据进行识别,将替换数据还原为真实数据,以确保接收方接收到的数据和发送方发送的数据相同,有效避免帧头识别错误,提高私有协议通讯的可靠性。
[0055]
在另一个优选实施例中,所述将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,具体包括:
[0056]
将所述数据区以及所述crc校验码中的数据与所述帧头的数据逐一进行比对;
[0057]
确定所述数据区和所述crc校验码中与所述帧头的数据相同的数据,作为伪帧头;
[0058]
将所述伪帧头的数据用替换数据进行替换,得到所述第二数据帧。
[0059]
具体的,在将第一数据帧的数据区和crc校验码中的伪帧头用替换数据进行替换时,首先将数据区以及crc校验码中的数据与帧头的数据逐一进行比对,寻找数据区和crc校验码中与帧头相同的数据。将找到的数据区和crc校验码中与帧头的数据相同的数据,作为伪帧头。然后将伪帧头的数据用替换数据进行替换,得到第二数据帧。
[0060]
在又一个优选实施例中,将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换后,所述第二数据帧的帧头校验数据中与所述替换数据对应的比特位置为1。
[0061]
具体的,如上表1所示,将伪帧头用替换数据进行替换后,第二数据帧的帧头校验数据中与替换数据对应的比特位由0置为1,帧头校验数据由原来的0x0000变为0x4400(0100 0100 0000 0000)。
[0062]
需要说明的是,“帧头”的数值,最高位(msb)必须为“1”(最好是通讯中不易出现的数值),如0xfa59(1111 1010 0101 1001)。“帧头校验数据”的最高bit位(msb)对应数据帧中的帧头,永远不会为“1”,因此,在替换后的数据帧中,“帧头”的数值与“帧头校验数据”的数值永远不会相同,从而确保数据帧中帧头是唯一存在的。
[0063]
在又一个优选实施例中,所述预设条件为:
[0064]
帧头校验数据不为0,且所述帧头校验数据中的非0位对应在数据帧中的数据为所述替换数据。
[0065]
具体的,如下表2所示,将伪帧头用替换数据进行替换后,第二数据帧的帧头校验数据中与替换数据对应的比特位由0置为1,帧头校验数据由原来的0x0000变为0x2c80(0010 1100 1000 0000)。
[0066]
表2替换前后的数据帧
[0067][0068]
原始数据帧2的帧头为0xafc3(1010 1111 1100 0011),数据区中word2/4/5/8为“伪帧头”,将word2/4/5/8用“替换数据”0xa55a(1010 0101 0101 1010)进行替换。数据发送方在发送第二数据帧时的“帧头校验数据”为0x2c80(0010 11001000 0000)(数据左对齐,低位不足的补0)。数据接收方接收到数据帧后,判断帧头校验数据是否为0。只有当帧头校验数据不为0,且帧头校验数据中的非0位对应在数据帧中的数据为替换数据时,才判定接收到的数据帧符合预设条件。
[0069]
需要说明的是,本实施例中的替换数据理论上可以任意选择,在数据接收方进行数据还原时,需同时判断帧头校验数据是否为0,且帧头校验数据的非0位对应在数据帧中的数据为替换数据,确保真实数据与替换数据相同。
[0070]
在又一个优选实施例中,所述将接收到的数据帧中的所述替换数据还原为所述伪帧头,具体包括:
[0071]
查找接收到的数据帧的帧头校验数据中所有的非0位;
[0072]
将所有非0位对应在数据帧中的所述替换数据还原为所述伪帧头。
[0073]
具体的,在数据接收方判定接收到的数据帧的帧头校验数据符合预设条件后,查找接收到的数据帧的帧头校验数据中所有的非0位,将所有非0位对应于数据帧中相应位置的替换数据还原为伪帧头的数据,以确保接收方接收到的数据和发送方发送的数据相同,有效避免帧头识别错误,提高私有协议通讯的可靠性。
[0074]
例如,数据接收方在接收到数据帧后,首先判断“帧头校验数据”0x4400不为0,将0x4400换算成二进制为0100 0100,且对应为1的bit位(bit6,bit2)对应在数据帧中的位置(bit6—word1,bit2—word5)数据为“替换数据”0x9669,将替换数据0x9669还原回伪帧头0xfa59。
[0075]
作为优选方案,所述将接收到的数据帧中的所述替换数据还原为所述伪帧头,之后还包括:
[0076]
计算还原后的数据帧中除帧头校验数据外所有数据的crc校验码;
[0077]
对所述crc校验码进行校验,若校验通过,则还原后的数据帧中的数据可信;若校验未通过,则还原后的数据帧中的数据不可信。
[0078]
具体的,在将接收到的数据帧中的替换数据还原为伪帧头后,计算还原后的数据帧中除帧头校验数据外所有数据的crc校验码,并对crc校验码进行校验。若校验通过,则还原后的数据帧中的数据可信,可以使用;若校验未通过,则还原后的数据帧中的数据不可信,应丢弃不用。
[0079]
相应地,本发明还提供一种基于串行通讯的私有协议容错处理装置,能够实现上述实施例中的基于串行通讯的私有协议容错处理方法的所有流程。
[0080]
请参阅图3,图3是本发明提供的一种基于串行通讯的私有协议容错处理装置的一个优选实施例的结构示意图。所述基于串行通讯的私有协议容错处理装置,包括:
[0081]
处理模块301,用于数据发送方在原始数据帧的尾部增加帧头校验数据,得到第一数据帧;其中,所述第一数据帧包括帧头、数据区、crc校验码和帧头校验数据;
[0082]
替换模块302,用于将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,并将所述第二数据帧发送至数据接收方;其中,所述伪帧头的数据与所述帧头的数据相同;
[0083]
判断模块303,用于数据接收方判断接收到的数据帧的帧头校验数据是否符合预设条件;
[0084]
还原模块304,用于若符合预设条件,则将接收到的数据帧中的所述替换数据还原为所述伪帧头,以使所述数据接收方接收到的数据帧与所述数据发送方发送的数据帧相同。
[0085]
优选地,所述替换模块302中将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,具体包括:
[0086]
将所述数据区以及所述crc校验码中的数据与所述帧头的数据逐一进行比对;
[0087]
确定所述数据区和所述crc校验码中与所述帧头的数据相同的数据,作为伪帧头;
[0088]
将所述伪帧头的数据用替换数据进行替换,得到所述第二数据帧。
[0089]
优选地,将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换后,所述第二数据帧的帧头校验数据中与所述替换数据对应的比特位置为1。
[0090]
优选地,所述预设条件为:
[0091]
帧头校验数据不为0,且所述帧头校验数据中的非0位对应在数据帧中的数据为所述替换数据。
[0092]
优选地,所述还原模块304中将接收到的数据帧中的所述替换数据还原为所述伪帧头,具体包括:
[0093]
查找接收到的数据帧的帧头校验数据中所有的非0位;
[0094]
将所有非0位对应在数据帧中的所述替换数据还原为所述伪帧头。
[0095]
优选地,所述还原模块304将接收到的数据帧中的所述替换数据还原为所述伪帧头,之后还用于:
[0096]
计算还原后的数据帧中除帧头校验数据外所有数据的crc校验码;
[0097]
对所述crc校验码进行校验,若校验通过,则还原后的数据帧中的数据可信;若校验未通过,则还原后的数据帧中的数据不可信。
[0098]
在具体实施当中,本发明实施例提供的基于串行通讯的私有协议容错处理装置的工作原理、控制流程及实现的技术效果,与上述实施例中的基于串行通讯的私有协议容错处理方法对应相同,在此不再赘述。
[0099]
请参阅图4,图4是本发明提供的一种基于串行通讯的私有协议容错处理装置的另一个优选实施例的结构示意图。所述基于串行通讯的私有协议容错处理装置包括处理器401、存储器402以及存储在所述存储器402中且被配置为由所述处理器401执行的计算机程序,所述处理器401执行所述计算机程序时实现上述任一实施例所述的基于串行通讯的私有协议容错处理方法。
[0100]
优选地,所述计算机程序可以被分割成一个或多个模块/单元(如计算机程序1、计算机程序2、
……
),所述一个或者多个模块/单元被存储在所述存储器402中,并由所述处理器401执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述基于串行通讯的私有协议容错处理装置中的执行过程。
[0101]
所述处理器401可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器,或者所述处理器401也可以是任何常规的处理器,所述处理器401是所述基于串行通讯的私有协议容错处理装置的控制中心,利用各种接口和线路连接所述基于串行通讯的私有协议容错处理装置的各个部分。
[0102]
所述存储器402主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序等,数据存储区可存储相关数据等。此外,所述存储器402可以是高速随机存取存储器,还可以是非易失性存储器,例如插接式硬盘,智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡和闪存卡(flash card)等,或所述存储器402也可以是其他易失性固态存储器件。
[0103]
需要说明的是,上述基于串行通讯的私有协议容错处理装置可包括,但不仅限于,处理器、存储器,本领域技术人员可以理解,图4的结构示意图仅仅是上述基于串行通讯的
私有协议容错处理装置的示例,并不构成对上述基于串行通讯的私有协议容错处理装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
[0104]
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任一实施例所述的基于串行通讯的私有协议容错处理方法。
[0105]
本发明实施例提供了一种基于串行通讯的私有协议容错处理方法、装置及存储介质,通过数据发送方在原始数据帧的尾部增加帧头校验数据,得到第一数据帧;其中,所述第一数据帧包括帧头、数据区、crc校验码和帧头校验数据;将所述数据区和所述crc校验码中的伪帧头用替换数据进行替换,得到第二数据帧,并将所述第二数据帧发送至数据接收方;其中,所述伪帧头的数据与所述帧头的数据相同;数据接收方判断接收到的数据帧的帧头校验数据是否符合预设条件;若是,则将接收到的数据帧中的所述替换数据还原为所述伪帧头,以使所述数据接收方接收到的数据帧与所述数据发送方发送的数据帧相同。本发明实施例通过将数据帧中的伪帧头用替换数据进行替换,以确保数据帧中帧头的唯一性,同时,接收方在接收到发送方发送的数据帧后,通过帧头校验数据进行识别,将替换数据还原为真实数据,以确保接收方接收到的数据和发送方发送的数据相同,有效避免帧头识别错误,提高私有协议通讯的可靠性。
[0106]
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0107]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献