我目前正在开发一个实时绘制来自 ADC 的数据的应用程序。在某些情况下,我必须绘制大约 150k 点,这需要一些时间。所以问题是数据到达的频率可能比我绘制它的频率高。
我不需要高帧率。我也可以努力跳过一些数据。
我正在使用:操作系统 Windows 7、Qt 5.5、QCustomPlot。
所以问题是:在完成之前的重新绘制以保持应用程序响应之前,我究竟如何防止重新绘制?
谢谢。
我目前正在开发一个实时绘制来自 ADC 的数据的应用程序。在某些情况下,我必须绘制大约 150k 点,这需要一些时间。所以问题是数据到达的频率可能比我绘制它的频率高。
我不需要高帧率。我也可以努力跳过一些数据。
我正在使用:操作系统 Windows 7、Qt 5.5、QCustomPlot。
所以问题是:在完成之前的重新绘制以保持应用程序响应之前,我究竟如何防止重新绘制?
谢谢。
您可以有一个插槽,它只接收新到达的数据并将它们存储在像 a 这样的数据结构中,QVector
并使用 a 以特定间隔定期使用接收到的数据更新绘图QTimer
。
所以接收数据的槽是这样的:
void receiveData(QVector<double> data)
{
receivedData.append(data);
}
timeOut
并且以一定的时间间隔连接到定时器信号的槽是这样的:
void receiveData()
{
plot->graph()->setData(keyVector, receivedData);
plot->replot();
}
这样,绘图仅在特定时间间隔内更新,与输入数据的速率无关。