使用RTI Connext DDS

时间:2020-05-09 12:17:10

标签: routes data-distribution-service

有一个已编译的桌面应用程序,我无法访问源代码。该应用程序生成真实的飞行数据,并提供了通过网络将这些数据发送到所需套接字的机会。

我可以使用我使用经典的客户端-服务器方法(在C#中)编写的程序来接收此数据。 但是我想将DDS集成到我的项目中,并使用RTİConnext DDS进行此操作。

我知道要使用DDS,发布者和订阅者双方的“ QoS”和“主题”等设置必须相同。在我创建并订阅的应用程序中进行这些设置似乎很容易。但是我无法访问发布者应用程序的源代码,因此无法为发布者端的数据通信设置诸如“ QoS”和“主题”之类的参数。

作为研究的结果,我了解到应该使用路由服务来执行此操作。 路由服务能否在没有QoS和主题定义的情况下在应用程序之间提供数据传输?还是自动为数据传输进行必要的设置?

我对此并不陌生,正在尝试学习。如果有人帮助我理解我会很高兴

1 个答案:

答案 0 :(得分:0)

将现有应用程序与基于DDS的系统集成的一种方法是引入一个应用程序,该应用程序接收来自现有应用程序的数据,然后在将其转换为预期格式后将其转发到DDS域。 RTI的路由服务旨在以一种通用的方式实现这一目标,但是您也可以使用自己的C#程序来实现这一目标。

使用路由服务(RS)时,可以使用配置文件选择所有必需的设置,例如主题和类型名称以及QoS设置。困难的部分是从原始应用程序接收数据,因为这特定于您的情况,而RS是通用组件。路由服务允许插入自己的所谓适配器,该适配器基本上是可加载的插件,负责从现有应用程序中读取数据-您必须自己编写代码。此外,可以使用所谓的处理器自定义该数据的转换,这也是您必须自己编写的软件。

在您的情况下,在此阶段,似乎更合适的方法是扩展使用经典客户端-服务器方法读取数据的C#应用​​程序,并将其转发到DDS域。为此,您将必须在IDL中定义DDS数据类型(如果尚未定义),并让RTI代码生成器生成关联的C#数据类型和强类型的C#DataWriter类以发布数据。您的应用程序将必须侦听来自现有(服务器)应用程序的数据,在到达时对其进行读取,并根据DDS代码生成器生成的C#数据类型对其进行格式化,然后将其转发到DDS DataWriter。您可以使用常规DDS机制根据需要使用主题和类型名称以及QoS设置来配置后者。

一旦您的扩展C#应用程序将数据转发到DDS域,其他应用程序就可以直接订阅该数据。确实,这是选择正确的主题并设置正确的QoS策略的问题。到目前为止,从问题描述来看,您似乎不需要路由服务。

应用路由服务时的常见示例是:

  • 在构建系统系统时,路由服务可以在它们之间透明地转发DDS数据-有点像IP路由器用于IP流量。示例是分层的数据总线体系结构和系统,其中包括需要互连的不同子网或地理位置分散的DDS域。
  • 如果要从其他类型的“数据域”向DDS域导入信息或从DDS域导入信息,则路由服务为此提供了通用框架。就像您的情况一样,这通常需要自定义插件以进行所需的数据转换。开箱即用的其他示例是与关系数据库的集成,用于记录时间序列或捕获DDS域的当前状态。
相关问题