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();
}

Таким образом, график обновляется только через определенные промежутки времени, независимо от скорости ввода данных.

Другие вопросы по тегам