QCustomPlot以ECG风格实时显示

时间:2016-06-07 21:36:30

标签: c++ qt qcustomplot

我想制作一个实时图来绘制来自我的Arduino的数据,并且我想使用QCustomPlot中的以下函数以ECG样式绘制图形(几秒钟后重新开始并替换之前的数据):< / p>

/post MESSAGE img1.com

来自串口的void QCPGraph::addData(const QVector<double> &keys, const QVector<double> &values)` keys=time

我已经有连续数据和一个连续的图表,但我不知道如何用上面的函数修改它并制作时间向量。

你能给我一个如何调用该函数的例子吗?

1 个答案:

答案 0 :(得分: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);
    }
}