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

一种数据显示方法、装置、电子设备及存储介质与流程

2023-03-20 05:01:03 来源:中国专利 TAG:


1.本发明涉及数据显示算法实现技术领域,特别涉及一种数据显示方法、装置、电子设备及存储介质。


背景技术:

2.随着现代汽车的日益智能化,汽车电气系统由早期较单一的组件形式到越来越复杂的多功能单元ecu(e l ectron i c contro l un it,电子控制单元)的组合形式,它们之间通过一个由汽车总线组成的车载网络进行通信。由于汽车元器件的多样性及总线网络拓扑的复杂性,对车载网络上的通信数据进行实时监控显示,将对汽车ecu厂商的研发过程以及整车故障诊断均有重大意义。多数情况下,车载网络通信数据的比特率一般在0.5-10mbps之间,具有重复且量大的特点。因为观测数据量非常大,怎样将通信数据实时加载到窗口中,同时在设置数据过滤规则的情况下不卡顿地、准确无误地显示通信数据,成为亟待解决的技术问题。


技术实现要素:

3.为了解决上述提出的至少一个技术问题,本公开提出了一种数据显示方法、装置、电子设备及存储介质。
4.一方面,本公开提供了一种数据显示方法,上述方法包括:
5.读取来自车载网络的显示数据并写入一级缓存区;
6.将一级缓存区中的显示数据读入二级缓存区,二级缓存区至少包括第一缓存区和第二缓存区;第一缓存区和第二缓存区分开存储不同显示状态类型的显示数据;
7.获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,目标缓存区为第一缓存区和第二缓存区中任一种;
8.读取目标缓存区中的显示数据发送至数据显示单元进行显示。
9.在一个可选的实施例中,上述读取来自车载网络的显示数据并写入一级缓存区,包括:
10.对车载网络进行第一加锁操作,读取车载网络的显示数据;
11.将车载网络的显示数据写入一级缓存区,并对车载网络进行第一解锁操作。
12.在一个可选的实施例中,上述将一级缓存区中的显示数据读入二级缓存区,包括:
13.对一级缓存区进行第一加锁操作,读取一级缓存区中的数据;
14.对一级缓存区进行第一解锁操作,并对读取结果进行第二加锁操作,将读取结果写入第一缓存区;
15.对读取结果进行过滤操作,将满足预设过滤策略的过滤结果写入第二缓存区,对读取结果进行第二解锁操作。
16.在一个可选的实施例中,上述第二缓存区的容量阈值小于第一缓存区,对读取结果进行过滤操作,将满足预设过滤策略的过滤结果写入第二缓存区,对读取结果进行第二
解锁操作,包括:
17.根据预设过滤策略对读取结果进行过滤操作,得到过滤结果;
18.响应于过滤结果不满足预设过滤策略的情况,对读取结果进行第二解锁操作;
19.响应于过滤结果满足预设过滤策略的情况,将过滤结果写入第二缓存区;
20.确定第二缓存区中的数据量;
21.响应于数据量不超过预设值的情况,对读取结果进行第二解锁操作,预设值小于第二缓存区的容量阈值;
22.响应于数据量超过预设值的情况,删除第二缓存区中最早被写入且超出预设值的数据,并对读取结果进行第二解锁操作。
23.在一个可选的实施例中,上述读取目标缓存区中的显示数据发送至数据显示单元进行显示,包括:
24.在目标缓存区为第一缓存区的情况下,对第一缓存区进行第二加锁操作,读取第一缓存区中的数据;
25.对第一缓存区进行第二解锁操作,将读取结果显示在数据显示单元。
26.在一个可选的实施例中,上述读取目标缓存区中的显示数据发送至数据显示单元进行显示,还包括:
27.在目标缓存区为第二缓存区的情况下,每间隔预设时间,对第二缓存区进行第二加锁操作,读取第二缓存区中的数据;
28.对第二缓存区进行第二解锁操作,将读取结果显示在数据显示单元。
29.在一个可选的实施例中,上述获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,包括:
30.在数据显示单元处于暂停状态的情况下,将第一缓存区确定为目标缓存区;
31.在数据显示单元处于运行状态的情况下,将第二缓存区确定为目标缓存区。
32.第二方面,本发明还提供了一种数据显示装置,包括:
33.数据读取模块,用于读取来自车载网络的显示数据并写入一级缓存区;
34.数据写入模块,用于将一级缓存区中的显示数据读入二级缓存区,二级缓存区至少包括第一缓存区和第二缓存区;第一缓存区和第二缓存区分开存储不同显示状态类型的显示数据;
35.目标缓存区确定模块,用于获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,目标缓存区为第一缓存区和第二缓存区中任一种;
36.显示模块,用于读取目标缓存区中的显示数据发送至数据显示单元进行显示。
37.第三方面,本发明还提供了一种电子设备,包括:
38.处理器;
39.用于存储处理器可执行指令的存储器;
40.其中,处理器用于执行指令,以实现上述数据显示方法。
41.第四方面,本发明还提供了一种存储介质,当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述数据显示方法。
42.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非
限制本公开。
43.实施本公开,具有以下有益效果:
44.读取来自车载网络的显示数据并写入一级缓存区;将一级缓存区中的显示数据读入二级缓存区,二级缓存区至少包括第一缓存区和第二缓存区;第一缓存区和第二缓存区分开存储不同显示状态类型的显示数据;获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,目标缓存区为第一缓存区和第二缓存区中任一种;读取目标缓存区中的显示数据发送至数据显示单元进行显示。
45.本技术通过一级缓存和二级缓存的设置,能够将数据的读入和显示隔离,避免读入或显示时发生数据混乱;通过设置至少包括第一缓存区和第二缓存区在内的二级缓存区,实现了将不同视图状态下显示数据的分开保存;通过在数据显示单元处于不同的显示状态下,加载对应目标缓存区中的数据显示在数据显示单元,有效避免状态切换时处理线程急需处理大量缓存数据,有助于减少显示过程中的延时,减少显示窗口上卡顿或无响应现象的发生,增加了显示的流畅度和切换的顺滑度。
46.根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
47.为了更清楚地说明本技术实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
48.图1是根据一示例性实施例示出的实施环境示意图;
49.图2是根据一示例性实施例示出的一种数据显示方法的流程图;
50.图3是根据一示例性实施例示出的一种读取车载网络的显示数据并写入一级缓存区的流程图;
51.图4是根据一示例性实施例示出的一种将一级缓存区中的显示数据读入二级缓存区的流程图;
52.图5是根据一示例性实施例示出的一种对读取结果进行过滤操作及写入第二缓存区的流程图;
53.图6是根据一示例性实施例示出的一种获取数据显示单元的当前显示状态及确定目标缓存区的流程图;
54.图7是根据一示例性实施例示出的一种二级缓存示意图;
55.图8是根据一示例性实施例示出的一种数据显示装置框图;
56.图9是根据一示例性实施例示出的一种用于数据显示的电子设备的框图。
具体实施方式
57.下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清
楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
58.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
59.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
60.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
61.另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
62.相关技术中,多采用一级缓存单线程加锁的机制。定义一个数据缓冲区,用于保存车载网络输出的数据,启动一个读取线程完成这个动作;主线程从该缓冲区中读取数据,在读取过程中判定配置的过滤规则,对于满足条件的数据则依次显示到窗口视图中。当处于暂停态时,主线程停止从缓冲区中读取数据。该方案存在以下几个问题:首先,读写线程持续读入数据,同时主线程持续将数据输出到窗口视图。当主线程的过滤规则较复杂时,处理时间较长,从而效率低下。其次,对于不同的显示状态没有做区别化对待。在运行态时,主线程处理的缓存区中不断地有新的数据持续进入,这时要求的刷新速率更加严格。而一旦配置了运行态过滤规则,主线程的处理时间较长,导致cpu和内存占用过高。当在暂停态停留较长时间时,缓冲区数据越来越多,可能造成溢出的问题。特别是,当再次切换回到运行态时,主线程需要立即处理大量遗留的缓冲区数据,造成cpu和内存占用过高,甚至在显示窗口上出现卡顿或无响应的现象。
63.为了实现高效地将车载网络的数据,不卡顿地、实时显示到显示窗口中,同时不受预置过滤规则的影响,保证数据一致性,提高数据处理的灵活性和效率,最大地减少显示的延时性,本公开实施例提供一种数据显示方法。
64.请参阅图1,图1是根据一示例性实施例示出的一种应用环境的示意图,如图1所示,该应用环境可以包括服务器01和终端02。
65.在一个可选的实施例中,服务器01可以用于数据显示方法进行计算处理。具体的,服务器01可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布
式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content de l i very network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
66.在一个可选的实施例中,终端02可以结合服务器01的数据显示方法进行计算处理。具体的,终端02可以包括但不限于智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmented rea l ity,ar)/虚拟现实(vi rtua l rea l ity,vr)设备、智能可穿戴设备等类型的电子设备。可选的,电子设备上运行的操作系统可以包括但不限于安卓系统、i os系统、li nux系统、wi ndows系统、un i x系统等。
67.例如,在终端02上输入数据显示命令,服务器01获取终端02上的数据显示命令,之后读取来自车载网络的显示数据并写入一级缓存区;将一级缓存区中的显示数据读入二级缓存区,二级缓存区至少包括第一缓存区和第二缓存区;第一缓存区和第二缓存区分开存储不同显示状态类型的显示数据;获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,目标缓存区为第一缓存区和第二缓存区中任一种;读取目标缓存区中的显示数据发送至数据显示单元进行显示;最后将显示结果传输到终端02上。
68.此外,需要说明的是,图1所示的仅仅是本公开提供的一种应用环境,在实际应用中,还可以包括其他应用环境。
69.本说明书实施例中,上述服务器01以及终端02可以通过有线或无线通信方式进行直接或间接地连接,本公开在此不做限制。
70.图2是根据一示例性实施例示出的一种数据显示方法的流程图,如图2所示,数据显示方法,包括以下:
71.步骤s201:读取来自车载网络的显示数据并写入一级缓存区。
72.本公开实施例中,读取来自车载网络的显示数据并写入一级缓存区可通过定义读取线程来完成。通过读取线程从上位机中获取来自车载网络的数据,并将读取到的显示数据写入一级缓存区。在启动对数据的监控显示时启动该读取线程,将车载网络中的裸数据实时读取到一级缓存区。如图3所示,读取来自车载网络的显示数据并写入一级缓存区,包括以下步骤:
73.步骤s2011:对车载网络进行第一加锁操作,读取车载网络的显示数据。
74.本公开实施例中,对车载网络进行第一加锁操作,防止其他线程同时操作车载网络中的数据,之后,读取车载网络中的数据。可选的,对车载网络进行第一加锁操作可以是使用锁“std::mutex”进行加锁。
75.步骤s2012:将车载网络的显示数据写入一级缓存区,并对车载网络进行第一解锁操作。
76.本公开实施例中,读取车载网络的显示数据后,将读取到的车载网络的显示数据全部写入一级缓存区,写入完成后,对车载网络进行第一解锁操作。
77.基于上述可知,本公开实施例通过对车载网络进行第一加锁操作,能够防止其他线程同时操作车载网络中的数据;通过读取车载网络的显示数据,实现了对显示数据的获取;通过将车载网络的显示数据写入一级缓存区,完成了对显示数据的全量保存。
78.步骤s202:将一级缓存区中的显示数据读入二级缓存区,二级缓存区至少包括第
一缓存区和第二缓存区;第一缓存区和第二缓存区分开存储不同显示状态类型的显示数据。
79.本公开实施例中,二级缓存区的缓存区数量是由数据显示单元的显示状态决定。数据显示单元需要同时支持运行态和暂停态。运行态指显示器持续动态刷新显示数据。而暂停态指显示器不再显示新的通信数据,窗口处于静止状态,这时方便于专业人员通过滚动条手动查看历史交互数据,进一步进行数据查看及分析。在一个优选实施例中,数据显示单元的显示状态包括运行态和暂停态,相应的,二级缓存区包括第一缓存区和第二缓存区。第一缓存区用于存储运行态的显示数据,第二缓存区存储暂停态的显示数据。
80.本公开实施例中,将一级缓存区中的显示数据读入二级缓存区可通过定义缓存处理线程来完成,通过缓存处理线程将一级缓存区中的显示数据读入二级缓存区,即并行读入第一缓存区和第二缓存区。在启动对数据的监控显示时启动该缓存处理线程,将一级缓存区中的显示数据读入二级缓存区。如图4所示,将一级缓存区中的显示数据读入二级缓存区,包括以下步骤:
81.步骤s2021:对一级缓存区进行第一加锁操作,读取一级缓存区中的数据。
82.本公开实施例中,对一级缓存区进行第一加锁操作,以便缓存处理线程开始读取一级缓存区中的数据,防止其他线程同时操作一级缓存区中的数据,之后,读取一级缓存区中的数据。可选的,对一级缓存区进行第一加锁操作可以是使用锁“std::mutex”进行加锁。
83.步骤s2022:对一级缓存区进行第一解锁操作,并对读取结果进行第二加锁操作,将读取结果写入第一缓存区。
84.本公开实施例中,读取一级缓存区中的数据完成后,对一级缓存区进行第一解锁操作;对读取结果进行第二加锁操作,以便缓存处理线程开始对读取结果进行写入操作,防止其他线程同时操作读取结果,之后,将读取结果全部写入第一缓存区。可选的,对读取结果进行第二加锁操作可以是使用锁“std::mutex”进行加锁。
85.步骤s2023:对读取结果进行过滤操作,将满足预设过滤策略的过滤结果写入第二缓存区,对读取结果进行第二解锁操作。
86.基于上述可知,本公开实施例通过对一级缓存区中的数据的读取,并将读取结果写入第一缓存区,能够将数据全量保存在第一缓存区,实现了数据的全量保存;通过对读取结果进行过滤操作,并将满足预设过滤策略的过滤结果写入第二缓存区,实现了对数据的过滤,有效降低了第二缓存区的占用空间;此外,通过将数据分开保存,实现了对数据的差异化处理,为后续数据的流畅显示。
87.本公开实施例中,如图5所示,对读取结果进行过滤操作,将满足预设过滤策略的过滤结果写入第二缓存区,对读取结果进行第二解锁操作,包括以下步骤;
88.步骤s501:根据预设过滤策略对读取结果进行过滤操作,得到过滤结果。
89.本公开实施例中,根据预设过滤策略对读取结果进行过滤操作包括如:通过详细信息描述(detail view),查看报文、系统变量或环境变量的详细信息;通过统计视图(statistic view),统计选中报文中信号的最大值、最小值、平均值和出现的次数;通过差分视图(difference view),对比选中报文的差异;预定义过滤器(predefined filter),包括设置总线系统事件(bus systems)过滤器、系统变量/环境变量过滤器、系统报文(system messages)过滤器等,使窗口只显示某些类型的信息;通过分析过滤器(analysis filter),
包括通过过滤器(pass filter)和阻止过滤器(stop filter),实现只允许pass filter中的报文在窗口中显示或阻止stop filter中的报文在窗口中显示。对读取结果进行包括上述过滤方式在内的过滤操作,得到过滤结果。
90.步骤s502:响应于过滤结果不满足预设过滤策略的情况,对读取结果进行第二解锁操作。
91.本公开实施例中,当过滤结果不满足预设过滤策略时,不需要将过滤结果写入第二缓存区,因此,直接对读取结果进行第二解锁操作。
92.步骤s503:响应于过滤结果满足预设过滤策略的情况,将过滤结果写入第二缓存区。
93.本公开实施例中,当过滤结果满足预设过滤策略时,过滤结果需要在数据显示单元处于运行态时显示,因此,将过滤结果写入第二缓存区。
94.步骤s504:确定第二缓存区中的数据量。
95.本公开实施例中,确定第二缓存区中的数据量可以包括,通过统计第二缓存区中缓存的数据信息条数确定第二缓存区中的数据量。
96.步骤s505:响应于数据量不超过预设值的情况,对读取结果进行第二解锁操作,预设值小于第二缓存区的容量阈值。
97.本公开实施例中,当数据量不超过预设值时,对读取结果进行第二解锁操作。预设值需要小于第二缓存区的容量阈值,否则,在将过滤结果写入第二缓存区后会造成数据溢出。可选的,预设值可以是满足数据能够在显示单元进行滚动显示的数据量,如100条。当数据量不超过100条时,对读取结果进行第二解锁操作。
98.步骤s506:响应于数据量超过预设值的情况,删除第二缓存区中最早被写入且超出预设值的数据,并对读取结果进行第二解锁操作。
99.本公开实施例中,当数据量超过预设值时,删除第二缓存区中最早被写入且超出预设值的数据,并对读取结果进行第二解锁操作。
100.基于上述可知,本公开实施例通过对读取结果进行过滤操作,完成了对数据的筛选操作,实现了对满足预设过滤策略数据的获取;通过将满足过滤策略数据写入第二缓存区,实现了对满足预设过滤策略数据的进一步保存;通过在数据量超过预设值时,删除第二缓存区中最早被写入且超出预设值的数据,能够将第二缓存区中的数据保持在预设值范围内,有效避免第二缓存区出现数据溢出的情况,也能够保证第二缓存区不会占用过多的内存,降低处理第二缓存区数据的难度。
101.步骤s203:获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,目标缓存区为第一缓存区和第二缓存区中任一种。
102.本公开实施例中,获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,可通过定义定时器线程来完成。在启动对数据的监控显示时启动该定时器线程,基于定时器线程,获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区。如图6所示,获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,包括以下步骤:
103.步骤s2031:在数据显示单元处于暂停状态的情况下,将第一缓存区确定为目标缓存区。
104.本公开实施例中,暂停态指数据显示单元不再显示新的数据,窗口处于静止状态,这时方便于专业人员通过滚动条手动查看历史交互数据,进行数据查看及分析。第一缓存区的容量阈值大于第二缓存区,能够存储更多的数据,因此,第一缓存区被设置为存放全量的显示数据,在数据显示单元处于暂停状态的情况下,将第一缓存区确定为目标缓存区。可选的,本公开实施例还包括应用过滤策略对暂停态下显示的数据进行过滤,如筛选特定来源的报文,过滤报文i d,查看报文、系统变量或环境变量的详细信息,统计选中报文中信号的最大值、最小值、平均值和出现的次数,对比选中报文的差异等。
105.步骤s2032:在数据显示单元处于运行状态的情况下,将第二缓存区确定为目标缓存区。
106.本公开实施例中,运行态指数据显示单元持续动态刷新显示数据,第二缓存区的容量阈值小于第一缓存区,因此,第二缓存区被设置为存放仅需动态刷新显示的数据,在数据显示单元处于运行状态的情况下,将第一缓存区确定为目标缓存区。
107.在另一个实施例中,数据显示单元还可以包括弹窗态,指显示单元显示报警类弹窗信息,相应的,二级缓存区还包括第三缓存区,第三缓存区用于存储弹窗态的显示数据。在数据显示单元处于弹窗状态的情况下,将第三缓存区确定为目标缓存区。
108.步骤s204:读取目标缓存区中的显示数据发送至数据显示单元进行显示。
109.本公开实施例中,通过定时器线程,读取目标缓存区中的显示数据发送至数据显示单元进行显示,包括以下步骤:
110.步骤s2041:在目标缓存区为第一缓存区的情况下,对第一缓存区进行第二加锁操作,读取第一缓存区中的数据。
111.本公开实施例中,在目标缓存区为第一缓存区的情况下,对第一缓存区进行第二加锁操作,防止其他线程同时操作第一缓存区中的数据,之后,读取第一缓存区中的数据。可选的,对第一缓存区进行第二加锁操作以是使用锁“std::mutex”进行加锁。
112.步骤s2042:对第一缓存区进行第二解锁操作,将读取结果显示在数据显示单元。
113.本公开实施例中,对第一缓存区进行第二解锁操作,将第一缓存区中的全部数据写入并显示在数据显示单元。数据显示单元在不同的桌面应用框架会有所不同,例如,在qt应用开发框架中,它是mv(model-view)中的m(model)组件。可选的,本公开实施例还包括应用过滤策略对暂停态下显示的数据进行过滤,如筛选特定来源的报文,过滤报文i d,查看报文、系统变量或环境变量的详细信息,统计选中报文中信号的最大值、最小值、平均值和出现的次数,对比选中报文的差异等。
114.基于上述可知,本公开实施例通过在数据显示单元处于暂停状态的情况下,将与之对应的第一缓存区中的数据显示在数据显示单元,实现了对数据的监控显示;通过读取第一缓存区中的数据,并将读取结果写入数据显示单元,实现了对数据的全量读取及显示,避免了数据的丢失,有助于在暂停态下监控分析更加全面的数据。
115.步骤s2043:在目标缓存区为第二缓存区的情况下,每间隔预设时间,对第二缓存区进行第二加锁操作,读取第二缓存区中的数据。
116.本公开实施例中,在目标缓存区为第二缓存区的情况下,每间隔预设时间,如40毫
秒~50毫秒,对第二缓存区进行第二加锁操作,防止其他线程同时操作第二缓存区中的数据,之后,读取第二缓存区中的数据。可选的,对第二缓存区进行第二加锁操作以是使用锁“std::mutex”进行加锁。
117.步骤s2044:对第二缓存区进行第二解锁操作,将读取结果显示在数据显示单元。
118.本公开实施例中,对第二缓存区进行第二解锁操作,将第二缓存区中的数据全部写入并显示在数据显示单元。例如,在数据显示单元处于运行状态的情况下,每间隔50毫秒,对第二缓存区进行第二加锁操作,读取第二缓存区中的数据,读取完成后,对第二缓存区中的数据进行第二解锁操作,将第二缓存区中的100条数据写入并滚动显示在数据显示单元。
119.上述公开实施例中,第一缓存区和第二缓存区均为二级缓存区,对于同一级的缓存区的数据进行的加锁或解锁,是通过同一个锁来控制的,即每一级缓存区对应一个锁。不同线程处理同一级缓存区的数据时,加锁或解锁的是同一个锁。
120.基于上述可知,本公开实施例通过在数据显示单元处于运行状态的情况下,将与之对应的第二缓存区中的数滚动显示在数据显示单元,实现了对数据的动态监控;通过每间隔预设时间,读取第二缓存区中的数据,并写入数据显示单元,实现了在不影响显示效果的前提下,仅处理第二缓存区中的少量数据,提高了数据的处理效率,有效减少了卡顿现象的发生,提升显示过程的流畅度。
121.上述实施例中,本公开通过定义读取线程、缓存处理和定时器线程,将数据的读取、缓存和显示分由不同线程处理,分工明确,大大提升了数据显示的处理效率;通过获取数据显示单元的视图状态,并将对应缓存区的数据显示在显示单元,避免了状态切换时对大量新写入数据的处理,状态切换时,仅需在第一缓存区和第二缓存区之间进行切换,无需进行额外操作,有效提高了显示效率,降低处理延时,增加了切换过程的顺滑度;通过对读取结果进行过滤操作,并将满足预设过滤策略的过滤结果写入第二缓存区,实现了对数据的过滤,有效降低了第二缓存区的占用空间;通过在数据量超过预设值时,删除第二缓存区中最早被写入且超出预设值的数据,能够将第二缓存区中的数据保持在预设值范围内,有效避免第二缓存区出现数据溢出的情况,也能够保证第二缓存区不会占用过多的内存,降低处理第二缓存区数据的压力;通过每间隔预设时间,读取第二缓存区中的数据,并写入数据显示单元,实现了在不影响显示效果的前提下,仅处理第二缓存区中的少量数据,提高了数据的处理效率,有效减少了卡顿现象的发生,提升显示过程的流畅度。
122.在一个具体的实施方式中,本公开实施例中的技术方案实施过程如下:
123.如图7所示,在一个优选的实施例中,定义读取线程、缓存处理线程、定时器线程以及两级缓存区。一级缓存区为一个;二级缓存为至少两个,包括第一缓存区和第二缓存区。读取线程用于获取来自车载网络的数据,将读取结果写入一级缓存区,在启动对数据的监控显示时启动该读取线程。缓存处理线程用于从一级缓存区中获取数据,并将数据实时并行读入两个二级缓存区,即第一缓存区和第二缓存区,在启动对数据的监控显示时启动该缓存处理线程。定时器线程用于获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,目标缓存区为第一缓存区和第二缓存区中任一种,读取目标缓存区中的显示数据发送至数据显示单元进行显示。在启动对数据的监控显示时启动定时器线程,获取数据显示单元的视图状态,并根据数据显示单元的
视图状态,将对应缓存区中的数据显示在数据显示单元。
124.图8是根据一示例性实施例示出的一种数据显示装置框图。参照图8,该装置包括数据读取模块801、数据写入模块802、目标缓存区确定模块803和显示模块804,其中,
125.数据读取模块801,用于读取来自车载网络的显示数据并写入一级缓存区;
126.数据写入模块802,用于将一级缓存区中的显示数据读入二级缓存区,二级缓存区至少包括第一缓存区和第二缓存区;第一缓存区和第二缓存区分开存储不同显示状态类型的显示数据;
127.目标缓存区确定模块803,用于获取数据显示单元的当前显示状态,从二级缓存区中确定存储有与当前显示状态对应的显示数据的目标缓存区,目标缓存区为第一缓存区和第二缓存区中任一种;
128.显示模块804,用于读取目标缓存区中的显示数据发送至数据显示单元进行显示。
129.在一个可选的实施例中,上述数据读取模块801,包括:
130.车载网络加锁模块,用于对车载网络进行第一加锁操作,读取车载网络的显示数据;
131.车载网络解锁模块,用于将车载网络的显示数据写入一级缓存区,并对车载网络进行第一解锁操作。
132.在一个可选的实施例中,上述数据写入模块802,包括:
133.一级缓存区加锁模块,用于对一级缓存区进行第一加锁操作,读取一级缓存区中的数据;
134.一级缓存区解锁模块,用于对一级缓存区进行第一解锁操作,并对读取结果进行第二加锁操作,将读取结果写入第一缓存区;
135.过滤模块,用于对读取结果进行过滤操作,将满足预设过滤策略的过滤结果写入第二缓存区,对读取结果进行第二解锁操作。
136.在一个可选的实施例中,第二缓存区的容量阈值小于第一缓存区,上述过滤模块,包括:
137.过滤子模块,用于根据预设过滤策略对读取结果进行过滤操作,得到过滤结果;
138.第一读取结果解锁模块,用于响应于过滤结果不满足预设过滤策略的情况,对读取结果进行第二解锁操作;
139.过滤结果写入模块,用于响应于过滤结果满足预设过滤策略的情况,将过滤结果写入第二缓存区;
140.数据量确定模块,用于确定第二缓存区中的数据量;
141.第二读取结果解锁模块,用于响应于数据量不超过预设值的情况,对读取结果进行第二解锁操作,预设值小于第二缓存区的容量阈值;
142.第三读取结果解锁模块,用于响应于数据量超过预设值的情况,删除第二缓存区中最早被写入且超出预设值的数据,并对读取结果进行第二解锁操作。
143.在一个可选的实施例中,上述显示模块804,包括:
144.第一缓存区读取模块,用于在目标缓存区为第一缓存区的情况下,对第一缓存区进行第二加锁操作,读取第一缓存区中的数据;
145.第一显示模块,用于对第一缓存区进行第二解锁操作,将读取结果显示在数据显
示单元。
146.在一个可选的实施例中,上述显示模块804,还包括:
147.第二缓存区读取模块,用于在目标缓存区为第二缓存区的情况下,每间隔预设时间,对第二缓存区进行第二加锁操作,读取第二缓存区中的数据;
148.第二显示模块,用于对第二缓存区进行第二解锁操作,将读取结果显示在数据显示单元。
149.在一个可选的实施例中,上述目标缓存区确定模块803,包括:
150.暂停态模块,用于在数据显示单元处于暂停状态的情况下,将第一缓存区确定为目标缓存区;
151.运行态模块,用于在数据显示单元处于运行状态的情况下,将第二缓存区确定为目标缓存区。
152.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
153.在示例性实施例中,还提供了一种电子设备,包括:处理器;用于存储该处理器可执行指令的存储器;其中,该处理器用于该指令,以实现如本公开实施例中的数据显示方法。
154.图9是根据一示例性实施例示出的一种用于数据显示的电子设备的框图,该电子设备可以是终端,其内部结构图可以如图9所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据显示方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
155.本领域技术人员可以理解,图9中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
156.在示例性实施例中,还提供了一种存储介质,当该存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例中的数据显示方法。
157.在示例性实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本公开实施例中的数据显示方法。
158.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本公开所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,
诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synch l i nk)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
159.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
160.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献