1

Arduino からのデータをプロットするリアルタイム グラフを作成し、QCustomPlot の次の関数を使用して ECG スタイルでグラフをプロットします (数秒後に再開し、前のデータを置き換えます)。

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

keys=timeシリアルvalues=dataポートと。

私はすでにシリアルデータと連続したグラフを持っていますが、上記の関数でこれを変更して時間ベクトルを作成する方法がわかりません。

その関数を呼び出す方法の例を教えてください。

4

1 に答える 1

0

私が正しく理解できれば、xAxis範囲が一定であるというグラフが得られます。秒として定義されているMAX_RANGEとしましょう。MAX_RANGE秒を過ぎると、グラフがクリアされ、秒から最初からやり直され0ます。

Tこれがすべて正しければ、プロットを更新するために1秒ごとに1回呼び出す関数が既にあると思います。そうでない場合は、この例を見てください。
毎秒呼び出す関数が既にあるとしますT

void MyPlot::updatePlot(int yValue)

timeCounter次に、呼び出しごとに更新されるクラス変数として a を追加するだけです。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 に答える