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



我是Qt、QWT的新手,对C++有基本的了解。

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

到目前为止,我只是提供了一些细节。现在我来谈谈真正的问题。

我想获取来自DAQ设备的数据,并在程序中显示、绘图、记录和日志。

我决定使用C++、Qt和QWT。以及用于从DAQ设备获取数据的NIDAQMX API。

我已经设计了一个GUI的一部分,但我坚持的是我代码的真正工作部分。

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

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

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

这些需要用不同的螺纹或其他结构分开吗?

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

提前谢谢。

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

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

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

最新更新