2016-06-07 14 views
1

Я хочу сделать график в реальном времени для построения данных из моего Arduino, и я хочу использовать следующую функцию из QCustomPlot для построения графика в стиле ЭКГ (начиная снова через несколько секунд и заменяя предыдущие данные):QCustomPlot в режиме реального времени в стиле ЭКГ

void QCPGraph::addData(const QVector<double> &keys, const QVector<double> &values)` 

с keys=time и values=data от последовательного порта.

У меня уже есть последовательные данные и график, который является непрерывным, но я не знаю, как это изменить с помощью функции выше и сделать временной вектор.

Можете ли вы привести мне пример того, как назвать эту функцию?

ответ

0

Если у вас все получилось, у вас есть график, который соответствует диапазону xAxis. Допустим, что он определен как MAX_RANGE секунд, и вы хотите, чтобы после прохождения MAX_RANGE секунд он очистит график и начнет заново с 0 сек.

Если все это правильно, я думаю, у вас уже есть функция, которую вы вызываете один раз каждые T секунд, чтобы обновить сюжет. Если нет, то взгляните на this example.
Давайте предположим, что у вас уже есть функция, что вы звоните каждые T секунд:

void MyPlot::updatePlot(int yValue) 

Тогда просто добавить timeCounter как переменная класса, который будет обновляться каждый вызов. Затем добавьте оператор if, который будет проверять, прошел ли он MAX_RANGE. Если это было сделано, очистите график, используя clearData(), добавьте новое значение и сбросьте timeCounter. Если это не так, просто добавьте новое значение. Простой пример (просто внесите изменения, которые соответствуют вашему случаю):

void MyPlot::updatePlot(int yValue){ 
    this->timeCounter += T; 
    if (this->timeCounter >= MAX_RANGE) { 
     ui->customPlot->graph(0)->clearData(); 
     ui->customPlot->graph(0)->addData(0, yValue); 
     this->timeCounter = 0; 
    } 
    else { 
     ui->customPlot->graph(0)->addData(this->timeCounter, yValue); 
    } 
} 
+0

Это именно тот пример, который я использую. Я попытаюсь изменить его тем, что вы сказали мне, спасибо! – Ana

+0

Если это помогло вам решить вашу проблему, пожалуйста, примите его в качестве правильного ответа, щелкнув значок * V * на стороне моего ответа. –

+0

Я не знаю, где T в этом примере – Ana

Смежные вопросы