2016-06-07 222 views
1

我想打一个实时图形绘制从我的Arduino的数据,我想用从QCustomPlot下面的函数绘制在心电图风格的图形(几秒钟后再次启动QCustomPlot在实时心电图风格

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

keys=timevalues=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