问题标签 [data-distribution-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
93 浏览

sql - 2个独立的系统,如何使它们通信

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

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

如果这不是足够的信息,我很抱歉,由于不同的原因,我不能真正提供代码示例。如果有人有任何意见,请大声喊出来,很想听到他们的声音。如果我不够具体,我会尽可能地重写它。

0 投票
3 回答
1319 浏览

c++ - pragma keylist 关键字有什么作用?

在阅读各种物联网消息协议时,我遇到了一个定义如下的结构:

我的问题是:这个#pragma keylist关键字有什么作用,我在哪里可以找到一些关于使用#pragma预处理器指令的文档(我相信它就是这样的指令......)。

谢谢。

0 投票
1 回答
1287 浏览

ace - OpenDDS - message_writer->write(...) 错误 DDS::RETCODE_TIMEOUT

我正在 openDDS 中创建一个简单的消息程序。该程序使用发布者和订阅者。在发布者中,我写了一条消息:

当我尝试从 180 字节发送到 3012 字节时,写入器失败并显示:

错误 10 (== DDS::RETCODE_TIMEOUT)

,大约 260 条消息后(我正在尝试发送 1500 条消息)。我觉得奇怪的是,当我发送来自 1 <= x < 180 和 3012 > x > 102400+ 字节的消息时,它会起作用。

我收到了作家方面的错误。在我做的作家下面:

我的 idl 文件是这样的:

所以这使用了TAO字符串管理器。我将 char* 传递到消息中。

然后像以前一样写消息

参与者:

话题:

出版商:

作家:

任何帮助都将不胜感激。谢谢!

0 投票
2 回答
242 浏览

c++ - 将多态 C++ 对象转换为非多态 C 对象

只是这个奇怪问题的一点背景:我有一个网络框架(RTI DDS),它有一个 C 序列化函数,它接受一个指针并将 C 结构转换为字符串。

它也(并且也设计用于)C++ 类。但是,如果我通过添加虚函数使 C++ 类具有多态性,则此序列化功能会出现段错误,有时甚至更糟,会提供错误的输出。

我假设它在内部对结构的内存布局做出了假设。

是否可以从多态 C++ 对象中获取原始 C 指针?

我知道我可以创建每个结构两次,一次是多态的,一次是非多态的,但这会导致大量的胶水代码。

目前我没有想法。

一些技术背景: C 函数在 RTI DDS Source 包中:

DynamicData.c DDS_ReturnCode_t DDS_DynamicData_to_cdr_buffer(...) { ..

0 投票
1 回答
388 浏览

data-distribution-service - 将数据发送到 OpenSplice (DDS)

我是 DDS 和 opensplice 的新手,所以这可能很简单,但我不明白。

我正在阅读 opensplice 文档中的读取器缓存和写入器缓存。我知道数据进入数据写入器缓存,然后发送到数据读取器缓存。但是,首先如何将您拥有的信息推送到数据写入器缓存中呢?

当您发布或订阅设备或应用程序到主题时,是否有单独的命令或者数据会自动发送到缓存?

我想总而言之,我的问题是,数据如何进入 opensplice/数据写入器缓存?

我很感激任何帮助。就像我说的,我一直在阅读教程和参考指南。我看到很多关于当信息在 opensplice 中时会发生什么,但我不知道你是如何把它放在那里的。如果可能的话,你也可以链接到一个例子吗?

谢谢

0 投票
3 回答
561 浏览

c++ - 不要破坏 DDS 系统中的向后兼容消息

我参与了一个使用DDS作为通信协议和C++作为语言的项目。如您所知,交换的消息称为主题。好吧,有时团队必须更改主题定义,因此,依赖于该主题的其他软件停止工作,有必要在各处更新主题并重新编译。所以,我的问题是,你知道如何不破坏向后兼容性吗?我一直在搜索,我找到了谷歌协议缓冲区,他们这样说:

“您可以在不破坏向后兼容性的情况下向消息格式添加新字段;旧的二进制文件在解析时只会忽略新字段。因此,如果您有一个使用协议缓冲区作为其数据格式的通信协议,您可以扩展您的协议而无需担心破坏现有代码。”

还有什么想法吗?

提前致谢。

0 投票
1 回答
349 浏览

data-distribution-service - 如何使用通配符订阅一组相似的 DDS 主题

我是数据分发服务 (DDS) 的新手。我想知道我们是否可以使用通配符订阅 DDS 中的主题组。这样我就可以一起接收来自具有相似名称的主题的数据。例如,我有 2 个主题 IN_Temperature,NEP_Temperature 有没有办法订阅所有名称为温度的主题

0 投票
1 回答
150 浏览

iot - Vortex雾涡网关集成

我是数据分发服务的新手。我正在为 DDS 使用 PrismTech 产品。我的网络中有 vortex lite。为了与公共云中的 vortex 网关交互,我正在使用 vortex 雾服务。但无法建立互动。任何人都可以提供相同的输入。

我的网络上运行了一个 DDS 子系统,来自它的数据需要共享到云中运行的 vortex 网关,为此我尝试使用 Vortex fog。在涡雾配置中,我提到了云服务器的公共 IP。我在云中运行了一个涡流网关订阅者作业,以从我的网络中运行的子系统接收 dds 数据。

雾服务在 NAT 后面的 LAN 中运行。我为运行雾服务设置了以下配置

在云服务器中,我正在运行订阅不同主题的 vortex 网关。

你能否纠正/指导我解决这个问题

0 投票
0 回答
828 浏览

publish-subscribe - 运行 Messenger 示例中的 OpenDDS 错误

编辑:我已从 DCPSInfoRepo 切换到 RTPS,一切正常。我不知道这个问题是否应该保持开放,以便为使用 DCPSInfoRepo 的任何人回答问题


我正在研究使用 OpenDDS,我目前正在遵循 Windows 的“入门”指南。我达到了使用命令运行 Messenger 示例的步骤

我得到以下输出,我认为这是一个错误。

我可以就如何解决这个问题获得一些指导吗?

0 投票
1 回答
122 浏览

qos - 避免收到我发送的相同主题

我有一个既是 DataDriver 又是 DataReader 的 OpenDDS 节点。结果是,如果节点发送一个主题,则从同一个节点接收到相同的主题。

是否有避免这种行为的 QoS 策略?我希望一个节点可以从除自身之外的所有节点接收主题。