以心电图风格实时绘制质量控制图

QCustomPlot in real time in an ECG style

本文关键字:控制 绘制 心电图 风格 实时      更新时间:2023-10-16

我想制作一个实时图来绘制来自我的 Arduino 的数据,我想使用 QCustomPlot 中的以下函数以 ECG 风格绘制图形(几秒钟后再次开始并替换以前的数据):

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

具有串行端口的keys=timevalues=data

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

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

如果我

做对了,你有一个图表,它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);
    }
}