diff --git a/mainwindow.cpp b/mainwindow.cpp --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -35,6 +35,17 @@ MainWindow::MainWindow(QWidget *parent) loadPortList(); loadBaudRateList(); ui->cbBaudRate->setCurrentIndex(ui->cbBaudRate->findText("9600")); + + // init plot + numOfSamples = 100; + dataArray.resize(numOfSamples); + dataX.resize(numOfSamples); + for (int i = 0; i < dataX.size(); i++) + { + dataX[i] = i; + } + curve.setSamples(dataX, dataArray); + curve.attach(ui->plot); } MainWindow::~MainWindow() @@ -146,5 +157,20 @@ void MainWindow::onPortToggled(bool open void MainWindow::onDataReady() { - qDebug() << "Data: " << serialPort.readAll().toHex(); + QByteArray data = serialPort.readAll(); + addData((unsigned char)(data[0])); } + +void MainWindow::addData(double data) +{ + // shift data array and place new data at the end + for (int i = 0; i < dataArray.size()-1; i++) + { + dataArray[i] = dataArray[i+1]; + } + dataArray.last() = data; + + // update plot + curve.setSamples(dataX, dataArray); + ui->plot->replot(); +} diff --git a/mainwindow.h b/mainwindow.h --- a/mainwindow.h +++ b/mainwindow.h @@ -3,7 +3,9 @@ #include #include +#include #include +#include namespace Ui { class MainWindow; @@ -21,6 +23,12 @@ private: Ui::MainWindow *ui; QSerialPort serialPort; + unsigned int numOfSamples; + QwtPlotCurve curve; + QVector dataArray; + QVector dataX; + void addData(double data); + private slots: void loadPortList(); void loadBaudRateList();