2016-06-07 61 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