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

一种报文模板的生成方法、装置及电子设备

文献发布时间:2024-04-18 19:58:30


一种报文模板的生成方法、装置及电子设备

技术领域

本申请涉及车联网技术领域,尤其涉及一种报文模板的生成方法、装置及电子设备。

背景技术

在车联网技术领域中,当车辆交付给客户之后,基于远程服务提供商(TelematicsService Provider,TSP)云端,客户可以通过应用程序(Application,App)等终端对车辆进行控制,同时获取车辆的实时状态。

具体地,客户可以通过App与TSP云端进行双向通信,然后TSP云端和车辆也可以进行双向通信,从而实现客户与车辆之间的通信。当TSP云端接收到客户使用的App下发的下发指令后,基于该下发指令生成格式化的指令报文,然后将该指令报文发送给车辆。接着,车辆接收指令报文,并基于该指令报文执行相应的操作。同时,车辆会根据执行结果生成格式化的响应报文,并将该响应报文上传至TSP云端。从而客户可以通过App获取TSP云端所接收的响应报文,以获取车辆的实时状态。

目前,在TSP云端和车辆进行双向通信的过程中,在将指令或者信息封装为格式化的报文时,普遍为一条指令或者一种信息对应一种报文模板。则导致报文模板过多,从而导致报文模板的维护难度增加。

发明内容

本申请提供了一种报文模板的生成方法、装置及电子设备,用以解决报文模板过多,难以维护的问题。具体实现方案如下:

第一方面,本申请提供了一种报文模板的生成方法,所述方法包括:

基于车辆的多个组件各自对应的层级结构,以及所述层级结构中组件参数各自对应的标识信息,生成第一报文体模板;

将每一个所述组件参数各自对应的属性信息,添加至所述第一报文体模板,得到第二报文体模板;

基于所述第二报文体模板,以及所述第二报文体模板关联的报文头模板,生成报文模板。

通过上述申请实施例,基于车辆的多个组件各自对应的组件标识,生成了第一报文体模板;并通过各个组件各自对应的属性信息,补充了第一报文体模板的细节,得到了第二报文体模板;再基于该第二报文体模板,以及该第二报文体模板关联的报文头模板,生成了最终的报文模板。通过该方式,将面向过程的报文模板(即一条指令或一种信息对应一个报文模板)转化了面向对象的报文模板(即基于车辆的层级结构得到报文模板),减少了报文模板的数量,并减轻了报文模板的维护难度。并且,通过车辆的层级结构得到的报文模板,使得报文模板从单纯的通信载体转化为了车辆的能力集合,具有极强的弹性。

在一种可能的实施方式中,所述属性信息包括所述组件参数对应的默认状态值、所述默认状态值所对应的数值类型以及状态值选项信息中的一种或多种,则所述将每一个所述组件参数各自对应的属性信息,添加至所述第一报文体模板,得到第二报文体模板,包括:

确定每一个所述组件参数各自对应的所述默认状态值、所述数值类型、所述状态值选项信息中的一种或多种,得到每一个所述组件参数各自对应的所述属性信息;

基于所述属性信息与所述组件参数的对应关系,将每一个所述属性信息添加至所述第一报文体模板,得到所述第二报文体模板。

在一种可能的实施方式中,在所述生成报文模板之后,还包括:

获取目标参数对应的目标状态值;其中,所述目标参数为一个或多个所述组件参数,且所述目标参数为所述车辆与云端之间传输的信息或指令各自对应的参数;

将所述目标状态值填充至所述报文模板中对应位置,生成目标报文。

在一种可能的实施方式中,所述报文头模板包括关键信息与额外信息;其中,所述关键信息包括生成目标报文的时间戳、所述目标报文对应的数据类型、所述目标报文对应的版本、所述目标报文的创建者以及所述目标报文的补充信息,所述额外信息包括所述目标报文的来源地。

第二方面,本申请还提供了一种报文模板的生成装置,所述装置包括:

第一生成模块,用于基于车辆的多个组件各自对应的层级结构,以及所述层级结构中组件参数各自对应的标识信息,生成第一报文体模板;

第二生成模块,用于将每一个所述组件参数各自对应的属性信息,添加至所述第一报文体模板,得到第二报文体模板;

处理模块,用于基于所述第二报文体模板,以及所述第二报文体模板关联的报文头模板,生成报文模板。

在一种可能的实施方式中,所述属性信息包括所述组件参数对应的默认状态值、所述默认状态值所对应的数值类型以及状态值选项信息中的一种或多种,则所述第二生成模块,具体用于确定每一个所述组件参数各自对应的所述默认状态值、所述数值类型、所述状态值选项信息中的一种或多种,得到每一个所述组件参数各自对应的所述属性信息;基于所述属性信息与所述组件参数的对应关系,将每一个所述属性信息添加至所述第一报文体模板,得到所述第二报文体模板。

在一种可能的实施方式中,所述处理模块,具体用于获取目标参数对应的目标状态值;其中,所述目标参数为一个或多个所述组件参数,且所述目标参数为所述车辆与云端之间传输的信息或指令各自对应的参数;将所述目标状态值填充至所述报文模板中对应位置,生成目标报文。

在一种可能的实施方式中,所述报文头模板包括关键信息与额外信息;其中,所述关键信息包括生成目标报文的时间戳、所述目标报文对应的数据类型、所述目标报文对应的版本、所述目标报文的创建者以及所述目标报文的补充信息,所述额外信息包括所述目标报文的来源地。

第三方面,本申请提供了一种电子设备,包括:

存储器,用于存放计算机程序;

处理器,用于执行所述存储器上所存放的计算机程序时,实现上述的一种报文模板的生成方法步骤。

第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述的一种报文模板的生成方法步骤。

附图说明

图1为本申请实施例提供的一种报文模板的生成方法的流程图;

图2为本申请实施例提供的报文模板的生成方法的处理过程示意图;

图3为本申请实施例提供的一种报文模板的生成装置的示意图;

图4为本申请提供的一种电子设备示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本申请的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。A与B连接,可以表示:A与B直接连接和A与B通过C连接这两种情况。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

下面结合附图,对本申请实施例进行详细描述。

当前,在TSP云端和车辆的双向通信过程中,发送一条指令或发送一种信息所对应的目标报文时,就需要一种报文模板,则存在报文模板过多,且报文模板难以维护的问题。

因此,本申请提出了一种报文模板的生成方法,首先通过车辆的多个组件各自对应的层级结构,以及层级结构中组件参数各自对应的标识信息,生成第一报文体模板;再将每一个层级结构中的每一个组件参数各自对应的属性信息,添加至该第一报文体模板,得到第二报文体模板;最后基于该第二报文体模板,以及该第二报文体模板关联的报文头模板,生成报文模板。因此,基于车辆中组件的层级结构来定义报文模板,使得该报文模板具有极强的弹性,不同的指令或信息可以共用该报文模板,减少了报文模板数量,并减小了报文模板的维护难度。

参照图1所示为本申请实施例提供的一种报文模板的生成方法流程图,该方法包括:

S1,基于车辆的多个组件各自对应的层级结构,以及层级结构中组件参数各自对应的标识信息,生成第一报文体模板。

在本申请实施例中,在生成第一报文体模板时,是采用面向对象的方式对车辆结构进行软件化的定义,即,基于车辆的多个组件各自对应的层级结构,以及层级结构中组件参数各自对应的标识信息,生成第一报文体模板。其中,层级结构是车辆中组件自身的层级结构;组件参数对应的标识信息可以是组件参数的名称或代码。

因此,在一种可能的实施方式中,在生成第一报文体模板时,首先确定车辆的多个组件。再确定各个组件自身的层级结构,每一个层级结构中各个组件参数,以及每一个组件参数各自对应的标识信息。然后,根据预设顺序依次排列各个组件各自对应的层级结构,以及层级结构中每一个组件参数各自对应的标识信息,生成第一报文体模板。

上述预设顺序可以是车辆中多个组件之间的逻辑顺序,也可以是多个组件在车辆中从前到后或从上到下的顺序,在本申请实施例中,可以根据具体的应用场景来调整具体的预设顺序。

举例来说,在车辆的多个组件中,车辆作为最高层次,下辖各个组件。其中,车辆中的组件包含电池组件。在该车辆中,电池组件又包含了主电池和备份电池,则电池组件所对应的层级结构为主电池与备份电池。该层级结构中主电池与备份电池均包含了如下组件参数:荷电状态、电荷电平、健康状况、功率电平、能量级以及电压。其中,组件参数荷电状态所对应的标识信息为荷电状态(即表1中State of Charge),组件参数电荷电平所对应的标识信息为电荷电平(即表1中Charge Level),组件参数健康状况所对应的标识信息为健康状况(即表1中State of Health),组件参数功率电平所对应的标识信息为功率电平(即表1中Power Level),组件参数能量级所对应的标识信息为能量级(即表1中Energy Level),组件参数电压所对应的标识信息为电压(即表1中Voltage)。则基于该主电池、备份电池的层级结构,以及主电池和备份电池中各组件参数所对应的标识信息,得到的第一报文体模板如下表1所示:

表1第一报文体模板示意表一

在表1中,Battery表示车辆(即Vehicle)中的电池组件,Main battery与Backupbattery表示电池组件的自身层级结构中的主电池与备份电池。

再比如,车辆中多个组件包括:序列(即表2中Serial)组件、模型(即表2中Model)组件、引擎(即表2中Engine)组件、电池(即表2中Battery)组件、后备箱(即表2中Trunk)组件以及引擎盖(即表2中Hood)组件。且序列组件、模型组件、引擎组件、电池组件、后备箱组件、引擎盖组件均只包含一层层级结构,该层级结构中每一个组件参数各自对应的标识信息为该组件参数的名称。则基于该层级结构以及层级结构中每一个组件参数各自对应的标识信息,得到的第一报文体模板如下表2所示。

表2第一报文体模板示意表二

由于云端向车辆下发的任何指令最终都可以映射到车辆中的组件对应的组件参数所对应的状态值;同样地,车辆向云端上传的任何信息也是车辆中的组件对应的组件参数所对应的状态值集合。因此,通过上述面向对象的软件化方式来得到第一报文体模板,可以展现车辆的能力集合。其中,车辆的能力集合为车辆的组件所对应的状态值集合。该能力集合的集中表现为,为驾驶员和乘客提供出行服务以及相关其他服务(比如空调等)。从而基于该能力集合,可以达到用数字化来准确描述现实物质的目的。

并且,在一定的时空范围内,车辆的物理结构相对稳定,即车辆的多个组件相对稳定,则车辆的能力集合也相对稳定。因此,基于车辆的能力集合,还可以组合出新功能;并基于该能力集合以及该新功能,确定出该新功能所对应的状态值集合。

举例来说,当车辆需要向云端上报电池与后备箱信息时,现有技术是分别上传电池信息的相关报文以及后备箱信息的相关报文。而基于上述第一报文体模板得到的报文模板,可以在同一个报文中添加电池信息与后备箱信息。从而在上传报文时只需上传一个报文即可,减少了报文的上传次数。

此外,在通过面向对象的软件化方式来得到第一报文体模板时,还可以从车辆的能力集合中,抽取出多个目标能力,并将该目标能力作为目标车型或目标品牌的基础能力集合,从而基于该基础能力集合形成第三报文体模板,进一步地减轻对报文模板的维护难度和管理难度,使得该维护与管理更具清晰性。

S2,将每一个组件参数各自对应的属性信息,添加至第一报文体模板,得到第二报文体模板。

在步骤S1根据车辆的多个组件各自对应层级结构,以及层级结构中组件参数各自对应的标识信息,生成第一报文体模板后,再将每一个组件参数各自对应的属性信息,添加至第一报文体模板,得到第二报文体模板。

其中,属性信息包括组件参数所对应的默认状态值、默认状态值所对应的数值类型以及状态值选项信息中的一种或多种。

因此,在一种可能的实施方式中,在将每一个组件参数各自对应的属性信息,添加至第一报文体模板,得到第二报文体模板时,首先,确定每一个组件参数各自对应的默认状态值、数值类型、状态值选项信息中的一种或多种,得到每一个组件参数各自对应的属性信息。然后,基于该属性信息与组件参数的对应关系,将每一个属性信息添加至第一报文体模板,得到第二报文体模板。

当组件参数对应的属性信息包含状态值选项信息时,在该状态值选项信息中,添加每一个组件参数对应的每一类状态值的各个预设状态值,以便于在后续生成目标报文时,可以直接基于该状态值选项信息中各类状态值的各个预设状态值来确定目标报文中的部分内容。

举例来说,如下表3第二报文体模板示意表一所示,以车辆中的引擎组件为例,该引擎组件的层级结构只有一层,即引擎。在该引擎组件所对应的层级结构中,组件参数包含运行状态(即表3中Running Status)、锁定状态(即表3中Blocked Status)。

表3第二报文体模板示意表一

在表3中,运行状态所对应的属性信息为状态值选项信息,锁定状态所对应的属性信息也为状态值选项信息。该运行状态包含两个类型的状态值,分别为编码Code,以及状态值描述性信息Desc。该Code对应的预设状态值分别为0与1;Desc对应的预设状态值分别为ON与OFF。其中,Code为0与Desc为ON为一组预设状态值,该组预设状态值表示引擎的运行状态为开。Code为1与Desc为OFF为一组预设状态值,该组预设状态值表示引擎的运行状态为关。

同样地,锁定状态也包含两个类型的状态值,分别为编码Code,以及状态值描述性信息Desc。该Code对应的预设状态值分别为0与1;Desc对应的预设状态值分别为Unblocked与Blocked。其中,COde为0与Desc为Unblocked为一组预设状态值,该组预设状态值表示引擎的锁定状态为未锁定。Code为1与Desc为Blocked为一组预设状态值,该组预设状态值表示引擎的锁定状态为锁定。

当组件参数所对应的属性信息包含默认状态值时,如下表4所示,以车辆中的引擎组件为例,该引擎组件所对应的层级结构中,组件参数包含运行状态(即表4中RunningStatus)、锁定状态(即表4中Blocked Status)。

表4第二报文体模板示意表二

在表4中,该运行状态所对应的属性信息为默认状态值,该锁定状态所对应的属性信息也为默认状态值。其中,运行状态所对应的默认状态值为:Code为0,Desc为ON,该组默认状态值表示引擎的默认运行状态为开。锁定状态所对应的默认状态值为:COde为0,Desc为Unblocked,该组默认状态值表示引擎的默认锁定状态为未锁定。

需要说明的是,在本申请实施例中,组件参数所对应的默认状态值,可以是该组件参数所对应的状态值选项信息中的一组预设状态值。在本申请实施例中,可以根据具体的应用场景来调整组件参数所对应的默认状态值与状态值选项信息。

当组件参数所对应的属性信息包含数值类型时,如下表5所示,以车辆中电池组件中的组件参数电压为例,该电压所对应的属性信息为数值类型。

表5第二报文体模板示意表三

在表5中,Int表示整数类型,则电池组件中参数电压(即Voltage)所对应的数值类型为整数类型。

当组件参数所对应的属性信息包含默认状态值、数值类型、状态值选项信息中的多种时,如下表6所示,以车辆中电池组件为例。该电池组件所对应的组件参数为荷电状态(即State of Charge)、电荷电平(Charge Level)、健康状况(State of Health)、功率电平(即Power Level)、能量级(Energy Level)以及电压(即Voltage)。

表6第二报文体模板示意表四

在表6中,荷电状态、健康状况、功率电平以及能量级所对应的属性信息包含默认状态值,且功率电平所对应的属性信息除了包含默认状态值还包含了数值类型;电荷电平、电压所对应的属性信息包含数值类型。

因此,基于组件参数所对应的属性信息与组件参数的对应关系,将该属性信息添加至第一报文体模板中的对应位置,得到了如表3、表4、表5、表6所示的第二报文体模板。该属性信息可以设置为组件参数所对应的默认状态值、数值类型、状态值选项信息中的一种或多种。

通过上述方式,即使车辆的组件众多,每一个组件所对应的属性信息众多,导致了报文模板的内容众多以及体量大(即字段量大),在上述第二报文体模板的管理下,整个报文模板的结构也非常清晰,从而降低了后续报文模板的使用和管理的难度。

S3,基于第二报文体模板,以及第二报文体模板关联的报文头模板,生成报文模板。

在步骤S2得到第二报文体模板之后,获取该第二报文体模板关联的报文头模板。然后,基于该报文头模板与该第二报文体模板,生成报文模板。

上述在获取第二报文体模板关联的报文头模板之前,首先生成报文头模板。

在一种可能的实施方式中,在生成报文头模板时,先获取报文头的多个报文头参数各自对应的标识信息,然后基于多个报文头参数各自对应的标识信息,以及每一个报文头参数各自对应的属性信息,生成报文头模板。该报文头参数所对应的属性信息也是该报文头参数所对应的默认状态值、默认状态值所对应的数值类型以及状态值选项信息中的一种或多种。最优地,报文头参数所对应的属性信息为数值类型。

在本申请实施例中,上述报文头的多个报文头参数可为车辆同云端之间传输的各个目标报文所对应的报文头中的通用参数。则该报文头参数至少包含关键信息与额外信息,其中,关键信息包括生成目标报文的时间戳、目标报文对应的数据类型、目标报文对应的版本、目标报文的创建者以及目标报文的补充信息,额外信息包括目标报文的来源地。然后,基于该报文头参数,可生成如下表7所示的报文头模板。

表7报文头模板示意表

在上述表7中,Header表示报文头,Timestamp表示生成目标报文的时间戳,ServiceID表示目标报文对应的数据类型,ServiceName表示目标报文的补充信息,Version表示目标报文对应的版本,Creator表示目标报文的创建者,Source表示目标报文的来源地,Long表示长整型,String表示字符串。

其中,时间戳Timestamp可以用于车辆或云端中的程序对目标报文进行判断并处理或者对目标报文所对应的数据进行回溯。比如,云端向车辆发送了一个基于上述报文头模板得到的目标报文,该目标报文所对应的时间戳为第一时间点。而车辆在接收该目标报文的时间为第二时间点。且该第一时间点与第二时间点之间的时间差超过了预设时间差。则车辆确定该目标报文失效,拒绝基于该目标报文执行相应操作。

数据类型ServiceID包括指令类型、信息类型。比如,数据类型ServiceID所对应的状态值为“78”;则基于该数据,可确定目标报文所对应的数据类型为信息类型,且该信息类型具体含义为:上报电池状态。再比如,数据类型ServiceID所对应的状态值为“53”;则基于该数据,可确定目标报文所对应的数据类型为信息类型,且该信息类型具体含义为:远程关车门。因此,接收方可以根据该数据类型ServiceID所对应的状态值确定相应内容或执行相应操作。

补充信息ServiceName为数据类型ServiceID的补充信息,并与其配对。该补充信息ServiceName,可用于补充描述指令类型或者信息类型的具体信息。并且,该补充信息ServiceName与数据类型ServiceID可形成键值对:。其中,Int表示数据类型ServiceID所对应的状态值的数值类型为Int,String表示补充信息ServiceName所对应的状态值的数值类型为String。从而基于该键值对,可以更加准确地确定目标报文所对应的指令或者信息的具体类型。比如,该键值对为:。则根据该键值可以确定目标报文所对应的数据类型为信息类型,且该信息类型具体为:上报电池状态。因此,通过该键值对,进一步地增加了目标报文的可阅读性。

版本Version也可以形成相应的键值对:,其中,Program表示版本Version所对应的状态值。因此,目标报文的接收方可以基于该键值对中的Program(即对应的状态值)确定目标报文的具体版本,从而可以根据该版本指定相应的程序逻辑来处理该目标报文。通过该方式,即使版本Version随着车辆的车型进行更新,云端也可以基于该版本Version所对应的状态值执行正确的操作。同样地,车辆也可以根据该版本Version所对应的状态值确定能否响应云端下发的指令。也就是说,接收方(即车辆或云端)可以基于该键值对,指定相应的程序逻辑来执行相应的操作。

需要说明的是,针对不同的车型,版本Version所对应的状态值各不相同。比如,针对A车型,版本Version所对应的状态值为“v-a-1.0.0.0”;针对B车型,版本Version所对应的状态值为“v-b-1.0.0.0”。其中,状态值中的字母大小以及版本数字等格式可以根据具体的应用场景进行调整,在本申请实施例中并不限定版本Version所对应的状态值的具体格式。通过该版本Version所对应的状态值,可以使得不同车型对应的目标报文各自独立迭代更新,且不同车型中的车辆信息系统连接天线模块(Telematics&Connectivity AntennaModule,Tcam)等处理逻辑不会相互干扰,从而避免了不同车型中的Tcam等处理逻辑相互干扰所引发的混乱问题。

针对相同的车型,版本Version所对应的状态值也可以根据具体的应用场景进行设定。比如,为相同车型设置一个主版本号(如v-a-1.0.0)。然后,在该主版本号的基础上,迭代更新该车型的各个版本(如v-a-1.0.1.alpha)。其中,迭代更新后的版本是否向前兼容,可以根据具体的应用场景进行设定。

举例来说,A车型所对应的主版本号为v-a-1.0.0。并且该A车型在主版本号的基础上进行了迭代更新。该迭代更新所更新的内容为,去除A车型所对应的B硬件中的C组件。并且,更新后的版本不向前兼容。则此时报文头模板中的版本Version所对应的状态值可设置为v-a-1.0.2。则接收方基于该状态值v-a-1.0.2,指定相应的程序逻辑来处理该状态值v-a-1.0.1.1所对应的目标报文。若更新后的版本向前兼容,则此时报文模板中的版本Version所对应的状态值可设置为v-a-1.0.1.1,并且将C组件所对应的参数以及状态值设置为空值。则接收方基于该状态值v-a-1.0.1.1,指定相应的程序逻辑来处理该状态值v-a-1.0.1.1所对应的目标报文

因此,通过上述方式,对版本Version所对的状态值进行合理地管理和利用,可以使得接收方(比如车辆或云端)可以指定相应的程序逻辑来处理目标报文。并且,基于该版本Version所对应的状态值,使得接收方、发送放对车型的整个迭代过程均清晰明了。

创建者Creator可为App的用户,或者云端的运营人员,再或者车辆的Tcam。

需要注意的是,在特定情况下,创建者Creator与来源地Source所对应的状态值可以一致,也可以不一致。比如,目标报文来自于车辆的发电机电脑控制模块(EngineControl Unit,ECU),则来源地Source所对应的状态值为ECU,即“Source=ECU”;同样地,该ECU也可以作为目标报文的创建者,则创建者Creator所对应的状态值也为ECU,即“Creator=ECU”。另一方面,为了对来源地Source与创建者Creator进行区分,即使目标报文来自于车辆的ECU,也可以设置创建者Creator所对应的状态值为Tcam,来源地Source所对应的状态值为ECU,即“Creator=Tcam,Source=ECU”。

此外,在本申请实施例中,报文头模板中除上述内容以外的其他参数可以根据具体的应用场景进行增加或删除。

进一步,在得到报文头模板后,基于该报文头模板与第二报文体模板,生成报文模板。以车辆中引擎组件与电池组件为例,得到的该报文模板如下表8所示:

表8报文模板示意表

因此,通过上述方式,基于报文头模板与第二报文体模板,生成了如表8所示的具备公共交换格式的报文模板。该公共交换格式表示各个设备均可对该报文模板进行识别与使用,该公共交换格式可为JSON格式。

基于上述报文头模板与第二报文体模板,生成的报文模板,可以快速定位报文头或报文体中各个信息。并且,该报文模板所对应的时间复杂度趋近常量,能够很好地支持程序代码来处理该报文模板所对应的目标报文。同时,在约定报文头的情况下,极大地减轻了应用开发和后续数据分析的负担。

此外,上述在生成报文模板时,还可以是车辆与云端之间传输的指令对应一种指令报文模板,传输的信息对应一种信息报文模板。也可以是传输的指令与信息对应同一种报文模板。在本申请实施例中,可以根据具体的应用场景进行调整。

在一种可能的实施方式中,在生成报文模板后,可以根据具体的应用场景生成目标报文。

具体地,首先获取目标参数对应的目标状态值。该目标参数是一个或多个组件参数,且该目标参数为车辆与云端传输的信息或者指令各自对应的参数。接着,将目标状态值填充值报文模板中对应位置,生成目标报文。

举例来说,车辆需要向云端上报电池状态的相关信息,则可以在上述生成的报文模板中,将电池状态的相关信息填写至对应位置,得到如下表9所示的目标报文。

表9目标报文示意表

需要说明的是,在生成的目标报文中,不需要关注未设置状态值的参数。

由于上述目标报文采用的是包装类(比如Int到整数(Integer)的方式)或者枚举类的方式来生成的。因此,通过该方式在生成目标报文时,未设置状态值的参数会被目标压缩算法(如Protobuf)自动过滤,从而极大地减轻了目标报文的传输压力。

此外,在将目标报文传输至接收方后,由于目标压缩算法在过滤空值(即未设置状态值的参数)时,还过滤了该空值本身在报文模板中所涉及的结构,使得解压后的报文仅包含可用部分内容(即除未设置状态值的参数以外的内容)。因此,接收方在对该目标报文进行解压缩时,也只会恢复目标报文中可用部分内容,以便于对该目标报文进行留存和分析。并且,通过该方式,减小了实际报文的体量(即字段),还减轻了程序的内存压力。此外,由于无关的报文结构被剔除,使得程序代码处理的时候更为快捷。同时,还支持多个车辆、多个云端同时接入上述报文模板与上述目标报文。

在本申请实施例中,当具体的车辆在基于上述报文模板生成目标报文时,可以基于该车辆的具体组件所对应的具体层级结构,以及具体层级结构中具体参数所对应的标识信息,在上述报文模板中添加或删除对应的组件参数或层级结构。

综上来说,本申请所提出的报文模板的生成方法,基于车辆的多个组件各自对应的层级结构,以及层级结构中组件参数各自对应的标识信息,生成了第一报文体模板,该第一报文体模板展示了车辆的能力集合,便于维护和管理。在得到第一报文体模板的基础上,将每一个组件参数各自对应的属性信息,添加至该第一报文体模板中的对应位置,得到了第二报文体模板,从而完善了第一报文体模板中的各个细节,进一步地便于后期对报文模板的维护和管理。接着,基于第二报文体模板,以及该第二报文体模板关联的报文头模板,得到了最终的报文模板。

通过上述方式,从车辆自身结构出发来生成报文模板,使得报文从通信载体转化为车辆能力集合,从而使得该报文模板具有很强的弹性。并且,基于上述生成的报文模板,将各个属性信息均添加至该报文模板中,极大地减轻了对报文模板的维护量。

此外,在生成具体目标报文时,可以基于上述报文模板推导出该具体的目标报文所对应的具体报文模板,具有逻辑性与可回溯性。同时,采用公共交换格式和类结构体方式来定义上述报文模板,使得基于该报文模板得到的目标报文可以无缝对接到其他业务系统和数仓等分析平台。

在生成目标报文时,采用封装类的方式来生成具体的目标报文,使得生成的目标报文可以被现有压缩算法高比率压缩。同时可以保证在压缩时自动过滤空值和不必要的缺省值,避免了不必要的验证逻辑。

下面结合具体的应用过程对本申请技术方案做进一步的说明。

如图2所示为报文模板的生成方法的处理过程示意图,首先在第一报文体模板生成单元,确定车辆的多个组件各自对应的层级结构,再确定每一个层级结构中的组件参数,以及每一个组件参数各自对应的标识信息。然后基于每一个组件对应的层级结构,以及层级结构中每一个组件参数各自对应的标识信息,生成第一报文体模板。再将该第一报文体模板传输至第二报文体模板生成单元,以补充该第一报文体模板中的细节,得到第二报文体模板。

在第二报文体模板生成单元中,在补充第一报文体模板中的细节时,首先获取每一个组件参数各自对应的默认状态值、默认状态值所对应的数值类型、状态值选项信息中的一种或多种,得到每一个组件参数各自对应的属性信息。再基于组件参数与属性信息的对应关系,将每一个属性信息添加至第一报文体模板中的对应位置,得到第二报文体模板。并将该第二报文体模板传输至报文模板生成单元,以生成报文模板。

接着,在报文头模板生成单元中,获取车辆与云端之间传输的各个报文中的常规报文头参数。再基于常规报文头参数各自对应的标识信息,生成报文头模板。该报文头模板与第二报文体模板关联。再将该报文头模板传输至报文模板生成单元,以生成报文模板。

在报文模板生成单元中,基于接收的第二报文体模板与接收的报文头模板,生成报文模板。

进一步,在目标报文生成单元中,从报文模板生成单元中获取报文模板。然后将多个目标参数各自对应的目标状态值填写至报文模板中的对应位置,生成目标报文。

通过上述方式,在第一报文体模板生成单元中,基于车辆中多个组件的层级结构,以及层级结构中组件参数所对应的标识信息,生成了第一报文体模板;并通过第二报文体模板生成单元,补充了第一报文体模板中的细节;再通过报文头模板生成单元中常规报文头参数各自对应的标识信息,生成了与第二报文体报文模板关联的报文头模板;最后,通过报文模板生成单元,对第二报文体模板与报文头进行了拼接,生成了最终的报文模板。从而基于该报文模板,可以生成指令或信息对应的目标报文,避免了一条指令或一种信息对应一种报文模板,进而减少了报文模板的数量,并减轻了报文模板的维护难度。

并且,上述报文模板是基于车辆的层级结构来生成的,使得该报文模板体现了车辆的能力集合,且极具弹性、逻辑性和可回溯性。

基于同一发明构思,本申请实施例中还提供了一种报文模板的生成装置,如图3所示为本申请提供的一种报文模板的生成装置的结构示意图,该装置包括:

第一生成模块301,用于基于车辆的多个组件各自对应的层级结构,以及层级结构中组件参数各自对应的标识信息,生成第一报文体模板;

第二生成模块302,用于将每一个组件参数各自对应的属性信息,添加至第一报文体模板,得到第二报文体模板;

处理模块303,用于基于第二报文体模板,以及第二报文体模板关联的报文头模板,生成报文模板。

在一种可能的实施方式中,属性信息包括组件参数对应的默认状态值、默认状态值所对应的数值类型以及状态值选项信息中的一种或多种,则第二生成模块302,具体用于确定每一个组件参数各自对应的默认状态值、数值类型、状态值选项信息中的一种或多种,得到每一个组件参数各自对应的属性信息;基于属性信息与组件参数的对应关系,将每一个属性信息添加至第一报文体模板,得到第二报文体模板。

在一种可能的实施方式中,处理模块303,具体用于获取目标参数对应的目标状态值;其中,目标参数为一个或多个组件参数,且目标参数为车辆与云端之间传输的信息或指令各自对应的参数;将目标状态值填充至报文模板中对应位置,生成目标报文。

在一种可能的实施方式中,报文头模板包括关键信息与额外信息;其中,关键信息包括生成目标报文的时间戳、目标报文对应的数据类型、目标报文对应的版本、目标报文的创建者以及目标报文的补充信息,额外信息包括目标报文的来源地。

基于同一发明构思,本申请实施例中还提供了一种电子设备,上述电子设备可以实现前述报文模板的生成装置的功能,参考图4,上述电子设备包括:

至少一个处理器401,以及与至少一个处理器401连接的存储器402,本申请实施例中不限定处理器401与存储器402之间的具体连接介质,图4中是以处理器401和存储器402之间通过总线400连接为例。总线400在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线400可以分为地址总线、数据总线、控制总线等,为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器401也可以称为控制器,对于名称不做限制。

在本申请实施例中,存储器402存储有可被至少一个处理器401执行的指令,至少一个处理器401通过执行存储器402存储的指令,可以执行前文论述的报文模板的生成方法。处理器401可以实现图3所示的装置中各个模块的功能。

其中,处理器401是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器402内的指令以及调用存储在存储器402内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。

在一种可能的设计中,处理器401可包括一个或多个处理单元,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。在一些实施例中,处理器401和存储器402可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器401可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的报文模板的生成方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器402可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器402是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器402还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通过对处理器401进行设计编程,可以将前述实施例中介绍的报文模板的生成方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的报文模板的生成方法的步骤。如何对处理器401进行设计编程为本领域技术人员所公知的技术,这里不再赘述。

基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述的报文模板的生成方法。

在一些可能的实施方式中,本申请提供的报文模板的生成方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本申请各种示例性实施方式的报文模板的生成方法中的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 报文预定义代码生成方法、装置、电子设备和存储介质
  • 一种区块链ID生成及使用方法、装置、电子设备以及存储介质
  • 一种二维码生成方法、装置及电子设备
  • 一种视频集锦的生成方法、装置、电子设备及存储介质
  • 一种菜品信息生成方法、装置以及电子设备
  • 报文模板的生成方法、装置、电子设备及计算机存储介质
  • 视频模板生成方法、视频生成方法、装置和电子设备
技术分类

06120116496564