eProsima FAST DDS v2.12.2 -(4)FAST DDS-GEN

416 阅读11分钟

1 介绍

eProsima Fast DDS-Gen是一个Java应用程序,它使用在IDL(接口定义语言)文件中定义的数据类型来生成eProsima Fast DDS源代码。生成的源代码可以用于任何Fast DDS应用程序,以定义主题的数据类型,这些数据类型稍后将用于发布或订阅。eProsima Fast DDS通过两个类来定义主题中交换的数据类型:TypeSupport和TopicDataType。TopicDataType描述了发布和订阅之间交换的数据类型,即与主题对应的数据;而TypeSupport封装了TopicDataType的实例,提供了注册类型和与发布和订阅交互所需的函数。有关数据类型的定义,请参阅数据类型的定义以获取更多信息。

为了声明结构化数据,必须使用IDL格式。IDL是由OMG(对象管理组)制定的一种规范语言,以语言无关的方式描述接口,允许不共享相同语言的软件组件之间进行通信。eProsima Fast DDS-Gen工具读取IDL文件并解析OMG IDL规范的子集,以生成用于数据序列化的源代码。这个子集包括在通过IDL定义数据类型中包含的数据类型描述。文件的其余内容将被忽略。

eProsima Fast DDS-Gen生成的源代码使用Fast CDR,这是一个C++11库,提供数据序列化和编码机制。因此,根据RTPS标准,在发送数据时,它们将使用相应的公共数据表示(CDR)进行序列化和编码。CDR传输语法是用于代理之间传输的低级表示,将OMG IDL数据类型映射到字节流。有关CDR传输语法的更多信息,请参阅官方CDR规范(请参阅PDF第15.3节)。

eProsima Fast DDS-Gen的主要特点是在不需要了解序列化或反序列化机制的情况下,方便实现DDS应用程序。使用Fast DDS-Gen,还可以生成带有发布者和订阅者的DDS应用程序的C++源代码,这些应用程序使用eProsima Fast DDS库(请参阅构建发布/订阅应用程序)。Fast DDS-Gen还可以为数据类型生成Python绑定,以便在基于Python的Fast DDS应用程序中使用它们(请参阅构建Python辅助库)。

安装Fast DDS-Gen,请参考:Linux下的Fast DDS-Gen安装(安装手册第3节)或Windows下的Fast DDS-Gen安装(安装手册第4节)。

2 用法

本节介绍了 Fast DDS-Gen 工具的使用方法,并简要描述了生成的文件。

2.1 运行FastDDS Gen Java应用程序

首先,必须按照 Linux 安装 Fast DDS-Gen 或 Windows 安装 Fast DDS-Gen 中概述的步骤来安装 Fast DDS-Gen。根据本节的说明,scripts 文件夹中提供了一个可在 Linux 和 Windows 上运行 Java Fast DDS-Gen 应用程序的可执行文件。如果将 scripts 文件夹的路径添加到 PATH 环境变量中,就可以通过以下命令来执行 Fast DDS-Gen:

  • linux:

  • Windows:

如果 PATH 环境变量没去改,这些脚本可以在 <fastddsgen_directory>/scripts 目录中找到。

2.2 参数选项

该应用程序的预期参数列表为:

其中选项选择如下:

选项

描述

-cdr

设置用于生成类型源代码的 Fast CDR 版本。

取值:

  • v1。生成适用于 Fast CDR v1 的源代码。

  • v2(默认值)。生成适用于 Fast CDR v2 的源代码。

  • both。同时生成适用于 Fast CDR v1 和 Fast CDR v2 的源代码。

-cs

启用大小写敏感性。

-d

设置生成文件的输出目录。

-default_extensibility

-de

设置没有 @extensibility 注解的类型的默认可扩展性。

取值:

  • final

  • appendable(默认值)

  • mutable

-example

生成一个示例和一个解决方案,用于编译针对特定平台生成的源代码。help 命令会显示支持的平台。

-extrastg