DDS技术分享(二)---IDL
1.IDL是什么
IDL(Interface Definition Language,接口定义语言)用于定义软件组件间的接口。为什么会用这个东西?因为在项目开发过程中,最麻烦改动量最大的文件就是接口文件。
你要找各个项目的人员对接需求,找各个模块的人确认需求然后形成文档。好不容易收集完成以后实现又是一个大问题,因为这个涉及到接口的定义和软件代码的实现。
如果换了项目呢?怎么办?恐怕需要大量的修改代码,本来稳定的软件又是一塌糊涂。
因此IDL成为解决这些复杂系统的标准化和跨平台协作的工具。
2.IDL文件结构定义
IDL有自己的语法规范:
(1)文件头部声明:syntax 语法版本 package 包名 import 导入等语法
(2)数据类型定义:
基础类型:int32、string、bool 等
复合类型:struct、message等。
枚举:enum
举例:
struct Hello
{
unsigned long index;
string message;
};
enum Status
{
UNKNOWN = 0;
ACTIVE = 1;
INACTIVE = 2;
}
这些直接在.idl中添加即可完成。
3.生成中间代码
idl文件根据语法写完以后需要生成对应的接口。
虽然idl文件接口设置的不多,但是生成的接口文件是不会少的,需要生成全部的接口文件是一个很复杂的过程,当然会有一定的规则,可以利用python脚本等辅助生成。
DDS/Fast-DDS-Gen/scripts/fastddsgen ./idl/HelloWorld.idl -d ./src-gen
生成接口文档
接口文档里面生成许多接口的实现,如图所示:
这些接口文件里面实现了许多的应用,比如怎么publish 怎么subcrbe等的应用接口具体的实现,在应用的的时候直接将其调用相应的接口即可完成。
下一章将讨论实现接口调用的步骤