Qt5 QCustomPlot. Большой график в реальном времени
В настоящее время я работаю над приложением, которое отображает данные из АЦП в режиме реального времени. В некоторых случаях мне приходится строить около 150 тыс. Точек, и это занимает некоторое время. Таким образом, проблема в том, что данные могут поступать с большей частотой, чем я могу построить.
Мне не нужна высокая частота кадров. Также я могу попытаться пропустить некоторые данные.
Я использую: ОС Windows 7, Qt 5.5, QCustomPlot.
Итак, вопрос: как именно я могу предотвратить повторную печать, пока предыдущая повторная печать не будет закончена, чтобы приложение реагировало?
Благодарю.
1 ответ
Вы можете иметь слот, который принимает только новые поступившие данные и сохраняет их в структуре данных, например QVector
и периодически обновлять график с полученными данными через определенные интервалы, используя QTimer
,
Таким образом, слот для приема данных выглядит так:
void receiveData(QVector<double> data)
{
receivedData.append(data);
}
И слот, который подключен к timeOut
Сигнал таймера с определенным интервалом имеет вид:
void receiveData()
{
plot->graph()->setData(keyVector, receivedData);
plot->replot();
}
Таким образом, график обновляется только через определенные промежутки времени, независимо от скорости ввода данных.