summaryrefslogtreecommitdiffstats
path: root/examples/terminal/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/terminal/mainwindow.cpp')
-rw-r--r--examples/terminal/mainwindow.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/examples/terminal/mainwindow.cpp b/examples/terminal/mainwindow.cpp
new file mode 100644
index 00000000..0de3ace0
--- /dev/null
+++ b/examples/terminal/mainwindow.cpp
@@ -0,0 +1,111 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+#include "console.h"
+#include "settingsdialog.h"
+
+#include <QtWidgets/QMessageBox>
+#include <QtAddOnSerialPort/serialport.h>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+ console = new Console;
+ console->setEnabled(false);
+ setCentralWidget(console);
+
+ serial = new SerialPort(this);
+ settings = new SettingsDialog;
+
+ ui->actionConnect->setEnabled(true);
+ ui->actionDisconnect->setEnabled(false);
+ ui->actionConfigure->setEnabled(true);
+
+ initActionsConnections();
+
+ connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));
+ connect(console, SIGNAL(getData(QByteArray)), this, SLOT(writeData(QByteArray)));
+}
+
+MainWindow::~MainWindow()
+{
+ delete settings;
+ delete ui;
+}
+
+void MainWindow::open()
+{
+ SettingsDialog::Settings p = settings->settings();
+ serial->setPort(p.name);
+ if (serial->open(QIODevice::ReadWrite)) {
+ if (serial->setRate(p.rate)
+ && serial->setDataBits(p.dataBits)
+ && serial->setParity(p.parity)
+ && serial->setStopBits(p.stopBits)
+ && serial->setFlowControl(p.flowcontrol)) {
+
+ console->setEnabled(true);
+ ui->actionConnect->setEnabled(false);
+ ui->actionDisconnect->setEnabled(true);
+ ui->actionConfigure->setEnabled(false);
+ ui->statusBar->showMessage(tr("Connected to %1 : %2, %3, %4, %5, %6")
+ .arg(p.name).arg(p.stringRate).arg(p.stringDataBits)
+ .arg(p.stringParity).arg(p.stringStopBits).arg(p.stringFlowControl));
+
+ } else {
+ QMessageBox::critical(this, tr("Error"),
+ tr("Can't configure the serial port: %1,\n"
+ "error code: %2")
+ .arg(p.name).arg(serial->error()));
+
+ ui->statusBar->showMessage(tr("Open error"));
+ }
+ } else {
+ QMessageBox::critical(this, tr("Error"),
+ tr("Can't opened the serial port: %1,\n"
+ "error code: %2")
+ .arg(p.name).arg(serial->error()));
+
+ ui->statusBar->showMessage(tr("Configure error"));
+ }
+}
+
+void MainWindow::close()
+{
+ serial->close();
+ console->setEnabled(false);
+ ui->actionConnect->setEnabled(true);
+ ui->actionDisconnect->setEnabled(false);
+ ui->actionConfigure->setEnabled(true);
+ ui->statusBar->showMessage(tr("Disconnected"));
+}
+
+void MainWindow::about()
+{
+ QMessageBox::about(this, tr("About Simple Terminal"),
+ tr("The <b>Simple Terminal</b> example demonstrates how to "
+ "use the QtSerialPort module in modern GUI applications "
+ "using Qt, with a menu bar, toolbars, and a status bar."));
+}
+
+void MainWindow::writeData(const QByteArray &data)
+{
+ serial->write(data);
+}
+
+void MainWindow::readData()
+{
+ QByteArray data = serial->readAll();
+ console->putData(data);
+}
+
+void MainWindow::initActionsConnections()
+{
+ connect(ui->actionConnect, SIGNAL(triggered()), this, SLOT(open()));
+ connect(ui->actionDisconnect, SIGNAL(triggered()), this, SLOT(close()));
+ connect(ui->actionConfigure, SIGNAL(triggered()), settings, SLOT(show()));
+ connect(ui->actionClear, SIGNAL(triggered()), console, SLOT(clear()));
+ connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(about()));
+ connect(ui->actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
+}