1

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

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

带有keys=timevalues=data来自串行端口。

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

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

4

1 回答 1

0

如果我做对了,你有一个图表,它的xAxis范围是恒定的。假设它被定义为MAX_RANGE秒,并且您希望一旦它经过MAX_RANGE秒,它将清除图表并从0秒重新开始。

如果这一切都是正确的,那么我猜你已经有一个函数,你每秒调用一次T以更新绘图。如果没有,那么看看这个例子
让我们假设您已经拥有一个每秒调用一次的函数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);
    }
}
于 2016-06-08T16:05:40.123 回答