CN114338271A - 数据处理方法、装置、终端及计算机可读存储介质 - Google Patents
数据处理方法、装置、终端及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114338271A CN114338271A CN202111634729.0A CN202111634729A CN114338271A CN 114338271 A CN114338271 A CN 114338271A CN 202111634729 A CN202111634729 A CN 202111634729A CN 114338271 A CN114338271 A CN 114338271A
- Authority
- CN
- China
- Prior art keywords
- linked list
- message
- message identifier
- identifier
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本申请适用于数据处理技术领域,提供一种数据处理方法、装置、终端及计算机可读存储介质,该方法包括:接收与终端连接的CAN总线上的第一CAN报文,第一CAN报文中携带有第一报文标识符;从报文标识符链表中,查找第一报文标识符,报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;在从报文标识符链表中查找到第一报文标识符时,确定第一报文标识符在报文标识符链表中所在的节点;将确定的第一报文标识符所在的节点插入到报文标识符链表的首部,得到更新后的报文标识符链表;根据在报文标识符链表中的查找结果对第一CAN报文进行响应。通过本申请可以解决因终端处数据处理时间较长,从而容易导致车辆远程诊断失败的问题。
Description
技术领域
本申请属于数据处理技术领域,具体涉及一种数据处理方法、装置、终端及计算机可读存储介质。
背景技术
在车辆远程诊断中,诊断设备发送诊断请求至与车辆连接的诊断接头(即一种终端),诊断接头接收到诊断请求后,对车辆中的目标ECU下发诊断指令,以指示目标 ECU执行相应的目标诊断操作,目标ECU根据诊断指令完成目标诊断操作后,将诊断结果以报文的形式通过CAN总线广播发送给诊断接头。
目前,车辆的CAN总线上连接有多个ECU,该多个ECU通过CAN总线广播的报文均能被诊断接头接收到。
所以,诊断接头在每接收到CAN总线上发送的报文后,均需要判断该报文是否需要本地处理,在现有技术中,由于CAN总线上的报文数量和类型很多,因此判断一个报文是否需要进行本地处理需要花费较长时间,如此一来,不仅增加了诊断接头处(终端)的数据处理时间,也加大了远程诊断超时失败的概率。
发明内容
有鉴于此,本申请提供了一种数据处理方法、装置、终端及计算机可读存储介质,可以解决因终端处数据处理时间较长,从而容易导致车辆远程诊断失败的问题。
本申请实施例的第一方面提供了一种数据处理方法,所述方法应用于终端,所述方法包括:
接收与所述终端连接的CAN总线上的第一CAN报文,所述第一CAN报文中携带有第一报文标识符;
从报文标识符链表中,查找所述第一报文标识符,所述报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;
在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点;
将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表;
根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应。
在第一方面的另一种实现方式中,所述根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应,包括:
在从所述报文标识符链表中查找到所述第一报文标识符时,获取所述第一报文标识符所在的节点的标识位的具体值;
在所述第一报文标识符所在的节点的标识位为第一值时,对所述第一CAN报文进行本地处理。
在第一方面的另一种实现方式中,在所述获取所述第一报文标识符所在的节点的标识位的具体值之后,还包括:
在所述第一报文标识符所在的节点的标识位为第二值时,不对所述第一CAN报文进行本地处理。
在第一方面的另一种实现方式中,所述根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应,包括:
在从所述报文标识符链表中未查找到所述第一报文标识符时,为所述第一报文标识符创建一个新节点,并将创建的所述新节点的标识位设定为第二值,并将所述创建的新节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表,且不对所述第一CAN报文进行本地处理。
在第一方面的另一种实现方式中,所述从报文标识符链表中,查找所述第一报文标识符,包括:
判断所述报文标识符链表是否为空;
若是,则确定所述报文标识符链表中未查找到所述第一报文标识符;
若不是,则遍历所述报文标识符链表,判断所述报文标识符链表是否存在所述第一报文标识符。
在第一方面的另一种实现方式中,在所述从报文标识符链表中,查找所述第一报文标识符之前,还包括:
判断所述报文标识符链表中的节点数量是否达到预设阈值;
若是,则执行所述从报文标识符链表中,查找所述第一报文标识符以及之后的步骤;
若不是,则不执行所述在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点,以及所述将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表的步骤。
在第一方面的另一种实现方式中,在所述从报文标识符链表中,查找所述第一报文标识符之前,还包括:
判断所述报文标识符链表中的节点数量是否达到预设阈值;
若是,则执行所述从报文标识符链表中,查找所述第一报文标识符以及之后的步骤;
若不是,则不执行所述在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点,以及所述将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表的步骤。
在第一方面的另一种实现方式中,在所述根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应之后,所述方法还包括:
接收CAN总线上的第二CAN报文,所述第二CAN报文中携带有第二报文标识符;
根据所述第二报文标识符,从所述更新后的报文标识符链表中查找所述第二报文标识符。
本申请实施例的第二方面提供了一种数据处理装置,包括:
接收模块,用于所述接收模块所在的终端接收与所述终端连接的CAN总线上的第一CAN报文,所述第一CAN报文中携带有第一报文标识符;
查找模块,用于从报文标识符链表中,查找所述第一报文标识符,所述报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;
确定模块,用于在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点;
插入模块,用于将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表;
响应模块,用于根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应。
本申请实施例的第三方面提供了一种终端,包括:处理器,所述处理器用于运行存储器中存储的计算机程序,以实现如上第一方面所述的数据处理方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储计算机程序,所述计算机程序在处理器上运行时实现本申请第一方面任一项的所述的数据处理方法。
本申请实施例提出的一种数据处理方法,应用于终端,首先,由终端接收与终端连接的CAN总线上的第一CAN报文,第一CAN报文中携带有第一报文标识符;其次,终端从报文标识符链表中,查找第一报文标识符,报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;再次,终端在从报文标识符链表中查找到第一报文标识符时,确定第一报文标识符在报文标识符链表中所在的节点;然后,终端将确定的第一报文标识符所在的节点插入到报文标识符链表的首部,得到更新后的报文标识符链表;最后,终端根据在报文标识符链表中的查找结果对第一CAN报文进行响应。现有技术中,终端(即诊断接头)在每接收到CAN总线上发送的报文后,均需要判断该报文是否需要本地处理,由于CAN总线上的报文数量和类型很多,因此判断一个报文是否需要进行本地处理需要花费较长时间,如此一来,不仅增加了终端(即诊断接头)处数据处理时间,也容易因超时而导致对车辆的远程诊断失败。而本申请提出的数据处理方法中,因为将查找到的第一报文标识符在报文标识符链表中所在的节点插入到报文标识符链表的首部,从而保证终端在每次执行查找过程时,比较的次数尽可能的少,从而达到提高效率,减少处理时间,进而降低远程诊断超时失败的概率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图,而并不超出本申请要求保护的范围。
图1示出本申请实施例提供的一种车辆远程诊断的连接示意图;
图2示出本申请实施例提供的一种数据处理方法的流程示意图;
图3示出本申请实施例提供的一种报文标识符链表的示意图;
图4示出本申请另一实施例提供的一种报文标识链表的示意图;
图5示出本申请另一实施例提供的一种数据处理方法的流程示意图;
图6示出本申请另一实施例提供的一种数据处理方法的流程示意图;
图7示出本申请另一实施例提供的一种数据处理方法的流程示意图;
图8示出本申请另一实施例提供的一种数据处理方法的流程示意图;
图9示出本申请实施例提供的一种数据处理装置的组成结构示意图;
图10示出本申请实施例提供的一种终端的组成结构示意图。
具体实施方式
参见图1,是本申请实施例提供的一种车辆远程诊断的连接示意图。其中,诊断设备通过CAN总线与诊断接头A连接,以通过诊断接口向诊断接头A发送诊断请求;同时,诊断接头A通过socket与云平台建立通信连接,以将接收的诊断请求通过云平台发送至同样与云平台建立通信连接的诊断接头B。
诊断接头B接收到诊断请求后,根据诊断请求中携带的诊断内容,向车辆中的目标ECU下发诊断指令,其中,诊断接头B通过CAN总线与车辆进行连接,通过OBD诊断接口向车辆中的ECU下发诊断指令。
车辆中的目标ECU根据诊断接头B下发的诊断指令,完成目标诊断操作后,将诊断数据通过CAN总线广播发送至诊断接头B。诊断接头B接收到目标ECU发送的诊断数据后,将诊断数据通过云平台透传至诊断接头A,再由诊断接头A将目标ECU的诊断数据传送至诊断设备,从而实现对车辆的远程诊断。
在实际应用中,在需要对车辆进行远程诊断时,诊断接头A和诊断接头B首先需要从云平台中读取预先配置的报文标识符数组,其中,报文标识符数组中包括了几十个、上百个、甚至几百个报文标识符(即CAN ID),其中,为每个报文标识符都设置有标识位,以设定诊断接头A接收到诊断设备发送的哪些数据时,需要进行本地处理,接收到哪些数据时,不需要进行本地处理(比如,直接丢弃或透传);以及,诊断接头B接收到车辆ECU发送的哪些数据时需要进行本地处理,接收到哪些数据时,不需要进行本地处理。
目前,诊断接头A每接收到诊断设备发送的CAN报文(可能是诊断请求)时,或者诊断接头B每接收到车辆ECU发送的CAN报文(可能是目标ECU发送的诊断数据) 时,均需要从报文标识符数组中查找与接收的CAN报文的报文标识符相同的报文标识符,在报文标识符数组中报文标识符数量比较多、且要查找的报文标识符在报文标识符数组中所处的位置比较靠后的情况下,或者,当报文标识符数组中不存在与接收的CAN 报文的报文标识符相同的报文标识符时,均需要诊断接头查找完整个报文标识符数组后才能判定接收的CAN报文是否是需要进行本地处理的CAN报文,这个过程必然消耗大量的时间。
然而,汽车诊断对时延要求非常高,通过不能超过55毫秒,如此一来,若诊断接头在每接收到一个CAN报文后,均需要花费大量的时间执行查找工作,以判断接收的报文是否是需要进行本地处理的报文时,不仅影响接收后面的CAN报文,也容易因超时,而导致远程诊断失败。
需要说明的是,在实际诊断中,通常某一个品牌,或者某一个车型会共用一个预先配置的报文标识符数组,尽管报文标识符数组中会包括几十个、上百个、甚至几百个报文标识符,但是对某一款车型或者某种品牌的车辆进行业务诊断时,通常只会用到报文标识符数组中的一个或者几个报文标识符。所以,诊断接头如果每次都从报文标识符数组中重新查找之前已经出现过的报文标识符的话,非常耗费时间,从而也大大增加了远程诊断超时失败的概率。
对此,本申请提出的数据处理方法中,以链表的形式保存报文标识符,在诊断接头查询过程中采用动态调整报文标识符的存储顺序的方法,确保最近查找的报文标识符总是放在链表的最前面,从而保证每次查找过程中,比较的次数尽可能的少,从而达到提高效率,减少处理时间,进而降低远程诊断超时失败的概率。
请参见图2,图2是本申请实施例提供的一种数据处理方法的流程示意图。
S11,接收与终端连接的CAN总线上的第一CAN报文,第一CAN报文中携带有第一报文标识符。
本申请实施例中,终端可以是图1中的诊断接头A或者诊断接头B。
当终端为诊断接头A时,第一CAN报文即为车辆中的某个ECU通过CAN总线广播发送的报文。
需要说明的是,车辆CAN总线上连接有多个ECU(比如,图1中的ECUA、ECUB、 ECUC、ECUD、ECUE),该多个ECU在车辆CAN总线上广播发送的CAN报文均能被其它ECU以及与车辆通过OBD诊断接口连接的诊断接头B接收到。
本申请实施例中,当终端为图1中的诊断接头A时,第一CAN报文可以是车辆总线上的任一ECU广播发送的报文,其中,第一CAN报文中携带有报文标识符,即CAN ID。
为了便于描述,此处将终端接收的第一CAN报文的报文标识符定义为第一报文标识符。
S12,从报文标识符链表中,查找第一报文标识符,报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理。
本申请实施例中,报文标识符链表是预先配置好且保存在云平台中的配置文件,其中,报文标识符链表中包括有依次连接的多个报文标识符(即CAN ID)。
作为示例,参见图3中的报文标识符链表,通过图3中的链表可以看出,该链表中除了头指针(链表中必须包含头指针),还包括了4个节点,其中,每个节点中包含了预先配置的CAN ID:0x440、CAN ID:0x780、CAN ID:0x7e0和CAN ID:0x230,以及CAN ID:0x440所在节点的指针,CAN ID:0x780所在节点的指针,CAN ID:0x7e0 所在节点的指针和CAN ID:0x230所在节点的指针。
其中,CAN ID:0x440所在节点的指针指向CAN ID:0x780所在的节点,CAN ID:0X780所在节点的指针指向CAN ID:0x7e0所在的节点,CAN ID:0x7e0所在节点的指针指向CAN ID:0x440所在的节点,从而形成了各个节点依次连接的报文标识符链表。
除此之外,链表中的每个报文标识符都对应设置有标识位,其中,标识位的具体值为1时,表示与报文标识符对应的CAN报文是终端需要进行本地处理的报文;标识位的具体值为0时,表示与报文标识符对应的CAN报文不是终端需要进行本地处理的报文。当然,上述描述只是一个示例,在实际应用中,标识位的具体值还可以以true或false 等其它值来定义,本申请对此不作限定。
作为示例,假设第一CAN报文的第一报文标识符为0x780(即CAN ID为0x780) 时,终端就会从图3的报文标识符链表中查找是否存在第一报文标识符0x780。
说明说明的是,上述描述仅仅是一个示例,并不构成对本申请的唯一限定,在实际应用中,报文标识符链表中除了头指针,可能包含的不仅仅是4个节点。
S13,在从报文标识符链表中查找到第一报文标识符时,确定第一报文标识符在报文标识符链表中所在的节点。
作为示例,参见图3,因为图3的报文标识符链表中存在CAN ID为0x780的第一报文标识符,所以终端就可以从报文标识符链表中查找到CAN ID为0x780的第一报文标识符,在查找到CAN ID为0x780的第一报文标识符后,终端即可确定第一报文标识符0x780在报文标识符链表中所在的节点为节点2。
S14,将确定的第一报文标识符所在的节点插入到报文标识符链表的首部,得到更新后的报文标识符链表。
本申请实施例中,在执行将第一报文标识符在报文标识符链表中所在的节点插入到报文标识符链表的首部的过程中,首先将第一报文标识符在报文标识符链表中所在的节点进行移除,然后,将报文标识符链表中第一报文标识符节点的前一个节点的指针指向第一报文标识符节点的后一个节点,得到第一次更新后的报文标识符链表。
其次,将从报文标识符链表中移除的第一报文标识符节点的指针指向第一次更新后的报文标识符链表的首节点,将第一次更新后的报文标识符链表中首节点前的节点的指针指向插入第一报文标识符节点的位置,得到更新后的报文标识符链表,更新后的报文标识符链表的首节点为第一报文标识符所在的节点。
作为示例,通过S13确定第一报文标识符0x780在报文标识符链表中所在的节点为节点2后,终端即可将第一报文标识符所在的节点2插入到报文标识符链表的首部,得到更新后的报文标识符链表。
作为示例,参见图4,图4是将第一报文标识符0x780在报文标识符链表中所在的节点2插入报文标识符链表的首部,得到更新后的报文标识符链表的完整过程的示意图。
在将第一报文标识符0x780所在的节点2插入报文标识符链表的首部,得到更新后的报文标识符链表后,若下次再遇到第一报文标识符0x780时,终端只需执行一次查找操作即可查找到该第一报文标识符0x780,从而减少了比较的次数,减少了数据处理时间,进而也降低了远程诊断超时失败的概率。
S15,根据在报文标识符链表中的查找结果对第一CAN报文进行响应。
本申请实施例中,若终端从报文标识符链表中查找到第一报文标识符后,终端即可根据第一报文标识符在报文标识符链表中所在节点的标识位,确定是否需要对第一CAN报文进行本地处理。
若终端未从报文标识符链表中查找到第一报文标识符,则终端可直接确定不需要对该第一CAN报文进行本地处理。
本申请实施例中的终端可以为图1中的诊断接头A或者诊断接头B。
作为示例,诊断接头A接收到诊断设备通过CAN总线发送的第一CAN报文后,诊断接头A根据第一CAN报文的第一报文标识符确定第一CAN报文是需要进行本地处理的CAN报文时,诊断接头A即可将接收到的来自诊断设备的第一CAN报文,通过云平台发送至诊断接头B。
诊断接头B接收到第一CAN报文后,根据第一CAN报文的请求,向车辆CAN总线上的目标ECU(比如,空调ECU、发送机ECU、变速箱ECU)发送诊断指令,在发送诊断指令后,诊断接头B接收车辆CAN总线上广播发送的CAN报文,并根据接收的CAN报文的报文标识符判断是否是目标ECU根据诊断指令完成诊断操作后,发送的诊断数据,在接收到目标ECU发送的诊断数据后,诊断接头B接着判断接收的诊断数据的第一个字节的高四位,若高四位为0时,说明是单帧诊断数据,即诊断接头B可直接将该单帧诊断数据通过云平台发送至诊断接头A,再由诊断接头A将单帧诊断数据传送至诊断设备,以完成此次对车辆的远程诊断。
若诊断接头B判断接收的诊断数据的高四位为1时,说明接收的诊断数据是首帧(即诊断数据长度超过了预设长度时,目标ECU先发送一个预设长度的首帧),诊断接头B 接收到首帧后,会向目标ECU发送一个流控帧(告知目标ECU是否可以接着发送,诊断接头B一次最多能接收的数据量,以及目标ECU接下来发送的连续帧之间的时间间隔要求),目标ECU接收到诊断接头B发送的流控帧后,则以诊断接头B要求的数据接收长度和发送时间间隔向诊断接头B发送连续帧,直至目标ECU向诊断接头发送完所有诊断数据为止。诊断接头将接收的首帧、连续帧,组合为完整的诊断数据后,发送至诊断接头A,再由诊断接头A将诊断数据发送至诊断设备,从而完成对车辆的远程诊断操作。
在另一示例中,诊断接头A接收到诊断设备CAN总线上发送的第一CAN报文后,诊断接头A根据第一CAN报文的第一报文标识符确定第一CAN报文是诊断接头A需要进行本地处理的诊断请求时,为了防止超时,诊断接头A可以将诊断请求通过云平台发送至诊断接头B的同时,向诊断设备发送一个设备忙的应答指令,如此一来,诊断设备可以等待,直至诊断接头A接收到诊断接头B发送的诊断数据后,再将诊断数据发送至诊断设备,从而可以有效降低远程诊断超时失败的概率。
参见图5,在本申请另一实施例中,根据在报文标识符链表中的查找结果对第一CAN报文进行响应,包括:
S1501,在从报文标识符链表中查找到第一报文标识符时,获取第一报文标识符所在的节点的标识位的具体值。
参见S12中的相关描述,报文标识符链表中为每个报文标识符所在的节点均设置有标识位,每个标识位都对应有自己的具体值。
需要说明的是,本申请实施例中,标识位对应两个可设定的具体值,分别为第一值和第二值,其中第一值和第二值是成对存在的,作为示例,第一值为1时,第二值即为 0;或第一值为true时,第二值即为false,等等。
本申请中设定第一报文标识符在报文标识链表中所在的节点的标识位的具体值为第一值时,终端需要对第一CAN报文进行本地处理,当第一报文标识符在报文标识链表中所在的节点的标识位的具体值为第二值时,终端不需要对第一CAN报文进行本地处理。
S1502,在第一报文标识符所在的节点的标识位为第一值时,对第一CAN报文进行本地处理。
假设本申请中设定第一值为1(即第一报文标识符在报文标识符链表中所在节点的标识位的具体值为1时,终端需要对第一CAN进行本地处理),第二值为0(即第一报文标识符在报文标识符链表中所在节点的标识位的具体值为0时,终端不需要对第一 CAN进行本地处理)。
作为示例,假设第一报文标识符为0x780(即CAN ID为0x780),参见图3,可以看出,终端经过查找后,可以确定第一报文标识符0x780在报文标识符链表中所在的节点的标识位的具体值为1(即第一值),此时,终端即可判定需要对接收的第一CAN 报文进行本地处理。
在本申请另一实施例中,在获取第一报文标识符所在的节点的标识位的具体值之后,还包括:
在第一报文标识符所在的节点的标识位为第二值时,不对第一CAN报文进行本地处理。
作为示例,假设第一报文标识符为0x230(即CAN ID为0x230),参见图3,可以看出,终端经过查找后,可以确定第一报文标识符0x230在报文标识符链表中所在的节点的标识位的具体值为0(即第二值),此时,终端即可判定不需要对接收的第一CAN 报文进行本地处理。
在本申请另一实施例中,根据在报文标识符链表中的查找结果对第一CAN报文进行响应,还包括:
在从报文标识符链表中未查找到第一报文标识符时,为第一报文标识符创建一个新节点,并将创建的新节点的标识位设定为第二值,并将创建的新节点插入到报文标识符链表的首部,得到更新后的报文标识符链表,且不对第一CAN报文进行本地处理。
作为示例,假设第一CAN报文的第一报文标识符为0x4f05,即CAN ID为0x4f05。然而,因为图3中不存在与0x4f05相同的报文标识符,则终端在查找完整个报文标识符链表后,才能判定报文标识符链表中不存在与第一报文标识符0x4f05相同的报文标识符。
在确定报文标识符链表中不存在与第一报文标识符0x4f05相同的报文标识符后,终端即可为第一报文标识符0x4f05创建一个新节点,并将新节点的标识位设定为第二值,因为上文示例中第一值为1,则此处为新节点设定的标识位的第二值即为0(即终端不需要对接收的第一CAN报文进行本地处理)。
在为第一报文标识符创建一个新节点,并为新节点预设好标识位(即第二值)后,终端即可将标识位设定为第二值的该新节点插入至报文标识符链表首部,得到更新后的报文标识符链表。当然,具体插入操作可参见是S14中的相关描述,在此不再重复赘述。
参见图6,在本申请另一实施例中,从报文标识符链表中,查找第一报文标识符,包括:
S1201,判断报文标识符链表是否为空。
本申请实施例中,终端接收到第一CAN报文后,先判断下读取的报文标识符链表是否为空。
S1202,若是,则确定报文标识符链表中未查找到第一报文标识符。
本申请实施例中,若报文标识符链表为空,则终端即可确定报文标识符链表中不存在第一报文标识符。
S1203,若不是,则遍历报文标识符链表,判断报文标识符链表是否存在第一报文标识符。
本申请实施例中,若报文标识符链表不为空,则终端就从报文标识符链表中查找第一报文标识符。
作为示例,在报文标识符链表不为空时,假设第一CAN报文的第一报文标识符为0x780(即CAN ID为0x780),则终端就从报文标识符链表中查找CAN ID为0x780这个报文标识符。
参见图7,在本申请另一实施例中,在从报文标识符链表中,查找第一报文标识符之前,还包括:
S22,判断报文标识符链表中的节点数量是否达到预设阈值。
作为示例,假设本申请实施例中的预设阈值为3,终端在接收到第一CAN报文后,先判断报文标识符链表中总节点的个数是否超过了预设阈值3。
S23,若是,则执行从报文标识符链表中,查找第一报文标识符以及之后的步骤。
作为示例,假设第一CAN报文的第一报文标识符为0x780,预设阈值为3。参见图 3,终端确定的报文标识符链表中总节点的个数为4个,那么终端即可判定报文标识符链表中报文标识符节点的总个数大于预设阈值。此时,终端即可从报文标识符链表中查找是否存在第一报文标识符0x780(图7中的S23),在从报文标识符链表中查找到第一报文标识符0x780后,终端会确定第一报文标识符0x780在报文标识符链表中所在的节点(图7中的S24),并将确定的第一报文标识符0x780在报文标识符链表中所在的节点2插入到报文标识符链表的首部,得到更新后的报文标识符链表(图7中的S25),并根据在报文标识符链表中的查找结果对所述第一CAN报文进行响应(图7中的S26)。
当然,若终端查找到的第一报文标识符在报文标识符链表中所在的节点为节点1时,则终端不需要执行将第一报文标识符所在的节点插入至报文标识符链表的首部的步骤了。
S23-1,若不是,则不执行在从报文标识符链表中查找到第一报文标识符时,确定第一报文标识符在报文标识符链表中所在的节点,以及将确定的第一报文标识符所在的节点插入到报文标识符链表的首部,得到更新后的报文标识符链表的步骤。
作为示例,假设第一报文标识符为0x780(即CAN ID为0x780),预设阈值为5。
参见图3,终端确定的报文标识符链表中总节点的个数为4个,那么终端即可判定报文标识符链表中报文标识符节点的总个数小于预设阈值。此时,终端会从报文标识符链表中查找是否存在第一报文标识符0x780(图7中的S23-1),在从报文标识符链表中查找到第一报文标识符0x780后,终端根据在报文标识符链表中的查找结果,对第一 CAN进行响应(图7中的S26-1)。
参见图8,在本申请另一实施例中,在根据在报文标识符链表中的查找结果对第一CAN报文进行响应之后,还包括:
S16,接收CAN总线上的第二CAN报文,第二CAN报文中携带有第二报文标识符。
本申请实施例中,第二CAN报文可以是与第一CAN报文完全相同的CAN报文,也可以是接收的第一CAN报文以外的其它CAN报文。本申请对此不作限定。
为了便于描述,此处将第二CAN报文的报文标识符定义为第二报文标识符。
S17,根据第二报文标识符,从更新后的报文标识符链表中查找与第二报文标识符的数据内容和数据长度相同的报文标识符。
本申请实施例中,终端接收到第二CAN报文后,从更新后的报文标识符链表中查找与第二报文标识符相同的报文标识符。
若第二CAN报文的第二报文标识符是第一CAN报文的第一报文标识符,则终端在从更新后的报文标识符链表中查找与第二报文标识符相同的报文标识符时,只需要比较一次即可查找到。如此一来,可以大大减少比较次数,达到提高效率,减少处理时间,进而降低远程诊断超时失败的概率。
当第二CAN报文的第二报文标识符不是第一报文标识符时,则执行S11~S14中描述的方法,执行查找和更新报文标识符链表的步骤。
请参见图9所示,图9是本申请实施例提供的一种数据处理装置的结构示意图,应用于终端,该实施例的数据处理装置7包括:
接收模块710,用于所述接收模块所在的终端接收与所述终端连接的CAN总线上的第一CAN报文,所述第一CAN报文中携带有第一报文标识符;
查找模块720,用于从报文标识符链表中,查找所述第一报文标识符,所述报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;
确定模块730,用于在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点;
插入模块740,用于将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表;
响应模块750,用于根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应。
在本申请另一实施例中,所述响应模块750还用于:
在从所述报文标识符链表中查找到所述第一报文标识符时,获取所述第一报文标识符所在的节点的标识位的具体值;
在所述第一报文标识符所在的节点的标识位为第一值时,对所述第一CAN报文进行本地处理。
在本申请另一实施例中,所述响应模块750还用于:
在所述第一报文标识符所在的节点的标识位为第二值时,不对所述第一CAN报文进行本地处理。
在本申请另一实施例中,所述响应模块750还用于:
在从所述报文标识符链表中未查找到所述第一报文标识符时,为所述第一报文标识符创建一个新节点,并将创建的所述新节点的标识位设定为第二值,并将所述创建的新节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表,且不对所述第一CAN报文进行本地处理。
在本申请另一实施例中,所述查找模块720还用于:
判断所述报文标识符链表是否为空;
若是,则确定所述报文标识符链表中未查找到所述第一报文标识符;
若不是,则遍历所述报文标识符链表,判断所述报文标识符链表是否存在所述第一报文标识符。
在本申请另一实施例中,所述数据采集装置还包括:
判断模块,用于判断所述报文标识符链表中的节点数量是否达到预设阈值。
相应的,在所述报文标识符链表中的节点数量是否达到预设阈值时,所述查找模块 720还用于:从报文标识符链表中,查找所述第一报文标识符;所述确定模块730还用于:在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点;所述插入模块740还用于:将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表;所述响应模块750还用于:根据在所述报文标识符链表中的查找结果对所述第一 CAN报文进行响应。
相应的,在所述报文标识符链表中的节点数量未达到预设阈值时,所述查找模块720 还用于:从报文标识符链表中,查找所述第一报文标识符;所述响应模块760还用于:根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应。
在本申请另一实施例中,接收单元710还用于:
接收CAN总线上的第二CAN报文,所述第二CAN报文中携带有第二报文标识符。
在本申请另一实施例中,查找单元720还用于:
根据所述第二报文标识符,从所述更新后的报文标识符链表中查找所述第二报文标识符。
需要说明的是,上述装置/模块之间的执行过程和相互之间的信息交互与本申请实施例提供的数据处理方法基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
请参见图10所示,图10是本申请实施例提供的终端的结构示意图,该实施例的终端8包括:
一个或多个处理器810、存储器820以及存储在所述存储820中并可在所述处理器810上运行的计算机程序830。所述处理器810执行所述计算机程序830时实现上述各个方法实施例中的步骤,例如图2所示的步骤S11至S15。
示例性的,所述计算机程序830可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器820中,并由所述处理器810执行,以完成本申请所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序830在所述终端8中的执行过程。例如所述计算机程序830可以被分割成如下几个模块,示例性的:
接收模块710,用于所述接收模块所在的终端接收与所述终端连接的CAN总线上的第一CAN报文,所述第一CAN报文中携带有第一报文标识符;
查找模块720,用于从报文标识符链表中,查找所述第一报文标识符,所述报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;
确定模块730,用于在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点;
插入模块740,用于将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表;
响应模块750,用于根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应。
所述终端包括但不仅限于处理器810、存储器820。本领域技术人员可以理解,图10仅仅是终端8的一个示例,并不构成对终端8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端8还可以包括输入设备、输出设备、网络接入设备、总线等。
所述处理器810可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器820可以是所述终端8的内部存储单元,例如终端8的硬盘或内存。所述存储器820也可以是所述终端8的外部存储设备,例如所述终端8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡 (FlashCard)等。进一步地,所述存储器820还可以既包括所述终端8的内部存储单元也包括外部存储设备。所述存储器820用于存储所述计算机程序以及所述终端8所需的其他程序和数据。所述存储器820还可以用于暂时地存储已经输出或者将要输出的数据。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本申请另一实施例提供了一种计算机可读存储介质。本申请实施例提供的数据处理方法如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被一个或多个处理器执行时,可实现上述各个方法实施例的步骤。
同样,作为一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据处理方法,其特征在于,应用于终端,所述方法包括:
接收与所述终端连接的CAN总线上的第一CAN报文,所述第一CAN报文中携带有第一报文标识符;
从报文标识符链表中,查找所述第一报文标识符,所述报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;
在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点;
将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表;
根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应。
2.如权利要求1所述的方法,其特征在于,所述根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应,包括:
在从所述报文标识符链表中查找到所述第一报文标识符时,获取所述第一报文标识符所在的节点的标识位的具体值;
在所述第一报文标识符所在的节点的标识位为第一值时,对所述第一CAN报文进行本地处理。
3.如权利要求2所述的方法,其特征在于,在所述获取所述第一报文标识符所在的节点的标识位的具体值之后,还包括:
在所述第一报文标识符所在的节点的标识位为第二值时,不对所述第一CAN报文进行本地处理。
4.如权利要求1所述的方法,其特征在于,所述根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应,包括:
在从所述报文标识符链表中未查找到所述第一报文标识符时,为所述第一报文标识符创建一个新节点,并将创建的所述新节点的标识位设定为第二值,并将所述创建的新节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表,且不对所述第一CAN报文进行本地处理。
5.如权利要求1所述的方法,其特征在于,所述从报文标识符链表中,查找所述第一报文标识符,包括:
判断所述报文标识符链表是否为空;
若是,则确定所述报文标识符链表中未查找到所述第一报文标识符;
若不是,则遍历所述报文标识符链表,判断所述报文标识符链表是否存在所述第一报文标识符。
6.如权利要求1所述的方法,其特征在于,在所述从报文标识符链表中,查找所述第一报文标识符之前,还包括:
判断所述报文标识符链表中的节点数量是否达到预设阈值;
若是,则执行所述从报文标识符链表中,查找所述第一报文标识符以及之后的步骤;
若不是,则不执行所述在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点,以及所述将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表的步骤。
7.如权利要求1所述的方法,其特征在于,在所述根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应之后,所述方法还包括:
接收CAN总线上的第二CAN报文,所述第二CAN报文中携带有第二报文标识符;
根据所述第二报文标识符,从所述更新后的报文标识符链表中查找所述第二报文标识符。
8.一种数据处理装置,其特征在于,包括:
接收模块,用于所述接收模块所在的终端接收与所述终端连接的CAN总线上的第一CAN报文,所述第一CAN报文中携带有第一报文标识符;
查找模块,用于从报文标识符链表中,查找所述第一报文标识符,所述报文标识符链表用于记录报文标识符对应的数据是否需要进行本地处理;
确定模块,用于在从所述报文标识符链表中查找到所述第一报文标识符时,确定所述第一报文标识符在所述报文标识符链表中所在的节点;
插入模块,用于将确定的所述第一报文标识符所在的节点插入到所述报文标识符链表的首部,得到更新后的报文标识符链表;
响应模块,用于根据在所述报文标识符链表中的查找结果对所述第一CAN报文进行响应。
9.一种终端,其特征在于,包括:处理器,所述处理器用于运行存储器中存储的计算机程序,以实现如权利要求1至7任一项所述的数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储计算机程序,所述计算机程序在处理器上运行时实现如权利要求1至7任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111634729.0A CN114338271A (zh) | 2021-12-29 | 2021-12-29 | 数据处理方法、装置、终端及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111634729.0A CN114338271A (zh) | 2021-12-29 | 2021-12-29 | 数据处理方法、装置、终端及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114338271A true CN114338271A (zh) | 2022-04-12 |
Family
ID=81017171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111634729.0A Pending CN114338271A (zh) | 2021-12-29 | 2021-12-29 | 数据处理方法、装置、终端及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338271A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101378326A (zh) * | 2008-09-18 | 2009-03-04 | 中兴通讯股份有限公司 | 组播用户查询和老化处理方法 |
EP2388965A1 (en) * | 2010-05-19 | 2011-11-23 | Telefonaktiebolaget L M Ericsson (Publ) | High performance hardware linked list processors cascaded to form a pipeline |
CN103684933A (zh) * | 2012-09-03 | 2014-03-26 | 株式会社日立制作所 | 物联网系统、物联网代理装置及方法 |
WO2017181986A1 (zh) * | 2016-04-22 | 2017-10-26 | 腾讯科技(深圳)有限公司 | 数据检索方法及系统 |
CN108494687A (zh) * | 2018-03-08 | 2018-09-04 | 全球能源互联网研究院有限公司 | 基于wifi的电力信息物理系统多路径组网通信方法及系统 |
CN109213699A (zh) * | 2018-09-21 | 2019-01-15 | 郑州云海信息技术有限公司 | 一种元数据管理方法、系统、设备及计算机可读存储介质 |
-
2021
- 2021-12-29 CN CN202111634729.0A patent/CN114338271A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101378326A (zh) * | 2008-09-18 | 2009-03-04 | 中兴通讯股份有限公司 | 组播用户查询和老化处理方法 |
EP2388965A1 (en) * | 2010-05-19 | 2011-11-23 | Telefonaktiebolaget L M Ericsson (Publ) | High performance hardware linked list processors cascaded to form a pipeline |
CN103684933A (zh) * | 2012-09-03 | 2014-03-26 | 株式会社日立制作所 | 物联网系统、物联网代理装置及方法 |
WO2017181986A1 (zh) * | 2016-04-22 | 2017-10-26 | 腾讯科技(深圳)有限公司 | 数据检索方法及系统 |
CN108494687A (zh) * | 2018-03-08 | 2018-09-04 | 全球能源互联网研究院有限公司 | 基于wifi的电力信息物理系统多路径组网通信方法及系统 |
CN109213699A (zh) * | 2018-09-21 | 2019-01-15 | 郑州云海信息技术有限公司 | 一种元数据管理方法、系统、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110392381B (zh) | 一种用于核电站的多通道无线通讯方法、装置及终端设备 | |
CN111491002A (zh) | 设备巡检方法、装置、被巡检设备、巡检服务器及系统 | |
CN112671584A (zh) | 网络拓扑的识别方法、装置、系统和存储介质 | |
CN114553373A (zh) | 一种数据传输方法、装置、设备和存储介质 | |
CN111225082B (zh) | 一种物联网智能设备的身份管理方法、装置及物联网平台 | |
CN111552268A (zh) | 一种车辆远程诊断方法、设备连接器及车辆连接器 | |
CN108600011B (zh) | 通信网络数据传输的方法、装置、存储介质及终端设备 | |
CN109995548B (zh) | 设备管理方法、系统和数据传输方法、系统及终端设备 | |
CN114338271A (zh) | 数据处理方法、装置、终端及计算机可读存储介质 | |
CN112422485B (zh) | 一种传输控制协议的通信方法及装置 | |
CN110390060B (zh) | 一种查询停车信息方法及装置、终端、云端服务器、系统 | |
KR20180074128A (ko) | 차량 게이트웨이용 진단 메시지 라우팅 시스템 및 방법 | |
CN115277671A (zh) | 车辆的ota升级方法、装置、车辆及存储介质 | |
CN115296943B (zh) | 一种消息广播方法、装置、服务器和存储介质 | |
CN110493735B (zh) | 一种短信处理方法及装置 | |
CN106412657B (zh) | 一种机顶盒烧写序列码的方法及系统 | |
CN111010286A (zh) | 基于串行总线的智能注册方法、装置、电子设备及介质 | |
CN107086930B (zh) | 一种车辆配置方法、装置及汽车 | |
CN107124293B (zh) | 一种分布式网络系统的协议管理方法及系统 | |
CN111611134A (zh) | 一种时间监控方法、装置、应用端及存储介质 | |
CN113133010B (zh) | 一种无线组网方法、装置、终端设备及存储介质 | |
CN114500654B (zh) | 一种数据转发装置、电源模块及数据转发方法 | |
CN112039729B (zh) | 设备识别方法、服务器、电子设备和存储介质 | |
CN111935199A (zh) | 一种车载软件版本信息同步方法、装置、系统及车辆 | |
CN113791804B (zh) | 多路仪器并行升级的方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |