CN116339696A - 一种可扩展自动生成跨平台多语言接口的系统及方法 - Google Patents

一种可扩展自动生成跨平台多语言接口的系统及方法 Download PDF

Info

Publication number
CN116339696A
CN116339696A CN202310290157.1A CN202310290157A CN116339696A CN 116339696 A CN116339696 A CN 116339696A CN 202310290157 A CN202310290157 A CN 202310290157A CN 116339696 A CN116339696 A CN 116339696A
Authority
CN
China
Prior art keywords
language
interface
module
languages
calling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310290157.1A
Other languages
English (en)
Inventor
徐东升
陈诚
张旸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AutoCore Intelligence Technology Nanjing Co Ltd
Original Assignee
AutoCore Intelligence Technology Nanjing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AutoCore Intelligence Technology Nanjing Co Ltd filed Critical AutoCore Intelligence Technology Nanjing Co Ltd
Priority to CN202310290157.1A priority Critical patent/CN116339696A/zh
Publication of CN116339696A publication Critical patent/CN116339696A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种可扩展自动生成跨平台多语言接口的系统及方法,包括调用生成模块、函数生成模块、类型转换模块、底层调用生成模块、C封装接口模块;调用生成模块,基于各种语言的不同,生成对应语言用于调用接口生成系统的最佳方式;函数生成模块,基于不同语言的特点,生成供不同语言调用的中间函数;类型转换模块,基于不同语言对于C语言参数类型的对照,把底层调用的参数类型转换为供转换后语言使用的参数类型;底层调用生成模块,用于调用底层C模块的代码实现;C封装接口模块,用于封装底层语言实现,以达到暴露接口给上层各种语言,屏蔽底层实现的目的。本发明可以同时支持多种语言接口的生成,可以动态扩展其他语言的接口。

Description

一种可扩展自动生成跨平台多语言接口的系统及方法
技术领域
本发明涉及中间件相关技术,尤其涉及一种可扩展自动生成跨平台多语言接口的系统及方法。
背景技术
为应对日趋复杂的汽车电子电气系统,对自动驾驶汽车的电子电气架构研究是非常必要的,亦是非常重要的。自动驾驶汽车电子电气架构的技术研究不仅促进自动驾驶系统技术的发展,也可以延长汽车的产业链和拓展汽车产业的涉及面。
中间件相关技术在计算机分布式系统中发展了很多年,尤其在互联网服务、大型商业系统中得到广泛使用。随着智能网联汽车的发展,现代汽车也逐步增加了以太网支持,这让之前的很多分布式系统技术也可以运用到汽车软件中,比如SOA软件架构。所以,基于SOA的中间件也得到了越来越多的重视。
目前很多产品系统都需要支持多平台,多语言的接口,以满足产品被更广泛的使用。目前汽车中间件大部分代码是由C++语言完成,支持多语言跨平台很重要。目前实现的跨平台,多语言的接口存在很多的问题,并不能很好的完成接口开发的工作以及低耦合等问题,缺点如下:
(1)汽车中间件大部分代码是由C++写成,而大部分语言并不能很好的支持和C++的互通,比如C#,Rust要通过C语言才能与C++互通,造成接口开发困难。
(2)通过C语言暴露C++的接口,由于设计实现的时候很多都只考虑功能实现合理与否,未考虑接口实现与多语言的扩展,导致很多接口即使通过C语言来暴露接口也会有C++对象以及内部逻辑细节通过接口返回,给跨语言接口实现带来难度,使接口与实现耦合度增强,导致更改逻辑代码,会影响多种语言接口的改动。
(3)每开发一种新的产品,提供新的功能都要重复实现新的接口一遍,如前(2)所述,如果功能与接口设计不合理,可能会导致每开发一个产品实现一个接口都会很复杂。
发明内容
为解决现有技术中存在的不足,本发明的目的在于,提供一种可扩展自动生成跨平台多语言接口的系统及方法。
为实现本发明的目的,本发明所采用的技术方案是:
一种可扩展自动生成跨平台多语言接口的系统,包括调用生成模块、函数生成模块、类型转换模块、底层调用生成模块、C封装接口模块;其中,调用生成模块,基于各种语言的不同,生成对应语言用于调用接口生成系统的最佳方式;函数生成模块,基于不同语言的特点,生成供不同语言调用的中间函数;类型转换模块,基于不同语言对于C语言参数类型的对照,把底层调用的参数类型转换为供转换后语言使用的参数类型;底层调用生成模块,用于调用底层C模块的代码实现;C封装接口模块,用于封装底层语言实现,以达到暴露接口给上层各种语言,屏蔽底层实现的目的。
进一步地,调用生成模块,基于各个语言的不同,在各个调用的语言中生成对接口生成系统的调用代码。
进一步地,函数生成模块,根据不同的语言,生成用于该种语言调用的中间函数形式;中间函数原型为void func(int i);,根据不同的语言和操作系统的不同,生成相应语言的不同的中间函数原型用于调用。
进一步地,Java中间函数接口为JNIEXPORT void JNICALL PackageName_ClassName_func(JNIEnv,jclass,jint);,
C#中间函数接口为extern"C"_decispec(dllexport)int func(void);,
Rust中间函数接口在Windows系统为extern"C"_decispec(dllexport)int func(void);,在Linux&Mac系统中为extern"C"_attribute((visibility("default")))voidfunc(int);。
进一步地,类型转换模块,通过输入参数得到的变量定义与声明,根据需要转换的语言类型,通过查找对应语言的类型对应表,找到需要转换的类型,来重新定义声明对应语言的一条或多条转换后的语句。
进一步地,底层调用生成模块,在上面各个模块生成代码的基础上,嵌入可直接调用的C代码,完成从顶层的各种语言到C层的调用。
进一步地,C封装接口模块,封装底层面向对象语言C++的底层实现,隐藏对象的定义与维护,只暴露最基本的数据操作,返回最基本各个语言的基本类型。
一种可扩展自动生成跨平台多语言接口的方法,具体包括步骤:
(1)基于各个语言的不同,生成对应调用语言中用于调用接口生成系统的最佳方式,形成对接口生成系统的调用代码;
(2)基于不同语言的特点,生成供不同语言调用的中间函数;
(3)基于不同语言对于C语言参数类型的对照,把底层调用的参数类型转换为供转换后语言使用的参数类型;
(4)在上面各个模块生成代码的基础上,嵌入可直接调用的C代码,完成从顶层的各种语言到C层的调用;
(5)封装底层面向对象语言C++的底层实现,隐藏对象的定义与维护,只暴露最基本的数据操作,返回最基本各个语言的基本类型。
本发明的有益效果在于,与现有技术相比,本发明提出一套统一的实现多种语言接口的方法,可以同时支持多种语言接口的生成;提取各种语言接口实现机制的通用部分,避免每种语言都要单独实现独立的接口,以达到功能复用的作用;提出动态实现生成多种语言接口的方法,避免每新增模块,功能都要重新完成一遍所有接口,减少不必要的大工作量;基于语言的实现细节,可以动态扩展其他语言的接口,基于本发明提供的方法和系统只需少量工作便可扩展接口。
附图说明
图1是本发明所述的可扩展自动生成跨平台多语言接口的系统示意图;
图2是调用生成模块的作用示意图;
图3是函数生成模块的作用示意图;
图4是类型转换模块的作用示意图;
图5是类型转换对应表。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本申请的保护范围。
如图1所示,本发明所述的可扩展自动生成跨平台多语言接口的系统,包括五大模块:调用生成模块、函数生成模块、类型转换模块、底层调用生成模块、C封装接口模块。
其中,调用生成模块,基于各种语言的不同,生成对应语言用于调用接口生成系统的最佳方式,形成调用代码。
函数生成模块,基于不同语言的特点,生成供不同语言调用的中间函数。
类型转换模块,基于不同语言对于C语言参数类型的对照,把底层调用的参数类型转换为供转换后语言使用的参数类型。
底层调用生成模块,用于调用底层C模块的代码实现。
C封装接口模块,用于封装底层语言实现,以达到暴露接口给上层各种语言,屏蔽底层实现的目的。
如图2所示,调用生成模块的作用是基于各个语言的不同,在各个调用的语言中,生成对接口生成系统的调用代码,例如,Java函数调用代码、C#函数调用代码、Rust函数调用代码等,使得代码改动可以专注于上层代码的编写。
如图3所示,函数生成模块的作用是根据不同的语言,生成用于该种语言调用的中间函数形式。中间函数原型为void func(int i);,根据不同的语言和操作系统的不同,生成相应语言的不同的中间函数原型用于调用。例如,Java中间函数接口为JNIEXPORT voidJNICALL PackageName_ClassName_func(JNIEnv,jclass,jint);,C#中间函数接口为extern"C"_decispec(dllexport)int func(void);,Rust中间函数接口在Windows系统为extern"C"_decispec(dllexport)int func(void);,在Linux&Mac系统中为extern"C"_attribute((visibility("default")))void func(int);等。
如图4所示,类型转换模块,通过输入参数得到的变量定义与声明,根据需要转换的语言类型,通过查找对应语言的类型对应表,找到需要转换的类型,来重新定义声明对应语言的一条或多条转换后的语句。类型转换对应表如图5所示。
底层调用生成模块,其作用是在上面各个模块生成代码的基础上,嵌入可直接调用的C代码,完成从顶层的各种语言到C层的调用。
C封装接口模块,用于封装底层面向对象语言C++的底层实现,隐藏对象的定义,与维护,只暴露最基本的数据操作,返回最基本各个语言的基本类型,不涉及复杂类型的传递。
本发明还提供一种可扩展自动生成跨平台多语言接口的方法,具体包括步骤:
(1)基于各个语言的不同,生成对应调用语言中用于调用接口生成系统的最佳方式,形成对接口生成系统的调用代码,使得代码改动可以专注于上层代码的编写;
(2)基于不同语言的特点,生成供不同语言调用的中间函数;根据不同的语言和操作系统的不同,生成相应语言的不同的中间函数原型用于调用;
(3)基于不同语言对于C语言参数类型的对照,把底层调用的参数类型转换为供转换后语言使用的参数类型;通过输入参数得到的变量定义与声明,根据需要转换的语言类型,通过查找对应语言的类型对应表,找到需要转换的类型,来重新定义声明对应语言的一条或多条转换后的语句;
(4)在上面各个模块生成代码的基础上,嵌入可直接调用的C代码,完成从顶层的各种语言到C层的调用;
(5)封装底层面向对象语言C++的底层实现,隐藏对象的定义,与维护,只暴露最基本的数据操作,返回最基本各个语言的基本类型。
本发明的有益效果在于,与现有技术相比,本发明提出一套统一的实现多种语言接口的方法,可以同时支持多种语言接口的生成;提取各种语言接口实现机制的通用部分,避免每种语言都要单独实现独立的接口,以达到功能复用的作用;提出动态实现生成多种语言接口的方法,避免每新增模块,功能都要重新完成一遍所有接口,减少不必要的大工作量;基于语言的实现细节,可以动态扩展其他语言的接口,基于本发明提供的方法和系统只需少量工作便可扩展接口。
本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。

Claims (8)

1.一种可扩展自动生成跨平台多语言接口的系统,其特征在于,包括调用生成模块、函数生成模块、类型转换模块、底层调用生成模块、C封装接口模块;
其中,调用生成模块,基于各种语言的不同,生成对应语言用于调用接口生成系统的最佳方式;
函数生成模块,基于不同语言的特点,生成供不同语言调用的中间函数;
类型转换模块,基于不同语言对于C语言参数类型的对照,把底层调用的参数类型转换为供转换后语言使用的参数类型;
底层调用生成模块,用于调用底层C模块的代码实现;
C封装接口模块,用于封装底层语言实现,以达到暴露接口给上层各种语言,屏蔽底层实现的目的。
2.根据权利要求1所述的可扩展自动生成跨平台多语言接口的系统,其特征在于,调用生成模块,基于各个语言的不同,在各个调用的语言中生成对接口生成系统的调用代码。
3.根据权利要求1所述的可扩展自动生成跨平台多语言接口的系统,其特征在于,函数生成模块,根据不同的语言,生成用于该种语言调用的中间函数形式;中间函数原型为voidfunc(int i);,根据不同的语言和操作系统的不同,生成相应语言的不同的中间函数原型用于调用。
4.根据权利要求3所述的可扩展自动生成跨平台多语言接口的系统,其特征在于,Java中间函数接口为JNIEXPORT void JNICALL PackageName_ClassName_func(JNIEnv,jclass,jint);,
C#中间函数接口为extern"C"_decispec(dllexport)int func(void);,
Rust中间函数接口在Windows系统为extern"C"_decispec(dllexport)int func(void);,在Linux&Mac系统中为extern"C"_attribute((visibility("default")))voidfunc(int);。
5.根据权利要求1所述的可扩展自动生成跨平台多语言接口的系统,其特征在于,类型转换模块,通过输入参数得到的变量定义与声明,根据需要转换的语言类型,通过查找对应语言的类型对应表,找到需要转换的类型,来重新定义声明对应语言的一条或多条转换后的语句。
6.根据权利要求1所述的可扩展自动生成跨平台多语言接口的系统,其特征在于,底层调用生成模块,在上面各个模块生成代码的基础上,嵌入可直接调用的C代码,完成从顶层的各种语言到C层的调用。
7.根据权利要求1所述的可扩展自动生成跨平台多语言接口的系统,其特征在于,C封装接口模块,封装底层面向对象语言C++的底层实现,隐藏对象的定义与维护,只暴露最基本的数据操作,返回最基本各个语言的基本类型。
8.一种可扩展自动生成跨平台多语言接口的方法,基于权利要求1-7任一所述的可扩展自动生成跨平台多语言接口的系统,其特征在于,具体包括步骤:
(1)基于各个语言的不同,生成对应调用语言中用于调用接口生成系统的最佳方式,形成对接口生成系统的调用代码;
(2)基于不同语言的特点,生成供不同语言调用的中间函数;
(3)基于不同语言对于C语言参数类型的对照,把底层调用的参数类型转换为供转换后语言使用的参数类型;
(4)在上面各个模块生成代码的基础上,嵌入可直接调用的C代码,完成从顶层的各种语言到C层的调用;
(5)封装底层面向对象语言C++的底层实现,隐藏对象的定义与维护,只暴露最基本的数据操作,返回最基本各个语言的基本类型。
CN202310290157.1A 2023-03-23 2023-03-23 一种可扩展自动生成跨平台多语言接口的系统及方法 Pending CN116339696A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310290157.1A CN116339696A (zh) 2023-03-23 2023-03-23 一种可扩展自动生成跨平台多语言接口的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310290157.1A CN116339696A (zh) 2023-03-23 2023-03-23 一种可扩展自动生成跨平台多语言接口的系统及方法

Publications (1)

Publication Number Publication Date
CN116339696A true CN116339696A (zh) 2023-06-27

Family

ID=86878481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310290157.1A Pending CN116339696A (zh) 2023-03-23 2023-03-23 一种可扩展自动生成跨平台多语言接口的系统及方法

Country Status (1)

Country Link
CN (1) CN116339696A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117041304A (zh) * 2023-10-10 2023-11-10 南京翼辉信息技术有限公司 一种车载原子服务系统及其控制方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117041304A (zh) * 2023-10-10 2023-11-10 南京翼辉信息技术有限公司 一种车载原子服务系统及其控制方法
CN117041304B (zh) * 2023-10-10 2023-12-19 南京翼辉信息技术有限公司 一种车载原子服务系统及其控制方法

Similar Documents

Publication Publication Date Title
CN108681444A (zh) 一种基于xml技术的软plc组态开发方法
US5307499A (en) Interpretive object-oriented facility which can access pre-compiled classes
EP2169547B1 (en) Compilation model for programmable logic controllers (PLC).
US5459868A (en) Interpretive object-oriented facility which can access pre-compiled classes
CN101751028B (zh) 汽车电控单元通用标定系统及实现方法
CN112711408A (zh) 基于Vue组件化的可视化配置渲染方法、系统、终端
WO2017177695A1 (zh) 一种数控系统中应用的开发与集成方法及系统
CN116339696A (zh) 一种可扩展自动生成跨平台多语言接口的系统及方法
CN102043622A (zh) 一种电子控制器基础软件通用配置器
Thramboulidis IEC 61499 as an Enabler of Distributed and Intelligent Automation: A State‐of‐the‐Art Review—A Different View
CN101876917A (zh) 一种开发控件的方法及装置
US5901314A (en) Method for reducing the size of computer programs
CN101158894B (zh) 一种构件化软件系统中动态自动适配的编程系统及方法
CN110780971A (zh) 一种可视化的医疗数据映射、转换工具的实现方法及系统
CN104699518A (zh) 一种基于微内核插件的万用抄表机适配器及其实现方法
CN103530165B (zh) 一种应用于物联网行业的java解决方案
CN111399829A (zh) 一种基于模型驱动的波形建模方法及终端
Thramboulidis Using UML for the development of distributed industrial process measurement and control systems
CN111538485B (zh) 基于TypeScript的web应用开发方法和系统
CN104657136A (zh) Simulink组件的集成系统
CN116909543A (zh) 基于微服务架构的ot域工业组件建模及其代码生成方法
CN102779036B (zh) 用于自动化技术的软件工具
CN114461186A (zh) 一种面向华为昇腾加速卡的自动编译运行c/c++代码的方法
CN113434118A (zh) 基于Java平台的集中器的分层架构系统
Yacoub et al. A model for classifying component interfaces

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Country or region after: China

Address after: 12th Floor, Building 5, Jieyuan Financial City, No. 55 Andemen Street, Yuhuatai District, Nanjing City, Jiangsu Province, China 210012

Applicant after: AUTOCORE INTELLIGENT TECHNOLOGY (NANJING) Co.,Ltd.

Address before: 210012 room 401-404, building 5, chuqiaocheng, No. 57, Andemen street, Yuhuatai District, Nanjing, Jiangsu Province

Applicant before: AUTOCORE INTELLIGENT TECHNOLOGY (NANJING) Co.,Ltd.

Country or region before: China

CB02 Change of applicant information