2个独立的系统,如何让他们沟通

时间:2015-07-09 13:28:41

标签: sql qt user-interface communication data-distribution-service

我有一个DDS系统(OMG DDS),他通过无线电与ROS节点进行通信。收到的信息是一个具有速度,状态,经度,纬度等的结构。这很好用,我的DDS客户端可以通过无线电打印从节点传输的信息。现在,我有一个用Qt编写的GUI应用程序,他创建模型并将它们放在预定义的地图上。这些模型已经定义了集合信息函数,这些函数在被触发时更新地图,以便平滑地显示它接收的信息。

现在问题是,我不知道如何让GUI应用程序与我的DDS客户端通信。我宁愿不要将这两者交织在一起,因为我已经遇到了麻烦,只是让DDS客户端和发送者工作并用ROS编译。我虽然有一个单独的队列系统,可以包含在DDS客户端和GUI应用程序中,但我不知道这是否可行。我还想写一个SQL数据库,然后推送新数据,并在我的GUI应用程序中检测到新数据时提取新数据。某种on_data_available函数触发了pull-function。我听说最后一个是个坏主意,因为我只使用一组数据不断更新(模型代表一个USV),然后数据库被认为是矫枉过正,但我​​想在这里得到输入。

对不起,如果这不是足够的信息,我无法真正提供代码示例,原因各不相同。如果有人有任何意见,请大声喊出来,希望听到他们的意见。如果我不够具体,那就试着尽可能地重写它。

1 个答案:

答案 0 :(得分:0)

  

我不知道如何让GUI应用程序与我的通信   DDS-客户端

您的问题并非特定于DDS或您的GUI应用程序 - 您基本上要求一种简单方便的inter-process communication (IPC)机制。正如您在关注链接时所看到的那样,有许多不同的选项。

鉴于您已经拥有数据以及DDS中可用的相关类型定义,我怀疑使用DDS执行此任务仍然是最简单的方法。您可以将其设置为通过共享内存或本地环回进行通信。 DDS将进行所有发现和沟通,包括(跨语言)de / serialization。如果您选择不同的机制,您最终可能会自己做更多的工作。

作为替代方案,一些DDS实施(商业)支持native integration with SQL databases。这些将内省DDS数据定义并为您创建所有必需的表。 DDS的更新会自动转发到数据库,反之亦然。您可以从该数据库中提供GUI。