DDS中间件部署和应用开发的方法、装置、电子设备及车辆与流程

未命名 09-22 阅读:69 评论:0

dds中间件部署和应用开发的方法、装置、电子设备及车辆
技术领域
1.本公开涉及计算机技术领域,尤其涉及一种dds中间件部署和应用开发的方法、装置、电子设备及车辆。


背景技术:

2.通信中间件是一种计算机软件,可以使分开的软件组件、进程、或者应用程序之间交换信息。数据分发服务(dds)是一套通信协议和api标准,dds中间件提供了以数据为中心的连接服务,基于发布者-订阅者模型实现操作系统和应用程序之间的通信功能。
3.随着汽车软件行业的迅猛发展和期望对dds通信技术在车载应用中引入,对于dds中间件的安装以及对支持dds通信的应用(简称为dds应用)开发的需求越来越广泛。然而,目前关于dds中间件的开发主要还是围绕着车端底层通信和偏硬件的开发,上层基于一些特定操作系统,例如安卓(android)系统的中间件,尚未有对应的产品。由于安卓操作系统的语言为java语言,dds中间件协议的基础版本是基于c语言的;基于通信中间件dds(基于c语言)的分发-订阅架构体系来实现安卓操作系统和应用(基于java语言)之间的数据通信过程中,面临跨语言和跨平台的问题,实现难度较大。由此可知,相关技术中,目前dds中间件版本大多是基于c语言,很难实现中间件在安卓系统中直接进行编译和安装;这也使得安卓系统的dds应用的开发变得越发困难。


技术实现要素:

4.为克服相关技术中存在的问题,本公开实施例提供一种dds中间件部署和应用开发的方法、装置、电子设备及车辆。
5.根据本公开实施例的第一方面,提供一种dds中间件部署的方法。上述方法包括:基于第一语言的dds源码,构建第一动态链接库;上述第一动态链接库为面向目标操作系统的动态链接库;基于第二语言的dds源码,构建面向上述目标操作系统的预编译安装文件;构建关于上述预编译安装文件的第二dds预编译安装包;基于上述第一动态链接库和上述第二dds预编译安装包,实现第一语言dds中间件和第二语言dds中间件在上述目标操作系统的部署;其中,上述目标操作系统的开发应用采用第三语言编写,通过上述第二语言调用第一语言提供的dds中间件服务;上述第一语言dds中间件向下兼容于上述目标操作系统且无编译环境依赖,上述第二语言dds中间件能被上述目标操作系统的开发应用调用,上述第二语言dds中间件依赖上述第一语言dds中间件。
6.在一些实施例中,上述目标操作系统包括以下系统中的一种:linux系统、windows系统、macos系统、基于应用容器引擎docker技术的操作系统、android安卓系统。
7.在一些实施例中,上述目标操作系统为安卓系统;上述第一语言为c语言,上述第二语言为python语言。其中,基于第二语言的dds源码,构建面向上述目标操作系统的预编译安装文件,包括:对python语言的dds源码的程序启动编译脚本的配置文件进行修改,并对目标源码中引起编译安装失败的部分进行修改,得到适配于安卓系统的python环境的预
编译安装文件。
8.在一些实施例中,对目标源码中引起编译安装失败的部分进行修改,包括:将上述第一动态链接库和上述第二dds预编译安装包的动态链接库文件拷贝至解压后的python语言的dds源码whl文件。
9.在一些实施例中,构建关于上述目标dds文件的第二dds预编译安装包,包括:基于bdist_wheel预编译模式,根据修改后的程序启动编译脚本,将上述预编译安装文件和依赖项打包成预编译安装包。
10.在一些实施例中,上述目标操作系统为安卓系统;上述第一语言为c语言。其中,上述基于第一语言的dds源码,构建第一动态链接库,包括:在linux操作系统上通过交叉编译的方式,对c语言的dds源码进行编译,得到适配于安卓系统的动态链接库。
11.根据本公开实施例的第二方面,提供一种基于dds通信的应用开发的方法。上述应用用于在安卓系统运行,上述安卓系统基于上述dds中间件部署的方法实现第一语言dds中间件和第二语言dds中间件的部署。上述应用开发的方法包括:创建开发应用,在上述开发应用的系统配置选项中添加网络使用权限的申请信息;在上述开发应用中接入目标插件,对上述目标插件的配置信息进行设置;对上述目标插件的环境进行配置,上述环境包括:第二dds预编译安装包以及python版本;接收用户编写的基于dds通信的开发应用的第三语言程序代码,第三语言为java语言;对上述开发应用调用上述目标插件执行上述第三语言程序代码的链路进行配置;上述开发应用的安装包里面封装有上述目标插件,上述开发应用通过上述目标插件调用上述第二语言dds中间件,基于上述第二语言dds中间件和上述第一语言dds中间件实现dds数据通信。
12.根据本公开实施例的第三方面,提供一种dds中间件部署的装置。上述装置包括:第一构建模块、第二构建模块、第三构建模块和部署模块。上述第一构建模块用于基于第一语言的dds源码,构建第一动态链接库;上述第一动态链接库为面向目标操作系统的动态链接库。上述第二构建模块用于基于第二语言的dds源码,构建面向上述目标操作系统的预编译安装文件。上述第三构建模块用于构建关于上述预编译安装文件的第二dds预编译安装包。上述部署模块用于基于上述第一动态链接库和上述第二dds预编译安装包,实现第一语言dds中间件和第二语言dds中间件在上述目标操作系统的部署。其中,上述目标操作系统的开发应用采用第三语言编写,通过上述第二语言调用第一语言提供的dds中间件服务;上述第一语言dds中间件向下兼容于上述目标操作系统且无编译环境依赖,上述第二语言dds中间件能被上述目标操作系统的开发应用调用,上述第二语言dds中间件依赖上述第一语言dds中间件。
13.根据本公开实施例的第四方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;上述处理器,用于从上述存储器中读取上述可执行指令,并执行上述可执行指令以实现本公开第一方面所提供的dds中间件部署的方法或本公开第二方面所提供的基于dds通信的应用开发的方法。
14.根据本公开实施例的第五方面,提供一种车辆,存储有一组指令集,上述指令集被上述车辆的操作系统执行,以实现本公开第一方面所提供的dds中间件部署的方法或本公开第二方面所提供的基于dds通信的应用开发的方法。
15.本公开的实施例提供的技术方案可以包括以下有益效果:
16.通过构建第一动态链接库,将编译环境预先构建打包,无需后续上层的开发应用在安装时进行编译环境的配置、无需进行相关权限的申请(例如安卓应用需要获取root权限,才能进行编译环境的安装)等;该第一动态链接库与底层的目标操作系统适配,同时第一动态链接库中的编译环境也是第二dds预编译安装包所依赖的一种编译环境,使得第一语言dds中间件和第二dds中间件实现兼容;通过构建第二dds预编译安装包,该第二dds预编译安装包位于第一动态链接库的层级之上,不仅兼容于第一动态链接库的一种编译环境(例如为c语言环境),另一种执行环境(例如为python环境)能够向上兼容于上层的开发应用,并起到中间桥梁的作用;整体上通过分阶梯式地构建多层dds预编译安装包,在目标操作系统中无需再额外进行编译,直接利用预编译安装包进行部署即可得到对应的第一语言dds中间件和第二语言dds中间件,自下而上呈现目标操作系统、第一语言dds中间件、第二语言dds中间件和上层的开发应用的架构,第一语言dds中间件和第二dds中间件实现dds通信服务,从而搭建了上层开发应用的第三语言(例如可以是java语言)通过第二语言(例如可以是python)来调用dds中间件服务实现与目标操作系统通信交互的整体交互逻辑,相较于直接构建跨语言、跨平台安装dds中间件,通过阶梯式搭建两层dds中间件的方式,极大降低了dds中间件在目标操作系统的编译安装难度,并有助于上层应用的简化开发。
17.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
18.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
19.图1是根据一示例性实施例示出的dds中间件部署的方法的流程图。
20.图2是根据一示例性实施例示出的dds中间件部署的方法对应的层级架构图。
21.图3是根据一示例性实施例示出的基于dds通信的应用开发的方法的流程图。
22.图4是根据一示例性实施例示出的开发应用和底层的目标操作系统的调用层级架构图。
23.图5是根据一示例性实施例示出的dds中间件部署的装置的框图。
24.图6是根据一示例性实施例示出的车辆的框图。
25.图7是根据一示例性实施例示出的电子设备的框图。
具体实施方式
26.下面将结合附图详细地对示例性实施例进行描述说明。
27.应当指出,相关实施例及附图仅为描述说明本公开所提供的示例性实施例,而非本公开的全部实施例,也不应理解本公开受相关示例性实施例的限制。
28.应当指出,本公开中所用术语“第一”、“第二”等仅用于区别不同步骤、设备或模块等。相关术语既不代表任何特定技术含义,也不表示它们之间的顺序或者相互依存关系。
29.应当指出,本公开中所用术语“一个”、“多个”、“至少一个”的修饰是示意性而非限制性的。除非在上下文另有明确指出,否则应该理解为“一个或多个”。
30.应当指出,本公开中所用术语“和/或”,用于描述关联对象之间的关联关系,一般
表示至少存在三种关联关系。例如,a和/或b,至少可以表示:单独存在a,同时存在a和b,单独存在b这三种关联关系。
31.应当指出,本公开的方法实施例中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。除非特别说明,本公开的范围不受相关实施例中步骤的描述顺序限制。
32.需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
33.随着汽车软件行业的迅猛发展和期望对dds通信技术在车载应用中引入,对于dds中间件的安装以及对支持dds通信的应用(简称为dds应用)开发的需求越来越广泛。由于底层采用dds中间件进行开发,车载平台需要进行配套的技术升级,包括:车载娱乐平台、车载导航平台、手机汽车软件等,都需要赋能dds中间件技术进行相应的应用开发技术升级。
34.然而,目前关于dds中间件的开发主要还是围绕着车端底层通信和偏硬件的开发,上层基于一些特定操作系统,例如安卓(android)系统的中间件,尚未有对应的产品。相关技术中,目前dds中间件版本大多是基于c语言,很难实现中间件在安卓系统中直接进行编译和安装;这也使得安卓系统的dds应用的开发变得越发困难。
35.有鉴于此,本公开的实施例提供了一种dds中间件部署和应用开发的方法、装置、设备及车辆,通过分阶梯式地构建多层dds预编译安装包,在目标操作系统中无需再额外进行编译,直接利用预编译安装包进行部署即可得到对应的第一语言dds中间件和第二语言dds中间件,自下而上呈现目标操作系统、第一语言dds中间件、第二语言dds中间件和上层的开发应用的架构,从而搭建了上层开发应用的第三语言(例如可以是java语言)通过第二语言(例如可以是python第二语言)来调用dds中间服务实现与目标操作系统通信交互的整体交互逻辑,相较于直接构建跨语言、跨平台安装dds中间件,通过阶梯式搭建两层dds中间件的方式,极大降低了dds中间件在目标操作系统的编译安装难度,并有助于上层应用的简化开发。
36.可以理解的是,尽管本公开实施例提供的dds中间件部署的方法可以解决在安卓系统部署的问题,该方法可以拓展应用至其他操作系统的部署场景。本公开实施例中的“第一”、“第二”的修饰用于区分不同的语言、不同的链接库文件等,或者为了与对应的语言、链接库文件等进行适配,预编译安装包也采用对应的序数词进行描述。
37.示例性方法
38.图1是根据一示例性实施例示出的dds中间件部署的方法的流程图。
39.参照图1所示,本公开实施例提供的dds中间件部署的方法,包括以下步骤:s110、s120、s130和s140。
40.上述dds中间件部署的方法可以由具有操作系统的电子设备执行,例如可以包括但不限于是:车辆、台式计算机、笔记本电脑、平板电脑、手机、智能手表、手环、智能机器人等。
41.在本公开的实施例中,电子设备的操作系统可以是linux系统、windows系统、macos系统、基于docker技术的操作系统、安卓系统等中的一种。
42.在步骤s110,基于第一语言的dds源码,构建第一动态链接库;上述第一动态链接库为面向目标操作系统的动态链接库。
43.在一些实施例中,上述目标操作系统包括以下系统中的一种:linux系统、windows系统、macos系统、基于docker技术的操作系统、安卓系统。
44.以安卓系统为例,在一些实施例中,第一语言的dds源码例如可以是基于c语言的基础版本cyclonedds、fast-dds、opendds或rti-dds等;由于cyclonedds与其他类型的源码,诸如fast-dds、opendds等兼容性较好,而且功能相对丰富,这里采用基础版本的cyclonedds。
45.在一些实施例中,上述步骤s110中,基于第一语言的dds源码,构建第一动态链接库,包括:在linux操作系统上通过交叉编译的方式,对c语言的dds源码进行编译,得到适配于安卓系统的动态链接库。
46.例如,上述第一动态链接库可以通过android ndk(一种现有的开发工具)进行交叉编译得到。
47.在一些实施例中,上述动态链接库中包含libddsc.so文件。
48.由于安卓应用里面安装编译环境需要用到root权限,而且需要linux环境才能进行编译,目前要独立实现难度极大。本公开实施例中通过构建第一动态链接库,将编译环境预先构建打包,无需后续上层的开发应用在安装时进行编译环境的配置、无需进行相关权限的申请(例如安卓应用需要获取root权限,才能进行编译环境的安装)等;该第一动态链接库与底层的目标操作系统(例如为安卓系统)适配。
49.基于该第一动态链接库能够做到第一dds中间件的独立化部署,不需要在上层的开发应用(例如为安卓应用)在安装时进行编译环境的配置、也不需要对root权限进行申请等。
50.在步骤s120,基于第二语言的dds源码,构建面向上述目标操作系统的预编译安装文件。
51.在一些实施例中,上述第二语言为python语言,例如第二语言的dds源码为cyclonedds-python版本。
52.上述步骤s120中,基于第二语言的dds源码,构建面向上述目标操作系统的预编译安装文件,包括:对python语言的dds源码的程序启动编译脚本的配置文件进行修改,并对目标源码中引起编译安装失败的部分进行修改,得到适配于安卓系统的python环境的预编译安装文件。之后,再由预编译安装文件生成第二dds预编译安装包(对应于步骤s130)。
53.cyclonedds-python的成功安装需要依赖c编译环境和python环境才能成功安装,这一步如果独立实现难度也极大。为了让cyclonedds-python在安卓平台实现成功安装,通过python setup.py install指令进行python中_clayer(c代码)的编译和python package安装,其中编译安装后会生成android平台的动态链接库文件_clayer.so文件,保存备用。
54.发现cyclonedds-python在安卓平台无法成功安装的主要原因是在安装过程中需要实时编译_clayer模块,导致安装失败;通过修改cyclonedds-python setup.py编译脚本引入的逻辑,指定读取上述的libddsc.so文件,移除环境变量唯一判断的依赖,以解决安装编译失败的问题。
55.在一些实施例中,将第二dds预编译安装包的动态链接库文件_clayer.so文件和上述第一动态链接库中的动态链接库文件libddsc.so文件拷贝至解压后的whl文件,实现对目标源码中引起编译安装失败的部分进行修改。
56.whl文件是以wheel格式保存的python安装包,wheel是python发行版的标准内置包格式。whl文件包含python安装的所有文件和元数据,其中还包括所使用的wheel版本和打包的规范。whl文件使用zip压缩格式进行压缩,实际上也是一种压缩文件。目前wheel格式被认为是python的二进制包的标准格式。
57.在其他实施例中,针对其他操作系统而言,第一语言的dds源码可以是基础版本(例如为c语言的)dds源码包;第二语言的dds源码可以是其他能够兼容于c编译环境并能够被上层应用的开发语言所调用的dds版本。
58.在步骤s130,构建关于上述预编译安装文件的第二dds预编译安装包。
59.在一些实施例中,构建关于上述目标dds文件的第二dds预编译安装包,包括:基于bdist_wheel预编译模式,根据修改后的程序启动编译脚本,将上述预编译安装文件和依赖项打包成预编译安装包。
60.在python中,bdist_wheel是一个用于构建python包的命令,它能够将python代码和依赖项打包成一个可执行的wheel文件。
61.在步骤s140,基于上述第一动态链接库和上述第二dds预编译安装包,实现第一语言dds中间件和第二语言dds中间件在上述目标操作系统的部署。
62.上述目标操作系统的开发应用采用第三语言(例如为java语言)编写,通过上述第二语言(例如为python语言)调用第一语言(例如为c语言)提供的dds中间件服务。上述第一语言dds中间件向下兼容于上述目标操作系统且无编译环境依赖,上述第二语言dds中间件能被上述目标操作系统的开发应用调用,上述第二语言dds中间件依赖上述第一语言dds中间件。
63.图2是根据一示例性实施例示出的dds中间件部署的方法对应的层级架构图。
64.参照图2所示,本公开的实施例中,通过分阶梯式地构建多层dds预编译安装包:包括第一动态链接库201和第二dds预编译安装包203,第二dds预编译安装包203是通过对预编译安装文件(例如为cyclonedds-python预编译安装文件)202及依赖项进行打包得到的,在目标操作系统210中无需再额外进行编译,直接利用第一动态链接库201和第二dds预编译安装包203进行部署,即可得到对应的第一语言dds中间件220和第二语言dds中间件230,自下而上呈现目标操作系统210、第一语言dds中间件220、第二语言dds中间件230和上层的开发应用240的架构。
65.由于第一动态链接库201中的编译环境(例如为c编译环境)也是第二dds预编译安装包所依赖的一种编译环境,使得第一语言dds中间件220和第二dds中间件230实现兼容,第一语言dds中间件220和第二dds中间件230作为连接底层的目标操作系统210和上层的开发应用240之间的桥梁,上层的开发应用(基于第三语言,例如为java语言)可以通过调用python从而实现调用底层cyclonedds的能力;后续只需要在开发应用中打通java调用python的链路,便能够通过python脚本实现操作cyclonedds中间件的能力。
66.在包含上述步骤s110~s140的实施例中,通过构建第一动态链接库,将编译环境预先构建打包,无需后续上层的开发应用在安装时进行编译环境的配置、无需进行相关权限的申请(例如安卓应用需要获取root权限,才能进行编译环境的安装)等;该第一动态链接库与底层的目标操作系统适配,同时第一动态链接库中的编译环境也是第二dds预编译安装包所依赖的一种编译环境,使得第一语言dds中间件和第二dds中间件实现兼容;通过
构建第二dds预编译安装包,该第二dds预编译安装包位于第一动态链接库的层级之上,不仅兼容于第一动态链接库的一种编译环境(例如为c语言环境),另一种执行环境(例如为python环境)能够向上兼容于上层的开发应用,并起到中间桥梁的作用;整体上通过分阶梯式地构建多层dds预编译安装包,在目标操作系统中无需再额外进行编译,直接利用预编译安装包进行部署即可得到对应的第一语言dds中间件和第二语言dds中间件,自下而上呈现目标操作系统、第一语言dds中间件、第二语言dds中间件和上层的开发应用的架构,第一语言dds中间件和第二dds中间件实现dds通信服务,从而搭建了上层开发应用的第三语言(例如可以是java语言)通过第二语言(例如可以是python)来调用dds中间件服务实现与目标操作系统通信交互的整体交互逻辑,相较于直接构建跨语言、跨平台安装dds中间件,通过阶梯式搭建两层dds中间件的方式,极大降低了dds中间件在目标操作系统的编译安装难度,并有助于上层应用的简化开发。
67.图3是根据一示例性实施例示出的基于dds通信的应用开发的方法的流程图。
68.参照图3所示,本公开实施例提供的基于dds通信的应用开发的方法,包括以下步骤:s310、s320、s330、s340和s350。
69.上述应用用于在安卓系统运行,上述安卓系统基于上述dds中间件部署的方法实现第一语言dds中间件和第二语言dds中间件的部署。
70.在前述已经实现dds中间件部署的情况下,要实现在安卓系统中安装一个基于dds通信的应用(简称为dds应用),需要考虑以下调用逻辑并解决以下问题:编译环境如何安装、python如何安装、android如何调用python、python如何正确找到dds中间件的安装目录和依赖等。
71.图4是根据一示例性实施例示出的开发应用和底层的目标操作系统的调用层级架构图。
72.参照图4所示,沿用前述实施例的解决构思,本实施例在应用开发过程中,通过基于前述实施例提供的dds中间件部署的方法来实现dds中间件在安卓系统的部署,之后可以通过引入安卓功能插件并对功能插件进行配置,构建python运行环境和java调用python的链路,从而使得基于第三语言(例如为java)编写的上层应用能够通过第二语言(例如可以是python)来调用dds中间件服务实现与目标操作系统的通信交互。
73.在步骤s310,创建开发应用,在上述开发应用的系统配置选项中添加网络使用权限的申请信息。
74.这里的开发应用是指待开发的要基于dds进行通信的应用。
75.在步骤s320,在上述开发应用中接入目标插件,对上述目标插件的配置信息进行设置。
76.上述目标插件是适配于安卓系统的功能插件,可以基于该目标插件实现第三语言和第二语言的交互,并构建第二语言环境(例如为python环境)。
77.目标插件的配置信息包括目标插件的元信息,诸如目标插件的插件标识(例如为名称、地址等)、目标插件的依赖信息、基于python的插件运行版本等。
78.在步骤s330,对上述目标插件的环境进行配置,上述环境包括:第二dds预编译安装包以及python版本。
79.上述环境可以包括目标插件的编译环境,具体包含编译依赖文件,上述编译依赖
文件包括:第二dds预编译安装包和第二语言执行环境包,第二语言执行环境包在这里描述为python版本。
80.例如上述步骤s320和s330中,对目标插件的配置信息进行设置和环境等进行配置可以在一个步骤中执行,包括配置python源码目录、基于python的插件运行版本和安装编译依赖文件等,安装编译依赖文件例如包括前述实施例中的whl文件。通过对目标插件进行配置,实现集成不同python版本和pip wheel安装管理功能。
81.在步骤s340,接收用户编写的基于dds通信的开发应用的第三语言程序代码,第三语言为java语言。
82.在步骤s350,对上述开发应用调用上述目标插件执行上述第三语言程序代码的链路进行配置。
83.上述开发应用的安装包里面封装有上述目标插件,上述应用通过上述目标插件调用上述第二语言dds中间件,基于上述第二语言dds中间件和上述第一语言dds中间件实现dds数据通信,基于该方法开发得到的应用安装包(例如为apk)在安装过程中无需其他额外的依赖,绿色安装可执行。
84.上述方法能够有效解决安卓系统的应用调用dds中间件与底层操作系统进行交互的问题,为安卓系统的汽车软件研发这一问题提供dds中间件安装和调用的先例;在一些实施例中,通过执行本公开实施例提供的dds中间件部署的方法,可以将cyclonedds源码包、cyclonedds-python源码包成功且相对简单的实现在安卓平台的安装及使用,同时由于安卓应用通过封装目标插件,支持python运行环境并构建了java调用python的链路,大大降低了对安卓应用支持dds通信这一需求的开发难度,并能够有效提高应用的运行稳定性,从而降低了安卓应用适配dds通信的软件开发难度。
85.示例性装置
86.图5是根据一示例性实施例示出的dds中间件部署的装置的框图。
87.参照图5所示,dds中间件部署的装置500包括:第一构建模块510、第二构建模块520、第三构建模块530和部署模块540。
88.上述第一构建模块510用于基于第一语言的dds源码,构建第一动态链接库;上述第一动态链接库为面向目标操作系统的动态链接库。
89.上述第二构建模块520用于基于第二语言的dds源码,构建面向上述目标操作系统的预编译安装文件。
90.上述第三构建模块530用于构建关于上述预编译安装文件的第二dds预编译安装包。
91.上述部署模块540用于基于上述第一动态链接库和上述第二dds预编译安装包,实现第一语言dds中间件和第二语言dds中间件在上述目标操作系统的部署。
92.其中,上述目标操作系统的开发应用采用第三语言编写,通过上述第二语言调用第一语言提供的dds中间件服务;上述第一语言dds中间件向下兼容于上述目标操作系统且无编译环境依赖,上述第二语言dds中间件能被上述目标操作系统的开发应用调用,上述第二语言dds中间件依赖上述第一语言dds中间件。
93.在一些实施例中,上述目标操作系统包括以下系统中的一种:linux系统、windows系统、macos系统、基于应用容器引擎docker技术的操作系统、android安卓系统。
specific integrated circuit,asic)或它们的组合。
109.存储器662可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
110.在本公开实施例中,存储器662中存储有一组代码,是一种基于dds通信的应用开发程序,处理器661可以执行该代码,以实现上述示例性实施例中任一所述的dds中间件部署的方法或者基于dds通信的应用开发的方法。
111.示例性电子设备
112.图7是根据一示例性实施例示出的电子设备的框图。
113.参照图7所示,该电子设备700可以是车辆控制器、车载终端、车载计算机或者其他类型的电子设备。电子设备700,可包括至少一个处理器710和存储器720。处理器710可以执行存储在存储器720中的指令。处理器710通过数据总线与存储器720通信连接。除存储器720外,处理器710还可通过数据总线与输入设备730、输出设备740、通信设备750通信连接。
114.处理器710可以是任何常规的处理器,诸如商业可获得的cpu。处理器还可以包括诸如图像处理器(graphic process unit,gpu),现场可编程门阵列(field programmable gate array,fpga)、片上系统(system on chip,soc)、专用集成芯片(application specific integrated circuit,asic)或它们的组合。
115.存储器720可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
116.在本公开实施例中,存储器720中存储有可执行指令,处理器710可以从所述存储器720中读取所述可执行指令,并执行所述指令以实现上述示例性实施例中任一所述的dds中间件部署的方法或基于dds通信的应用开发的方法的全部或部分步骤。
117.示例性计算机可读存储介质
118.除了上述方法和装置以外,本公开的示例性实施例还可以是计算机程序产品或存储有该计算机程序产品的计算机可读存储介质。该计算机产品中包括计算机程序指令,该计算机程序指令可被处理器执行,以实现上述示例性实施例中任一方法中描述的全部或部分步骤。
119.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本技术实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言以及脚本语言(例如python)。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
120.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的
例子包括:具有一个或多个导线电连接的静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘,或者上述的任意合适的组合。
121.本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
122.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

技术特征:
1.一种dds中间件部署的方法,其特征在于,包括:基于第一语言的dds源码,构建第一动态链接库;所述第一动态链接库为面向目标操作系统的动态链接库;基于第二语言的dds源码,构建面向所述目标操作系统的预编译安装文件;构建关于所述预编译安装文件的第二dds预编译安装包;基于所述第一动态链接库和所述第二dds预编译安装包,实现第一语言dds中间件和第二语言dds中间件在所述目标操作系统的部署;其中,所述目标操作系统的开发应用采用第三语言编写,通过所述第二语言调用第一语言提供的dds中间件服务;所述第一语言dds中间件向下兼容于所述目标操作系统且无编译环境依赖,所述第二语言dds中间件能被所述目标操作系统的开发应用调用,所述第二语言dds中间件依赖所述第一语言dds中间件。2.根据权利要求1所述的方法,其特征在于,所述目标操作系统包括以下系统中的一种:linux系统、windows系统、macos系统、基于应用容器引擎docker技术的操作系统、安卓系统。3.根据权利要求1所述的方法,其特征在于,所述目标操作系统为安卓系统;所述第一语言为c语言,所述第二语言为python语言;其中,基于第二语言的dds源码,构建面向所述目标操作系统的预编译安装文件,包括:对python语言的dds源码的程序启动编译脚本的配置文件进行修改,并对目标源码中引起编译安装失败的部分进行修改,得到适配于安卓系统的python环境的预编译安装文件。4.根据权利要求3所述的方法,其特征在于,对目标源码中引起编译安装失败的部分进行修改,包括:将所述第一动态链接库和所述第二dds预编译安装包的动态链接库文件拷贝至解压后的python语言的dds源码whl文件。5.根据权利要求3所述的方法,其特征在于,构建关于所述目标dds文件的第二dds预编译安装包,包括:基于bdist_wheel预编译模式,根据修改后的程序启动编译脚本,将所述预编译安装文件和依赖项打包成预编译安装包。6.根据权利要求1所述的方法,其特征在于,所述目标操作系统为安卓系统;所述第一语言为c语言;其中,所述基于第一语言的dds源码,构建第一动态链接库,包括:在linux操作系统上通过交叉编译的方式,对c语言的dds源码进行编译,得到适配于安卓系统的动态链接库。7.一种基于dds通信的应用开发的方法,其特征在于,所述应用用于在安卓系统运行,所述安卓系统基于权利要求1-6中任一项所述的方法实现第一语言dds中间件和第二语言dds中间件的部署;所述方法包括:创建开发应用,在所述开发应用的系统配置选项中添加网络使用权限的申请信息;在所述开发应用中接入目标插件,对所述目标插件的配置信息进行设置;
对所述目标插件的环境进行配置,所述环境包括:第二dds预编译安装包以及python版本;接收用户编写的基于dds通信的开发应用的第三语言程序代码,第三语言为java语言;对所述开发应用调用所述目标插件执行所述第三语言程序代码的链路进行配置;所述开发应用的安装包里面封装有所述目标插件,所述开发应用通过所述目标插件调用所述第二语言dds中间件,基于所述第二语言dds中间件和所述第一语言dds中间件实现dds数据通信。8.一种dds中间件部署的装置,其特征在于,包括:第一构建模块,用于基于第一语言的dds源码,构建一动态链接库;所述第一动态链接库为面向目标操作系统的动态链接库;第二构建模块,用于基于第二语言的dds源码,构建面向所述目标操作系统的预编译安装文件;第三构建模块,用于构建关于所述预编译安装文件的第二dds预编译安装包;部署模块,用于基于所述第一动态链接库和所述第二dds预编译安装包,实现第一语言dds中间件和第二语言dds中间件在所述目标操作系统的部署;其中,所述目标操作系统的开发应用采用第三语言编写,通过所述第二语言调用第一语言提供的dds中间件服务;所述第一语言dds中间件向下兼容于所述目标操作系统且无编译环境依赖,所述第二语言dds中间件能被所述目标操作系统的开发应用调用,所述第二语言dds中间件依赖所述第一语言dds中间件。9.一种电子设备,其特征在于,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现所述权利要求1-7中任一所述的方法。10.一种车辆,存储有一组指令集,所述指令集被所述车辆执行,以实现所述权利要求1-7中任一所述的方法。

技术总结
本公开涉及一种DDS中间件部署和应用开发的方法、装置、电子设备及车辆,该方法包括:基于第一语言的DDS源码,构建第一动态链接库;上述第一动态链接库为面向目标操作系统的动态链接库;基于第二语言的DDS源码,构建面向目标操作系统的预编译安装文件;构建关于上述预编译安装文件的第二DDS预编译安装包;基于上述第一动态链接库和上述第二DDS预编译安装包,实现第一语言DDS中间件和第二语言DDS中间件在上述目标操作系统的部署;上述目标操作系统的开发应用采用第三语言编写,通过上述第二语言调用第一语言提供的DDS中间件服务。通过阶梯式搭建两层DDS中间件,极大降低DDS中间件在目标操作系统的编译安装难度,并有助于上层应用的简化开发。用的简化开发。用的简化开发。


技术研发人员:李学坪
受保护的技术使用者:国科础石(重庆)软件有限公司
技术研发日:2023.06.25
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐