首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实时心电图类型的QCustomPlot

实时心电图类型的QCustomPlot
EN

Stack Overflow用户
提问于 2016-06-07 21:36:29
回答 1查看 964关注 0票数 1

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

代码语言:javascript
复制
void QCPGraph::addData(const QVector<double> &keys, const QVector<double> &values)`

使用串口的keys=timevalues=data

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 16:05:40

如果我做得对,你会得到一个图,它的xAxis范围是常数。让我们假设它被定义为MAX_RANGE秒,并且您希望一旦它超过MAX_RANGE秒,它就会清除图形,并从0秒重新开始。

如果所有这些都是正确的,那么我猜您已经有了一个函数,您将每隔一秒钟调用一次函数,以便更新情节。如果没有,那么看看这个例子

让我们假设您已经有了一个函数,每隔一秒钟就调用一个函数:

代码语言:javascript
复制
void MyPlot::updatePlot(int yValue)

然后简单地添加一个timeCounter作为类变量,它将在每次调用中更新。然后添加一个if语句,检查它是否通过了MAX_RANGE。如果它使用clearData()清除图形,则添加新值并重置timeCounter。如果没有的话,只会增加新的价值。简单的示例(只需修改以适合您的情况):

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37689798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档