Qt 和 RTI DDS 交互---需要一些指导

标签 qt data-distribution-service

我正在制作一个 GUI,其中 QStackedWIdget 上有多个表单。现在我希望这些表格中的数据在可用时进行更新。数据将通过 RTI DDS 接收。有人可以建议我一些示例或链接,其中 GUI 数据是从非 GUI 线程更新的吗?

谢谢。

最佳答案

您有多种选择可供选择。我将根据您的问题进行评估,解释最适合您情况的一种。

首先您需要知道,在订阅者端,您的应用程序和 DDS DataReaders 之间可能存在三种不同类型的交互:轮询、监听器和等待集。轮询基本上意味着您的应用程序在认为必要时(例如以固定速率)查询 DataReader。使用监听器意味着您的应用程序为中间件提供一些回调函数,每当新数据到达时就会调用这些回调函数。等待集类似于套接字select,其中应用程序线程将被阻塞,直到数据到达或发生超时 - 通常随后执行访问 DataReader 的操作。

对于 GUI 应用程序,通常使用轮询机制,而不是您可能正在使用的监听器方法。您可以让 GUI 以固定速率(例如 5 Hz)从 DataReader 读取或获取数据,而不是在数据到达时读取数据并立即更新 GUI 小部件。

通过这种方法,您可以控制何时访问 DDS,并且可以按照所需的准确速率进行访问,无论 DataReader 内的数据更新速度有多快。此外,您的数据由非 GUI 线程更新的问题也得到了解决,因为您可以从自己的上下文访问 DDS DataReader。

使用轮询的一个潜在缺点可能是小部件的更新会出现一些延迟,例如,如果您以 5 Hz 进行轮询,则最大额外延迟将为 200 毫秒。不过,这对于 GUI 应用程序来说通常不是问题。

关于Qt 和 RTI DDS 交互---需要一些指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834696/

相关文章:

c++ - 很多 QGraphicsItem

c++ - QtCreator 项目上的 "Symbol(s) not found for architecture x86_64"

python - QListView 中自定义 IndexWidget 的平滑延迟加载和卸载

android - Qt 网络服务器与移动浏览器

linux - 编译x64Linux2.6gcc文件

c++ - QImage 的 RGB 值 vector

java - 如何在 ANT 脚本中使用 source 命令加载文件?

data-distribution-service - RTI DDS订户未从发布者获取数据

static - Ada 编译问题(寻找我没有的 adbs?)

c++ - OpenDDS 和发布者存在的通知