一种代码自动生成方法、系统、电子设备和存储介质与流程
未命名
10-08
阅读:64
评论:0

1.本发明涉及一种代码自动生成方法、系统、电子设备和存储介质,属于数据处理的技术领域。
背景技术:
2.当前汽车开发领域,会使用someip协议进行车载设备对手件(对手件是指与产品有装配关系或匹配关系的零件)和qnx系统进行通信,在开发过程中,基于someip协议栈往往在qnx侧或者android hal/native层会有很便利的代码生成方式,但如果在qnx测及android hal/native需要往android上层业务发送数据时介入android测开发,而someip协议建模工具仅能生成c/c++代码,往往需要人工介入手动编写协议栈的内容代码,内容非常繁琐,开发效率低,已经不能满足人们的要求。
技术实现要素:
3.本发明的目的在于提供一种代码自动生成方法、系统、电子设备和存储介质,通过自动生成代码简化开发过程,解决现有技术存在的缺憾。
4.本发明提供了下述方案:
5.一种基于someip协议栈的代码自动生成方法,具体包括:
6.基于someip建模,导出协议栈的内容文件;
7.对协议栈内部的数据类型进行解析,提取数据类型特征;
8.对协议栈内部的接口类型数据进行解析,提取协议线定义的接口名称;
9.根据所述数据类型和/或接口类型生成对应的aidl文件和java/kotlin文件。
10.进一步的,所述协议栈的内容文件用于定义数据类型、端口、服务。
11.进一步的,所述对协议栈内部的数据类型进行解析,具体为通过循环处理的方式遍历数据类型。
12.进一步的,所述数据类型包括:基础数据类型、枚举类型、结构体和数组。
13.进一步的,所述基础数据类型包括整型、浮点型。
14.进一步的,所述接口名称包括:成员类型、成员名称、方法列表、参数列表、返回值。
15.进一步的,所述aidl为android接口定义语言。
16.一种基于someip协议栈的代码自动生成系统,具体包括:
17.协议栈内容文件导出模块,基于someip建模,导出协议栈的内容文件;
18.数据类型解析模块,用于对协议栈内部的数据类型进行解析,提取数据类型特征;
19.接口类型解析模块,用于对协议栈内部的接口类型数据进行解析,提取协议线定义的接口名称;
20.文件生成模块,用于根据所述数据类型和/或接口类型生成对应的aidl文件和java/kotlin文件。
21.一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接
口,存储器通过通信总线完成相互间的通信;所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行所述方法的步骤。
22.一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当所述计算机程序在所述电子设备上运行时,使得所述电子设备执行所述方法的步骤。
23.本发明与现有技术相比具有以下的优点:本发明针对现有技术存在的缺陷,使用someip协议进行android代码生成,协助相关的开发工作,简化开发过程,降低重复工作量,使开发人员能够将主要精力投入到具体的业务开发中。
附图说明
24.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
25.图1是基于someip协议栈代码自动生成方法的流程图。
26.图2是基于someip协议栈代码自动生成系统的架构图。
27.图3是现有技术中基于someip协议栈进行开发的流程图。
28.图4是本发明实施例基于someip协议栈进行开发的整体流程图。
29.图5是本发明实施例进行解析数据类型内容和接口类型的流程图。
30.图6是本发明实施例采用循环处理方式进行解析数据类型的流程图。
31.图7是本发明实施例采用循环处理方式进行解析接口类型的流程图。
32.图8是电子设备的结构示意图。
具体实施方式
33.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
34.名词解释:协议栈,英语名称为protocol stack,又称协议堆叠,是计算机网络协议套件的具体实现方式,通俗来讲就是用代码实现的库函数。协议套件中的一个协议通常是只为一个目的而设计的,这样可以使得设计更容易。因为每个协议模块通常都要和其他两个通信,它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。
35.如图1所示的基于someip协议栈的代码自动生成方法,具体包括:
36.步骤s1,基于someip建模,导出协议栈的内容文件;
37.具体的,所述协议栈的内容文件用于定义数据类型、端口、服务。
38.步骤s2,对协议栈内部的数据类型进行解析,提取数据类型特征;
39.具体的,所述对协议栈内部的数据类型进行解析,具体为通过循环处理的方式遍历数据类型。
40.示例性的,所述数据类型包括:基础数据类型、枚举类型、结构体和数组,所述基础数据类型包括整型、浮点型。
41.步骤s3,对协议栈内部的接口类型数据进行解析,提取协议线定义的接口名称;
42.具体的,所述接口名称包括:成员类型、成员名称、方法列表、参数列表、返回值。
43.步骤s4,根据所述数据类型和/或接口类型生成对应的aidl文件和java/kotlin文件,所述aidl为android接口定义语言(android interface definition language)
44.对于上述实施例公开的方法步骤,出于简单描述的目的将方法步骤表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
45.流程图或以其他方式描述的任何过程或方法描述可以被理解为:表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序执行并实现功能,或者按照循环、分支等程序结构执行计算机指令并实现相应的功能,这是本领域技术人员在实施本发明实施例时理所当然可以理解的。
46.如图2所示的基于someip协议栈的代码自动生成系统,具体包括:
47.协议栈内容文件导出模块,基于someip建模,导出协议栈的内容文件;
48.数据类型解析模块,用于对协议栈内部的数据类型进行解析,提取数据类型特征;
49.接口类型解析模块,用于对协议栈内部的接口类型数据进行解析,提取协议线定义的接口名称;
50.文件生成模块,用于根据所述数据类型和/或接口类型生成对应的aidl文件和java/kotlin文件。
51.值得注意的是,虽然在本发明实施例中只披露了一些基本功能模块,但并不意味着本系统的组成仅仅局限于上述基本功能模块,相反,本实施例所要表达的意思是:在上述基本功能模块的基础之上本领域技术人员可以结合现有技术任意添加一个或多个功能模块,形成无穷多个实施例或技术方案,也就是说本系统是开放式而非封闭式的,不能因为本实施例仅仅披露了个别基本功能模块,就认为本发明权利要求的保护范围局限于所公开的基本功能模块。同时,为了描述的方便,描述以上装置时以功能分为各种单元、模块分别描述。当然在实施本发明时可以把各单元、模块的功能在同一个或多个软件和/或硬件中实现。
52.以上所描述的系统的实施方式仅仅是示意性的,例如:其中作为系统中的各个功能模块、单元或子系统等可以是也可以不是物理上分开的,或者可以是或者也可以不是物理单元,即可以位于同一个地方,也可以分布到多个不同的系统及其子系统或模块上。本领域技术人员可以根据实际的需要选择其中的部分或者全部功能模块、单元或子系统来实现本发明实施例的目的,对于上述情形本领域普通技术人员在不付出创造性劳动的情况下即可以理解并实施。
53.如图3至图7所示,本实施例讲述了基于someip协议栈进行开发的流程,在本实施例中包括:someip协议栈、数据类型解析模块、接口类型数据解析模块、aidl文件代码生成模块、java/kotlin文件代码生成模块;
54.someip协议栈:通过someip建模后导出的协议栈的内容文件,内部定义了协议栈所使用的数据类型,端口,及服务定义;
55.someip协议栈,即:some/ip(scalable service-oriented middleware over ip):运行于ip之上的可伸缩的面向服务的中间件,是一种独立的系统软件或服务程序。
56.数据类型解析模块:该模块主要解析协议栈内部的通信数据类型,包括基础数据类型(int、float...),枚举类型,结构体,数组等,通过该模块能提取到定义的数据类型特征。数据类型解析的含义是将各种数据类型解析为当前协议支持的对应的类型,供操作系统使用。
57.接口类型数据解析模块:该模块主要解析协议栈内的接口类型数据,通过该模块,可以提取协议定义的接口名称,成员类型,成员名称,方法列表,参数列表,返回值等特征;接口数据类型解析的含义是将各种接口数据类型解析为当前协议支持的对应的类型,供系统使用。
58.aidl文件代码生成模块:该模块将具体的数据类型或者接口类型生成对应的aidl文件,例如:在应用层中定义aidl接口并获取aidl接口文件,定义所述aidl接口文件版本号;使用java/kotlin编程语言语法在.aidl文件中定义aidl接口。
59.java/kotlin文件代码生成模块:该模块将具体的数据类型和接口类型生成对应的java/kotlin文件,即自动生成代码,示例性的:在本步骤中生成代码的步骤为:
60.在集成开发环境中创建项目;
61.开发代码自动生成程序;
62.设置数据结构,创建数据表;
63.配置生成代码对应的数据源;
64.配置数据库配置文件;
65.配置用户界面框架文件的模板;
66.配置后台控制处理层代码文件的模板;
67.配置后台逻辑处理层代码文件的模块;
68.配置后台数据访问层代码文件的模板;
69.配置代码生成路径;
70.启动代码自动生成程序;
71.读取模板配置文件,读取数据结构定义文件;
72.生成对应的代码文件;
73.引入代码到研发项目的路径,实现代码生成。
74.实现代码自动生成能够有效提高工作效率,在简单业务逻辑的情形下自动生成的代码可以直接被项目使用,无需进行额外的开发,减轻了开发人员的负担,还降低技术门槛,让开发人员能够更多的关注于业务逻辑的开发,无需了解复杂的文件结构关系,无需了解复杂的系统配置关系,项目易于维护,通过统一的接口规范、编码规范和变量方法定义规范使得生成的代码风格一致,对每一个了解规范的开发人员都易于阅读,方便维护。
75.如图8所示,本发明在代码自动生成方法、系统的基础之上,还公开了与之对应的电子设备和存储介质:
76.一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接
口,存储器通过通信总线完成相互间的通信;所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行权利代码自动生成方法的步骤。
77.一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当所述计算机程序在所述电子设备上运行时,使得所述电子设备执行代码自动生成方法的步骤。
78.图8示例性的给出了适于用来实现本发明实施例实施方式的示例性电子设备的框图。图8显示的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。该设电子备典型的可以是以上述实施例中代码自动生成就去为工作基础的电子产品中的设备。例如,可以是电动汽车中的电子设备。
79.电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:一个或者多个处理单元或者处理器516,存储器528,连接不同系统组件(包括存储器528和处理器516)的总线518。总线518表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。电子设备500典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备500访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。存储器528可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)530和/或高速缓存存储器532。电子设备500可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统534可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,存储系统534可以提供用于对可移动非易失性磁盘(例如:软盘、移动硬盘、可热拔插存储介质)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线518相连。存储器528可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明实施例各实施例的功能。
80.具有一组(至少一个)程序模块542的程序/实用工具540,可以存储在例如存储器528中,这样的程序模块542包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块542通常执行本发明实施例所描述的实施例中的功能和/或方法。电子设备500也可以与一个或多个外部设备514(例如键盘、指向设备、显示器524等)通信,还可与一个或者多个使得用户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口522进行。并且,电子设备500还可以通过网络适配器520与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器520通过总线518与电子设备500的其它模块通信。应当明白,尽管图中未示出,但本领域技术人员可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。处理器516通过运行存储在存储器528中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意一个或多个实施例所提供的方法。
81.本领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
82.需要说明的是,本说明书与权利要求中使用了某些词汇来指称特定元件。本领域技术人员应可以理解,不同的制造商、生产厂商可能会用不同名词来称呼同一个元件。本说明书与权利要求并不以名词的差异来作为区分元件的方式,而是以元件在功能上的差异作为区分的准则。
83.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
84.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如:在权利要求书中所要求保护的实施例的任意之一都可以以本发明实施例以任意的组合方式来使用。
85.在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
86.另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
87.本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。本说明书中公开的任一特征,除非特别叙述,均可被其它等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而己。在整个说明书中,同样的附图标记指示同样的元件。
88.本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括相应的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括相应的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
89.在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分
或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
90.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
91.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
技术特征:
1.一种基于someip协议栈的代码自动生成方法,其特征在于,具体包括:基于someip建模,导出协议栈的内容文件;对协议栈内部的数据类型进行解析,提取数据类型特征;对协议栈内部的接口类型数据进行解析,提取协议线定义的接口名称;根据所述数据类型和/或接口类型生成对应的aidl文件和java/kotlin文件。2.根据权利要求1所述的基于someip协议栈的代码自动生成方法,其特在于,所述协议栈的内容文件用于定义数据类型、端口、服务。3.根据权利要求1所述的基于someip协议栈的代码自动生成方法,其特在于,所述对协议栈内部的数据类型进行解析,具体为通过循环处理的方式遍历数据类型。4.根据权利要求3所述的基于someip协议栈的代码自动生成方法,其特在于,所述数据类型包括:基础数据类型、枚举类型、结构体和数组。5.根据权利要求4所述的基于someip协议栈的代码自动生成方法,其特在于,所述基础数据类型包括整型、浮点型。6.根据权利要求1所述的基于someip协议栈的代码自动生成方法,其特征在于,所述接口名称包括:成员类型、成员名称、方法列表、参数列表、返回值。7.根据权利要求1所述的基于someip协议栈的代码自动生成方法,其特征在于,所述aidl为android接口定义语言。8.一种基于someip协议栈的代码自动生成系统,其特征在于,具体包括:协议栈内容文件导出模块,基于someip建模,导出协议栈的内容文件;数据类型解析模块,用于对协议栈内部的数据类型进行解析,提取数据类型特征;接口类型解析模块,用于对协议栈内部的接口类型数据进行解析,提取协议线定义的接口名称;文件生成模块,用于根据所述数据类型和/或接口类型生成对应的aidl文件和java/kotlin文件。9.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,其特征在于,其存储有可由电子设备执行的计算机程序,当所述计算机程序在所述电子设备上运行时,使得所述电子设备执行权利要求1至7中任一项所述方法的步骤。
技术总结
本发明公开了一种代码自动生成方法、系统、电子设备和存储介质,方法步骤具体包括:基于someip协议栈进行someip建模,导出协议栈的内容文件;对协议栈内部的数据类型进行解析,提取数据类型特征;对协议栈内部的接口类型数据进行解析,提取协议线定义的接口名称;根据所述数据类型和/或接口类型生成对应的AIDL文件和Java/Kotlin文件。本发明针对现有技术存在的缺陷,使用someip协议进行Android代码生成,协助相关的开发工作,简化开发过程,降低重复工作量,使开发人员能够将主要精力投入到具体的业务开发中。体的业务开发中。体的业务开发中。
技术研发人员:王从涛
受保护的技术使用者:一汽(北京)软件科技有限公司
技术研发日:2023.06.26
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/