使用Qt,QWT和C ++进行实时数据绘图

时间:2012-10-04 20:52:59

标签: c++ qt qwt

我是Qt,QWT的新手,并且具备C ++的基础知识。

根据我得到的项目,我必须获取大篷车上的传感器给出的一些数据,如太阳能电池板的电压和电流,温度,湿度等。所有这些数据都是由一些传感器采集并由NI 6229 DAQ设备采集。

直到现在,我只是给了侧灯。现在我要解决真正的问题。

我想获取来自DAQ设备的数据并显示,绘制,记录和登录程序。

我决定使用C ++,Qt和QWT。当然,NIDAQMX API用于从DAQ设备获取数据。

我已经部分设计了一个GUI,但我遇到的问题是我的代码真正的工作部分。

我不知道如何通过考虑性能标准来实现所有这些东西,我真的需要一个指南。

我应该如何处理数据采集?

我应该如何绘制我获得的数据?

这些是否需要由不同的线程或其他结构分开?

收集近10或12个通道数据并实时绘制数据会导致合理的性能问题吗?如果是这样,我该如何处理?

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果你编写一个简单的程序来使用NI 6229,你需要设置操作的优先级:绘制或记录数据。
在大多数情况下,数据存储是最重要的操作 在我的实践中,我使用了以下算法:

  • 1个GUI线程(通用UI +绘图),每个设备1个数据采集线程,1个记录数据线程。
  • 用于数据采集的线程每隔dT运行一次(我们询问设备: - 准备好多少数据? - 10000个样本 - 好吧,给它一点儿)。由于NI 6659的采样频率低于1 MSamples / s,我认为dT的值大约为50-200 ms(取决于接口)。
  • 从设备读取数据后,我使用队列将数据发送到线程进行记录。
  • 关于绘图也一样。我使用qwt进行数据抽取(但你应该保存峰值)。 Qwt也没有不好的例子。您还可以找到提高绘图性能的解决方案。我的建议是将图表拆分为组,例如,一组可能包含4个图表。

它仅适用于简单程序,不适用于实时操作系统。