掌桥专利:专业的专利平台
掌桥专利
首页

一种数据流读取方法、装置、设备及介质

文献发布时间:2023-06-19 19:28:50


一种数据流读取方法、装置、设备及介质

技术领域

本申请涉及汽车诊断领域,特别是涉及一种数据流读取方法、装置、设备及介质。

背景技术

数据流在诊断分析中尤为重要,数据流包括故障信息、控制计算机的实时运行参数以及控制计算机与诊断之间的相互控制指令,在接收到这些信息数据后,诊断设备根据预定的通信协议将它们显示为相应的字符和数字。在用诊断设备读取车辆多条数据流时,存在一些变化频率快慢不同的数据流,需要将频率不同的数据流及时刷新以便于用户查看变化情况。

目前针对于数据流的刷新采用的方案是循环发送多条请求消息,但没有区分频率变化快慢的发送请求,这就有可能会导致某条数据流读取慢而影响整个数据流的刷新,对于频率较快的数据流来说不能够及时的体现数据。

鉴于上述技术,寻求一种数据流读取方法、装置、设备及介质是本领域技术人员亟待解决的问题。

发明内容

本申请的目的是提供一种数据流读取方法、装置、设备及介质,通过数据流刷新快慢频率分配线程,能够使用多线程读取数据流,可以有效避免某个数据流读取快慢而影响整个数据流的刷新。

为解决上述技术问题,本申请提供一种数据流读取方法,应用于下位机,下位机分别与车辆、诊断设备通讯连接,该方法包括:

获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数;

通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流;

为目标数据流分别分配线程;

通过线程读取目标数据流。

优选地,通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,包括:

针对每一数据流,若其目标读取次数与实际读取次数的差值满足预设条件,将该数据流确定为目标数据流。

优选地,通过线程读取目标数据流包括:

获取经由诊断设备发出的读取命令;

选取与分配线程后的数据流对应的读取命令;

根据线程与读取命令读取目标数据流。

优选地,在通过线程读取目标数据流之后,还包括:

显示目标数据流经过读取后的读取结果;

判断是否读取到返回命令;

若是,则将读取后的目标数据流发送至诊断设备。

优选地,获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数,包括:

获取目标时间段内各个数据流应读取的总次数;

基于当前时刻与目标时间段的关系,确定当前时刻各个数据流对应的目标读取次数,其中,当前时刻位于目标时间段内。

优选地,获取目标时间段内各个数据流应读取的总次数,包括:

从诊断设备端获取各个数据流在目标时间段内应读取的总次数;

或,

监控各个数据流的数据刷新频率,并基于预设算法,根据数据刷新频率确定各个数据流在目标时间段内应读取的总次数。

为解决上述技术问题,本申请还提供了一种数据流读取装置,包括:

获取模块,用于获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数;

确定模块,用于通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流;

分配模块,用于为目标数据流分别分配线程;

读取模块,用于通过线程读取目标数据流。

优选地,通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,包括:

针对每一数据流,若其目标读取次数与实际读取次数的差值满足预设条件,将该数据流确定为目标数据流。

为解决上述技术问题,本申请还提供了一种数据流读取设备,包括存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上述的数据流读取方法的步骤。

为解决上述技术问题,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的数据流读取方法的步骤。

本申请所提供的一种数据流读取方法,应用于下位机,下位机分别与车辆、诊断设备通讯连接,该方法首先获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数,通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,并为目标数据流分别分配线程,通过线程读取目标数据流。该方法通过多线程读取各个数据流,保证无论数据流变化快慢都能读取到,能够有效避免由于某个数据流读取慢而影响整个数据流的刷新。

本申请还提供了一种数据流读取装置、设备及介质,与数据流读取方法相对应,故具有与数据流读取方法相同的有益效果。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的数据流读取方法的流程图;

图2为本申请另一实施例提供的数据流读取装置结构图;

图3为本申请另一实施例提供的数据流读取设备的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例进行描述。

本申请的核心是提供一种数据流读取方法、装置、设备及介质,使用多线程读取数据流,从而避免由于某个数据流读取快慢而影响到整个数据流的刷新。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。

在用诊断设备读取车辆的多条数据流时,存在一些变化频率较快的和变化频率较慢的,为方便用户查看变化情况,需要将变化频率较快的数据流及时刷新出来。目前采用的方案是循环发送多条消息,单个消息间存在时延,且没有区分频率变化的快慢,统一发送请求,导致整体刷新频率较低,且需要全部收到所有数据流界面才能显示刷新,对于频率较快的数据流不能及时体现。

本申请的具体方案是根据数据流的变化频率来控制数据流读取的次数,诊断设备打包发送读取命令,下位机使用多线程读取数据流,保证变化频率较快的数据流能够及时读取,从而避免由于某个数据流读取快慢而影响到整个数据流的刷新。

需要说明的是,本申请提出的数据流读取方法,应用于下位机,下位机分别与车辆、诊断设备通讯连接,本申请中提到的诊断设备可以是诊断设备软件或者其它具有诊断功能的器件。另外,本申请中提到的数据流读取方法可以由下位机的微控制单元(microcontrol unit,MCU)或者其它类型的控制器件来实现,均不影响技术方法的实现。

本申请提供了一种数据流读取方法,应用于下位机,下位机分别与车辆、诊断设备通讯连接,图1为本申请实施例提供的数据流读取方法的流程图;如图1所示,该方法包括如下步骤:

S10:获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数。

本实施例提到的目标时间段是指某一指定的时间段,且包含当前时刻的时间段。车辆的各数据流在该目标时间段内,当前时刻所对应的目标读取次数是指各个数据流在当前时刻应要读取的次数。本步骤除了要获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数外,还需要获取当前的实际读取次数,当前的实际读取次数是指汽车的各数据流实际被读取的次数。可以理解的是,本实施例中各数据流的目标读取次数与当前的实际读取次数不一定相同,各数据流的目标读取次数可能会大于实际读取次数,也有可能会小于实际读取次数,或者目标读取次数等于实际读取次数。

本实施例中提到的各数据流的目标读取次数能够反映数据流刷新的快慢,刷新频率快的数据流在目标时间段内的目标读取次数也相对大,刷新频率慢的数据流在目标时间段内的目标读取次数相对小。本实施例提出的实际读取次数是指数据流经过读取后的次数。可以理解的是,初始时,读取次数设置为零,数据流每经过一次读取,其相应的读取次数加一。

在具体实施中,下位机除包含控制设备外,还可以包含存储设备等。其中,可以通过存储设备存储以上获取得到的目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数。可以理解的是,本实施例中的获取动作可以由下位机中的MCU完成,也可以是其它类型的控制器,获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数可以是实时获取,即MCU或其它类型的控制器获取到目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数后,实时上传至存储设备中。

S11:通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流。

具体实施中,下位机根据各数据流的目标读取次数与实际读取次数确定全部数据流中当前需要读取的目标数据流。例如,现有A、B、C、D四条数据流,其中,当前时刻数据流A的目标读取次数为7,数据流B的目标读取次数为6,数据流C的目标读取次数为5,数据流D的目标读取次数为2。根据各数据流的目标读取次数与实际读取次数确定当前需要读取的数据流,可以通过目标读取次数与实际读取次数的差值确定。假设四条数据流的实际读取次数均为零,可以得出在四条数据流中目标读取次数与实际读取次数的差值分别为7、6、5、2,由此可见,这四条数据流均可确定为需要被读取的目标数据流。

S12:为目标数据流分别分配线程。

在步骤S11确定了当前需要读取的目标数据流后,还需要为目标数据流分别分配线程。在本实施例中,每一条线程对应获取一个目标数据流的数据值。具体实施中,下位机为目标数据流分别分配线程执行对应目标数据流的读取命令。

S13:通过线程读取目标数据流。

本实施例在步骤S12中为当前需要读取的目标数据流分别分配了线程,下位机分配线程执行对应的读取命令,读取车辆对应的目标数据流。

本申请所提供的一种数据流读取方法,应用于下位机,下位机分别与车辆、诊断设备通讯连接,该方法首先获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数,通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,并为目标数据流分别分配线程,通过线程读取目标数据流。该方法能够确定当前需要读取的数据流,保证无论数据流变化快慢都能读取到,能够有效避免由于某个数据流读取慢而影响整个数据流的刷新。本方法通过多线程读取各个数据流,极大提高数据流的读取效率。

上述实施例对于数据流读取方法做出了详细的描述,在上述实施例的基础上,作为一个可能的实现方式,通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,包括:

针对每一数据流,若其目标读取次数与实际读取次数的差值满足预设条件,将该数据流确定为目标数据流。

具体实施中,在获取到目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前实际读取次数之后,将通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,确定目标数据流方式是,对于每一条数据流,判断各数据流的目标读取次数与实际读取次数的差值是否满足预设条件。所谓的预设条件可以是数据流的目标读取次数与实际读取次数的差值大于预设值,例如,若数据流A、数据流B和数据流C当前时刻对应的目标读取次数分别是10、9、8,但目前数据流A、数据流B和数据流C的实际读取次数均为2,则数据流A、数据流B和数据流C的目标读取次数与实际读取次数的差值为8、7、6,假设预设值为0,则数据流A、数据流B和数据流C的目标读取次数与实际读取次数的差值均满足预设条件,可以将数据流A、数据流B和数据流C确定为当前需要读取的目标数据流。

作为一个可能的实现方式,目标时间段内,当前时刻所述车辆的各数据流对应的目标读取次数的获取方式为:

获取目标时间段内各个数据流应读取的总次数;

基于当前时刻与目标时间段的关系,确定当前时刻各个数据流对应的目标读取次数,其中,当前时刻位于目标时间段内。

进一步地,获取目标时间段内各个数据流应读取的总次数,包括:

从诊断设备端获取各个数据流在目标时间段内应读取的总次数;

或,

监控各个数据流的数据刷新频率,并基于预设算法,根据数据刷新频率确定各个数据流在目标时间段内应读取的总次数。

在实际应用中,下位机获取各个数据流在目标时间段内,应读取的总次数的方式有两种,一种是诊断设备开发人员根据数据流的变化频率进行预估并直接发送给下位机;另一种是开发人员根据数据流的变化频率制定一定的算法并写入下位机,下位机可以通过监控各个数据流的数据刷新频率,然后根据目标时间段的长短来计算出各个数据流应读取的总次数。下位机在得到目标时间段内各个数据流应读取的总次数,还需要得出各个数据流在当前时刻所对应的目标读取次数,确定各个数据流当前时刻所对应的目标读取次数的方式是根据当前时刻与目标时间段的关系完成的。可以理解的是,目标时间段内包含当前时刻,根据当前时刻所占目标时间段的比例,确定当前时刻数据流所对应的目标读取次数。

本实施例通过获取得到各数据流的目标读取次数,判断各数据流的目标读取次数与实际读取次数的差值是否满足预设条件,若满足,则为该数据流分配线程,从而实现了根据各数据流的刷新频率分别分配线程进行读取,避免了刷新频率慢的数据流无法及时读取,进而影响到整个数据流的刷新。

上述实施例对于数据流读取方法做出了详细的描述,在上述实施例的基础上,作为一个可能的实现方式,按照线程读取数据流具体包括如下步骤:

获取经由诊断设备发出的读取命令;

选取与分配线程后的数据流对应的读取命令;

根据线程与读取命令读取目标数据流。

诊断设备将各个数据流的相关数据打包发送至下位机,其中包含读取命令。下位机获取经由诊断设备发出的读取命令,选取与分配线程后的数据流对应的读取命令,按照线程与读取命令读取目标数据流。

本实施例中诊断设备将所有读取数据流命令打包,可以减少诊断设备和接头下位机的交互次数,从而减少耗时。

进一步地,本实施例在所按照线程读取数据流之后,还包括:

显示目标数据流经过读取后的读取结果;

判断是否读取到返回命令;

若是,则将读取后的目标数据流发送至诊断设备。

具体实施中,诊断设备根据各个数据流的刷新快慢,组织读取各个数据流序号,读取命令,刷新快的数据流对应的目标读取次数大。诊断设备将读取得到的数据打包发送至车辆的接头下位机,打包数据包括读取命令、各个数据流的序号、各个数据流对应的目标读取次数等等。下位机根据各个数据流的目标读取次数和实际读取次数分别分配线程执行数据流对应的读取命令,从而读取车辆对应的数据流。

下位机使用多线程读取各个数据流,可以有效地避免某个数据流读取慢而影响整个数据流的刷新,且读取到一个数据流就立即显示,避免要等到读取到所有的数据流后才显示带来的延时。

此外,还需要对下位机是否读取到车辆的返回命令进行判断,在下位机读取到车辆返回命令后,每读取到一个数据流数据,将对应数据流的值赶回给诊断设备。

本实施例中下位机通过所读取到的返回命令,将读取数据流的发送至诊断设备,便于诊断设备分析数据流,此外,还实现了下位机与诊断设备之间的交互功能。

上述实施例中下位机在读取到返回命令之后,需要将读取数据流的数据传送至诊断设备,以实现诊断设备与下位机之间的交互。在上述实施例的基础上,作为一个可能的实现方式,在将读取到的数据流发送至诊断设备之后,还需要诊断设备判断下位机返回的数据流是否一致。

诊断设备判断是否接收到经过读取后的数据流;

若是,则判断待更新数据流与经过读取后的数据流是否一致;

如果待更新数据流与经过读取后的数据流一致,则将经过读取后的数据流作为待更新数据流,并刷新待更新数据流;

如果待更新数据流与经过读取后的数据流不一致,则将上次所更新的数据流作为待更新数据流,并刷新待更新数据流;

若否,则进入将上次所更新的数据流作为待更新数据流,并刷新待更新数据流的步骤。

具体实施中,首先诊断设备判断是否接收到经过下位机读取后的数据流,如果诊断设备接收到下位机读取后的数据流,则需要进一步判断待更新数据流是否与经过读取后的数据流一致,如果待更新数据流与经过读取后的数据流一致,就将下位机传输来的经过读取后的数据流作为待更新数据流,并刷新所有数据流。如果待更新数据流与经过读取后的数据流不一致,则证明诊断设备接收到下位机传来的数据流非本次数据流,这就需要使用上次的数据流,并刷新所有数据流。

本实施例中诊断设备对下位机传输来的数据流进行分析判断,并更新数据流,刷新所有的数据流。

在上述实施例中,对于数据流读取方法进行了详细描述,本申请还提供数据流读取装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。

基于功能模块的角度,本申请提供了一种数据流读取装置,图2为本申请另一实施例提供的数据流读取装置结构图;如图2所示,该装置包括:

获取模块10,用于获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数;

确定模块11,用于通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流;

分配模块12,用于为目标数据流分别分配线程;

读取模块13,用于通过线程读取目标数据流。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本申请所提供的一种数据流读取装置,首先获取模块10获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数,通过确定模块11确定各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,并由分配模块12为目标数据流分别分配线程,读取模块13通过线程读取目标数据流。通过多线程读取各个数据流,保证无论数据流变化快慢都能读取到,能够有效避免由于某个数据流读取慢而影响整个数据流的刷新。

图3为本申请另一实施例提供的数据流读取设备的结构图;如图3所示,数据流读取设备包括:存储器20,用于存储计算机程序;

处理器21,用于执行计算机程序时实现如上述实施例中所提到的数据流读取方法的步骤。

本实施例提供的数据流读取设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图像处理器(Graphics ProcessingUnit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的数据流读取方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于涉及数据流读取方法的相关数据等。

在一些实施例中,数据流读取设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。

本领域技术人员可以理解,图3中示出的结构并不构成对数据流读取设备的限定,可以包括比图示更多或更少的组件。

本申请实施例提供的数据流读取设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:

首先获取目标时间段内,当前时刻车辆的各数据流对应的目标读取次数和当前的实际读取次数,通过各数据流的目标读取次数与实际读取次数确定当前需要读取的目标数据流,并为目标数据流分别分配线程,通过线程读取目标数据流。该方法通过多线程读取各个数据流,保证无论数据流变化快慢都能读取到,能够有效避免由于某个数据流读取慢而影响整个数据流的刷新。

最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。

可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本申请所提供的一种数据流读取方法、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术分类

06120115926442