Changeset - f38042ba2eb0
[Not reviewed]
default
0 2 0
Hasan Yavuz Ă–ZDERYA - 11 years ago 2015-03-07 10:30:22
hy@ozderya.net
experimental plotting enabled
2 files changed with 35 insertions and 1 deletions:
0 comments (0 inline, 0 general)
mainwindow.cpp
Show inline comments
 
@@ -26,24 +26,35 @@ MainWindow::MainWindow(QWidget *parent) 
 
                     this, &MainWindow::selectPort);
 

	
 
    QObject::connect(ui->cbBaudRate,
 
                     SELECT<const QString&>::OVERLOAD_OF(&QComboBox::activated),
 
                     this, &MainWindow::selectBaudRate);
 

	
 
    QObject::connect(&(this->serialPort), &QSerialPort::readyRead,
 
                     this, &MainWindow::onDataReady);
 

	
 
    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()
 
{
 
    delete ui;
 
}
 

	
 
void MainWindow::loadPortList()
 
{
 
    QString currentSelection = ui->cbPortList->currentText();
 

	
 
    ui->cbPortList->clear();
 
@@ -137,14 +148,29 @@ void MainWindow::selectBaudRate(QString 
 
            qDebug() << "Baud rate changed: " << serialPort.baudRate();
 
        }
 
    }
 
}
 

	
 
void MainWindow::onPortToggled(bool open)
 
{
 
    ui->pbOpenPort->setChecked(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();
 
}
mainwindow.h
Show inline comments
 
#ifndef MAINWINDOW_H
 
#define MAINWINDOW_H
 

	
 
#include <QMainWindow>
 
#include <QString>
 
#include <QVector>
 
#include <QSerialPort>
 
#include <qwt_plot_curve.h>
 

	
 
namespace Ui {
 
class MainWindow;
 
}
 

	
 
class MainWindow : public QMainWindow
 
{
 
    Q_OBJECT
 

	
 
public:
 
    explicit MainWindow(QWidget *parent = 0);
 
    ~MainWindow();
 

	
 
private:
 
    Ui::MainWindow *ui;
 
    QSerialPort serialPort;
 

	
 
    unsigned int numOfSamples;
 
    QwtPlotCurve curve;
 
    QVector<double> dataArray;
 
    QVector<double> dataX;
 
    void addData(double data);
 

	
 
private slots:
 
    void loadPortList();
 
    void loadBaudRateList();
 
    void togglePort();
 
    void selectPort(QString portName);
 
    void onPortToggled(bool open);
 
    void selectBaudRate(QString baudRate);
 

	
 
    void onDataReady();
 

	
 
signals:
 
    void portToggled(bool open);
0 comments (0 inline, 0 general)