实时显示数据

时间:2011-04-04 17:32:57

标签: c++ qt software-design architecture

我正在设计一个应用程序来收集我的车辆数据并将其显示在应用程序上。我想弄清楚我的软件最好的架构是什么。我计划将Qt用于我的gui(QPainter),我有自定义硬件来收集传感器的数据。我认为硬件I / O将驻留在应用程序中,该应用程序在其自己的线程中呈现图形,但现在我认为将所有硬件I / O通信放在一个单独的进程中并在两者之间进行通信可能会更好使用某些IPC协议进行处理(不确定哪一个)。

你们有什么建议我做的。这也是我第一次编写多进程应用程序。

1 个答案:

答案 0 :(得分:0)

我写了好几百次。到目前为止,最好的解决方案是将专用硬件拆分为两个线程或任务:

  • 需要进行任何实时操作的
  • 另一个响应来自UI的数据查询和命令

这两个线程相互协作以维护一致的,信号量保护的共享变量空间。第二个线程在锁定共享空间之前完成所有解析和诸如此类的操作,复制其所需的任何内容并解锁。目标是将锁定间隔限制为尽可能短的时间。通常,将所有共享变量排列到单个结构中是实际的,并使用批量memcpy(),即使只有少数成员感兴趣。这种互动越简单越好。

用户界面包含

  • 屏幕,当可见和活动时,会导致定期查询数据模块

其他体系结构是可能的,但每当我看到它们时,它们都会转变为大量的大量补丁来解决同步和计时问题。