课程 7: 为发布者实体添加域参与者
在本课程中,您将为 MyPublisher 发布者实体添加域参与者。
程序
- 右键单击 PublisherPkg 软件包,然后选择 添加新 > DDS > domainParticipant。
- 打开域参与者元素的 " 特征 " 窗口,然后输入以下信息:
- 在 常规 选项卡上,将元素命名为 MyPublishingApplication ,然后单击 应用。 请注意,缺省情况下,还在 目录 字段中输入了相同的名称,并且在 类型 区域中选择了 可执行文件 。
- 在 作用域 选项卡上,选择 PublisherPkg。如果选中了其他复选框,请将其清除。 单击“确定”。
- 在 常规 选项卡上,将元素命名为 MyPublishingApplication ,然后单击 应用。
- 指定 MyPublishing应用程序域参与者的配置:
- 在 MyPublishing应用程序 下打开 DefaultConfig 配置的 功能部件 窗口
- 在 初始化 选项卡上,展开 PublisherPkg ,然后选择 MyPublisher
- 在 设置 选项卡上,选择 MSVC 或 Linux 环境,然后单击 确定
- 如果在上一步中选择了 MSVC ,请转至 属性 选项卡并设置 CPP_CG ::MSVC ::IDEVersion 属性的值以反映您正在使用的 MS Visual Studio 版本 (VC11 for Visual Studio 2012 , VC14 for Visual Studio 2015 和 VC15 for Visual Studio 2017)。
- 修改 CPP_CG: :RTIMSVC::LibPath 属性 (如果要开发 Windows 应用程序) 或 CPP_CG ::RTILinux ::LibPath 属性 (如果要开发 Linux® 应用程序) 的值。 该属性的值应该是适合于您的环境的 RTI 库目录的名称。 目录名称反映以下变量: 32 位或 64 位,操作系统和编译器。 例如,如果您正在运行 64 位 Windows 并使用 Visual Studio 2017 编译器,那么相应的库目录为 x64Win64VS2017。 请检查 RTI 安装中库目录的名称,以验证是否正确输入了目录名称。
- 将依赖关系从 MyPublishing应用程序域参与者添加到 MyTopicStructLib 域参与者:
- 右键单击 MyPublishing应用程序 ,然后选择 添加新 > 关系 > 依赖关系
- 在 " 添加依赖关系 " 窗口上,选择 TopicsPkg中的 MyTopicStructLib
- 从浏览器中,打开依赖关系的 " 特征 " 窗口并输入以下信息:
- 在 常规 选项卡上的 构造型 字段中,选择 PredefinedTypes
- 确保 用法 字段设置为 规范,然后单击 确定。此依赖关系允许在注册 MyTopicStruct 并创建 MyTopic 时使用 MyTopicStructLib 的函数。 依赖关系还提供了来自 MyTopicStructLib 的函数来创建 MyDataWriter。
- 生成代码: 选择 代码 > 生成 > DefaultConfig。注: 由于您在本课程中创建了 PublisherPkg 包,因此 DefaultConfig 配置已设置为活动配置。
- 在 MyPublishing应用程序域参与者下,右键单击 DefaultConfig 配置,然后选择 编辑配置主文件。请注意,代码生成创建了名为
MyPublishingApplicationDP的单项类。 此类是DDS::DomainParticipant实体的包装器。 它提供以下 API:DDS::DomainParticipant* getDomainParticipant(): 获取此类的DDS::DomainParticipant成员DDS::TopicDescription* lookupTopicDescription(char* topicName): DDS 标准 API 调用的包装器DDS::DomainParticipant::lookup_topicdescriptionstatic MyPublishingApplicationDP* instance(): 允许接收此类的单项实例的单项操作
- 切换到主文件 (.cpp 文件) 实现的选项卡。您可以在
MyPublishingApplicationDP的构造函数中看到以下操作:- 已创建
DDS::DomainParticipant元素 - MyTopic结构已注册
- MyTopic 已创建
最后两个元素是 MyDataWriter (位于域参与者组件的作用域中) 更新 MyTopic的表示法的结果。
正如发布者实体的图形状所暗示的那样,为发布者实体生成的代码是一个类。 此类包含在构造新类实例期间初始化的
DDS::Publisher指针的属性。 它还包含一个名为MyDataWriter的MyTopicStructDataWriter指针,该指针表示您创建的 dataWriter 元素。MyTopicStructDataWriter指针是在从名为 MyTopicStructLib的域参与者组件中的DDSMyTopicStructLib.idl文件生成的文件中定义的。如果编辑 MyPublisher的代码,那么您会看到在其构造期间,将调用
MyPublishingApplicationDP以检索其DDS::DomainParticipant成员,以便可以创建DDS::Publisher元素。 您还可以找到以下操作:DDS::ReturnCode_t publishMyDataWriter(const MyTopicStruct& data);此操作是
MyTopicStructDataWriter::write的包装器。 此函数是从生成的DDSMyTopicStructLib.idl文件生成的。 - 已创建
课程复习要点
在本课程中,您学习了如何将域参与者添加到 MyPublisher 发布程序实体。
在下一课中,您将添加一些代码以将数据发布到 MyTopic 主题元素。