1

我目前正在开发一个实时绘制来自 ADC 的数据的应用程序。在某些情况下,我必须绘制大约 150k 点,这需要一些时间。所以问题是数据到达的频率可能比我绘制它的频率高。

我不需要高帧率。我也可以努力跳过一些数据。

我正在使用:操作系统 Windows 7、Qt 5.5、QCustomPlot。

所以问题是:在完成之前的重新绘制以保持应用程序响应之前,我究竟如何防止重新绘制?

谢谢。

4

1 回答 1

1

您可以有一个插槽,它只接收新到达的数据并将它们存储在像 a 这样的数据结构中,QVector并使用 a 以特定间隔定期使用接收到的数据更新绘图QTimer

所以接收数据的槽是这样的:

void receiveData(QVector<double> data)
{
     receivedData.append(data);
}

timeOut并且以一定的时间间隔连接到定时器信号的槽是这样的:

void receiveData()
{
     plot->graph()->setData(keyVector, receivedData);
     plot->replot();
}

这样,绘图仅在特定时间间隔内更新,与输入数据的速率无关。

于 2016-03-01T14:12:27.297 回答