一种基于订阅发布模式的数据处理方法、装置、电子设备及存储介质制造方法及图纸

技术编号:32970812 阅读:29 留言:0更新日期:2022-04-09 11:36
本申请涉及一种基于订阅发布模式的数据处理方法、装置、电子设备及存储介质,包括获取至少一个发布端发送的数据,将数据写入与至少一个发布端一一对应的至少一个第一存放区,对每个第一存放区的数据进行复制,将复制得到的数据分别写入与多个订阅端一一对应的多个第二存放区。基于本申请实施例可以实现基于订阅发布模式的汽车总线消息数据处理,以实现实时高效地从多个接口卡输入设备中读取总线消息数据,并同步地以各种形式显示到多个独立的监控窗口中,无需额外加锁,保证实时性和数据一致性,提高效率性和层级间的隔离性,有利于实现对总线通信数据的相关分析。现对总线通信数据的相关分析。现对总线通信数据的相关分析。

【技术实现步骤摘要】
一种基于订阅发布模式的数据处理方法、装置、电子设备及存储介质


[0001]本专利技术涉及汽车总线
,尤其涉及一种基于订阅发布模式的数据处理方法、装置、电子设备及存储介质。

技术介绍

[0002]在现代汽车系统中,存在多个电子控制单元,负责各自电气子系统功能单元,如防抱死系统、引擎管理系统等,这些子系统之间的通信依赖于汽车总线。目前较常用总线包括控制器域网(Controller Area Network,CAN)、内部互联网(Local Interconnect Network,LIN)、面向媒体的系统传输(Media Oriented System Transport,MOST)和以太网(Ethernet)等,这些总线的带宽和成本各异,通信方式及标准协议也不相同。
[0003]随着现代汽车元器件的多样性及总线网络拓扑的复杂性,对总线网络进行实时监控和分析、网络仿真、测试、故障诊断、面板设计等对汽车的电子控制单元研发以及整车故障诊断具有重要意义。其中,以实时监控的功能为例,为了达到监控的目的,需要硬件部分和软件部分,硬件部分指接口卡设备,将从总线网络接收到的数据放入缓冲区,软件部分则是用于管理接口卡设备,硬件接口卡与总线分析系统的监控窗口实例之间进行消息传递,将接口卡缓冲区中的数据接收并显示成表格或图形化形式。现有技术中,通常将每个通道的总线消息数据写入到一块缓存,为每个通道输入启动一个独立的线程;而每个功能对应的窗口直接读取这块缓存,为每个窗口启动一个独立线程用于接收数据。对于同一数据缓存进行写入和读取的多线程持续并行的处理方式,会出现线程之间的冲突,为了保证缓存数据的一致性,只能有一个线程访问该数据,则需要在每次写入或读取的时候加互斥锁,操作结束再进行解锁。
[0004]然而,对于多个监控窗口和至少一路接口卡通道,加锁次数是二者数量乘积的整数倍数,当每增加一个窗口或一个通道,加锁次数都是成倍增加,效率较低。且接口卡通道作为输入层,监控窗口作为输出层,两者之间的交互过于透明化,不够隔离,对于每块缓存,其数据都是由监控窗口直接读取,任何一方的变化都造成另一方的修改,不便于扩展。

技术实现思路

[0005]本申请实施例提供了一种基于订阅发布模式的数据处理方法、装置、电子设备及存储介质,通过将发布端数据存放区域与订阅端数据获取区域隔离,采用一个独立的线程将每个第一存放区的数据复制到第二存放区,保证了两者的独立性,避免了读取或写入数据时多线程之间的竞争导致的加锁操作,提高总线分析工具的数据处理效率,使任何一方数据的变化不会使另一方数据立刻修改。
[0006]本申请实施例提供了一种基于订阅发布模式的数据处理方法,该方法包括:
[0007]获取至少一个发布端发送的数据;
[0008]将数据写入与至少一个发布端一一对应的至少一个第一存放区;
[0009]对每个第一存放区的数据进行复制;
[0010]将复制得到的数据分别写入与多个订阅端一一对应的多个第二存放区。
[0011]进一步地,该方法还包括:
[0012]确定发布端的第一数量;
[0013]创建第一数量的第一存放区;
[0014]确定订阅端的第二数量;
[0015]创建第二数量的第二存放区。
[0016]进一步地,该方法还包括:
[0017]基于至少一个第一存放区确定至少一个第一队列;至少一个第一存放区和至少一个第一队列一一对应;
[0018]基于多个第二存放区确定多个第二队列;多个第二存放区和多个第二队列一一对应;
[0019]第一队列与第二队列为循环队列;
[0020]循环队列为定长数组。
[0021]进一步地,对每个第一存放区的数据进行复制,包括:
[0022]确定至少一个第一队列中每个第一队列的第一队头区域;
[0023]若第一队头区域存在数据,获取数据;
[0024]将第一队头区域后移一个数据单元。
[0025]进一步地,将复制得到的数据分别写入与多个订阅端一一对应的多个第二存放区,包括:
[0026]确定多个第二队列中每个第二队列的第二队尾区域;
[0027]若第二队尾区域为空,将数据写入第二队尾区域;
[0028]将第二队尾区域后移一个数据单元。
[0029]相应地,本申请实施例还提供了一种数据处理装置,该装置包括:
[0030]数据获取模块,用于获取至少一个发布端发送的数据;
[0031]第一存放区写入模块,用于将数据写入与至少一个发布端一一对应的至少一个第一存放区;
[0032]数据复制模块,用于对每个第一存放区的数据进行复制;
[0033]第二存放区写入模块,用于将复制得到的数据分别写入与多个订阅端一一对应的多个第二存放区。
[0034]进一步地,该装置还包括:
[0035]第一数量确定模块,用于确定发布端的第一数量;
[0036]第一存放区创建模块,用于基于第一数量创建第一数量的第一存放区;
[0037]第二数量确定模块,用于确定订阅端的第二数量;
[0038]第二存放区创建模块,用于基于第二数量创建第二数量的第二存放区。
[0039]进一步地,该装置还包括:
[0040]第一队列确定模块,用于基于至少一个第一存放区确定至少一个第一队列;第一存放区与第一队列一一对应;
[0041]第二队列确定模块,用于基于多个第二存放区确定多个第二队列;第二存放区与
第二队列一一对应。
[0042]进一步地,数据复制模块,用于:
[0043]确定至少一个第一队列中每个第一队列的第一队头区域;
[0044]若第一队头区域存在数据,获取数据;
[0045]将第一队头区域后移一个数据单元。
[0046]进一步地,第二存放区写入模块,用于:
[0047]确定多个第二队列中每个第二队列的第二队尾区域;
[0048]若第二队尾区域为空,将数据写入第二队尾区域;
[0049]将第二队尾区域后移一个数据单元。
[0050]相应地,本申请实施例还提供了一种电子设备,该电子设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述的数据处理方法。
[0051]相应地,本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述的数据处理方法。
[0052]采用上述技术方案,本专利技术具有如下有益效果:
[0053](1)将订阅发布模式应用到汽车总线监控分析中数据流的处理中,分别设置通道对应的第一存放区与窗口对应的第二存放区,将通道对应的数据缓存区与窗口对应的数据缓存区隔离,应用该模式,可以有效地使监控本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于订阅发布模式的数据处理方法,其特征在于,包括:获取至少一个发布端发送的数据;将所述数据写入与所述至少一个发布端一一对应的至少一个第一存放区;对每个所述第一存放区的所述数据进行复制;将复制得到的所述数据分别写入与多个订阅端一一对应的多个第二存放区。2.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:确定所述发布端的第一数量;创建所述第一数量的所述第一存放区;确定所述订阅端的第二数量;创建所述第二数量的所述第二存放区。3.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:基于所述至少一个第一存放区确定至少一个第一队列;所述至少一个第一存放区和所述至少一个第一队列一一对应;基于所述多个第二存放区确定多个第二队列;所述多个第二存放区和所述多个第二队列一一对应;所述第一队列与所述第二队列为循环队列;所述循环队列为定长数组。4.根据权利要求3所述的数据处理方法,其特征在于,所述对每个所述第一存放区的所述数据进行复制,包括:确定所述至少一个第一队列中每个第一队列的第一队头区域;若所述第一队头区域存在所述数据,获取所述数据;将第一队头区域后移一个数据单元。5.根据权利要求3所述的数据处理方法,其特征在于,所述将复制得到的所述数据分别写入与多个订阅端一一对应的多个所述第二存放区,包括:确定所述多个第二队列中每个第二队列的第二队尾区域;若所述第二队尾区域为空,将所述数据写入所述第二队尾区域;将所述第二队尾区域后移一个数据单元。6.一种数据处理装置,其特征在于,包括:数据获取模块,用于获取至少一个发布端发送的数据;第一存放区写入模块,...

【专利技术属性】
技术研发人员:秦民张媛花子岚
申请(专利权)人:中汽创智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1