extras under initial dev
This commit is contained in:
parent
1d6f9981e1
commit
a902b9bc79
70
console/terminal/CMakeLists.txt
Normal file
70
console/terminal/CMakeLists.txt
Normal file
@ -0,0 +1,70 @@
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.11)
|
||||
|
||||
option (QTCONSOLE "enable QT console" on)
|
||||
|
||||
if (QTCONSOLE)
|
||||
# Instruct CMake to run moc automatically when needed.
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
# Find the QtWidgets library
|
||||
macro_optional_find_package(Qt5Widgets on)
|
||||
|
||||
macro_optional_find_package(Qt5Core on)
|
||||
|
||||
macro_log_feature (Qt5Widgets_FOUND "QT GUI Libraries"
|
||||
"The QT Project" "http://www.qt-project.org")
|
||||
|
||||
endif(QTCONSOLE)
|
||||
|
||||
|
||||
if (Qt5Widgets_FOUND)
|
||||
set ( QTCONSOLE_SOURCES
|
||||
console.cpp
|
||||
console.h
|
||||
main.cpp
|
||||
mainwindow.h
|
||||
mainwindow.ui
|
||||
mainwindow.cpp
|
||||
settingsdialog.h
|
||||
settingsdialog.ui
|
||||
settingsdialog.cpp
|
||||
terminal.pro
|
||||
terminal.qrc
|
||||
images/application-exit.png
|
||||
images/clear.png
|
||||
images/connect.png
|
||||
images/disconnect.png
|
||||
images/settings.png
|
||||
|
||||
)
|
||||
|
||||
# Find includes in corresponding build directories
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
qt5_wrap_ui(ui_settingsdialog.h settingsdialog.ui)
|
||||
|
||||
qt5_wrap_ui(ui_mainwindow.h mainwindow.ui)
|
||||
|
||||
qt5_add_resources(qrc_terminal.cpp terminal.qrc)
|
||||
|
||||
add_executable (qtyap ${QTCONSOLE_SOURCES} qrc_terminal.cpp)
|
||||
|
||||
include_directories(../../CXX)
|
||||
|
||||
set_target_properties (qtyap PROPERTIES OUTPUT_NAME qtyap CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
target_link_libraries(qtyap Yap++)
|
||||
|
||||
|
||||
qt5_use_modules(qtyap Widgets)
|
||||
|
||||
qt5_use_modules(qtyap Core SerialPort)
|
||||
#target_link_libraries(qtyap QtSerialPort)
|
||||
|
||||
|
||||
install(TARGETS qtyap
|
||||
RUNTIME DESTINATION ${bindir}
|
||||
)
|
||||
|
||||
ENDIF(Qt5Widgets_FOUND)
|
96
console/terminal/console.cpp
Normal file
96
console/terminal/console.cpp
Normal file
@ -0,0 +1,96 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
|
||||
** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org>
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtSerialPort module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL21$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 or version 3 as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||
** following information to ensure the GNU Lesser General Public License
|
||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "console.h"
|
||||
|
||||
#include <QScrollBar>
|
||||
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
Console::Console(QWidget *parent)
|
||||
: QPlainTextEdit(parent)
|
||||
, localEchoEnabled(false)
|
||||
{
|
||||
document()->setMaximumBlockCount(100);
|
||||
QPalette p = palette();
|
||||
p.setColor(QPalette::Base, Qt::black);
|
||||
p.setColor(QPalette::Text, Qt::green);
|
||||
setPalette(p);
|
||||
|
||||
}
|
||||
|
||||
void Console::putData(const QString &data)
|
||||
{
|
||||
insertPlainText(data);
|
||||
|
||||
QScrollBar *bar = verticalScrollBar();
|
||||
bar->setValue(bar->maximum());
|
||||
}
|
||||
|
||||
void Console::setLocalEchoEnabled(bool set)
|
||||
{
|
||||
localEchoEnabled = set;
|
||||
}
|
||||
|
||||
void Console::keyPressEvent(QKeyEvent *e)
|
||||
{
|
||||
switch (e->key()) {
|
||||
case Qt::Key_Backspace:
|
||||
case Qt::Key_Left:
|
||||
case Qt::Key_Right:
|
||||
case Qt::Key_Up:
|
||||
case Qt::Key_Down:
|
||||
break;
|
||||
default:
|
||||
if (localEchoEnabled)
|
||||
QPlainTextEdit::keyPressEvent(e);
|
||||
emit getData(e->text());
|
||||
}
|
||||
}
|
||||
|
||||
void Console::mousePressEvent(QMouseEvent *e)
|
||||
{
|
||||
Q_UNUSED(e)
|
||||
setFocus();
|
||||
}
|
||||
|
||||
void Console::mouseDoubleClickEvent(QMouseEvent *e)
|
||||
{
|
||||
Q_UNUSED(e)
|
||||
}
|
||||
|
||||
void Console::contextMenuEvent(QContextMenuEvent *e)
|
||||
{
|
||||
Q_UNUSED(e)
|
||||
}
|
BIN
console/terminal/images/application-exit.png
Normal file
BIN
console/terminal/images/application-exit.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
console/terminal/images/clear.png
Normal file
BIN
console/terminal/images/clear.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
console/terminal/images/connect.png
Normal file
BIN
console/terminal/images/connect.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
console/terminal/images/disconnect.png
Normal file
BIN
console/terminal/images/disconnect.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
console/terminal/images/settings.png
Normal file
BIN
console/terminal/images/settings.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
45
console/terminal/main.cpp
Normal file
45
console/terminal/main.cpp
Normal file
@ -0,0 +1,45 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
|
||||
** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org>
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtSerialPort module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL21$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 or version 3 as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||
** following information to ensure the GNU Lesser General Public License
|
||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
#include "mainwindow.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
MainWindow w;
|
||||
w.show();
|
||||
return a.exec();
|
||||
}
|
139
console/terminal/mainwindow.cpp
Normal file
139
console/terminal/mainwindow.cpp
Normal file
@ -0,0 +1,139 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
|
||||
** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org>
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtSerialPort module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL21$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 or version 3 as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||
** following information to ensure the GNU Lesser General Public License
|
||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include "console.h"
|
||||
#include "settingsdialog.h"
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
//! [0]
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
QMainWindow(parent),
|
||||
ui(new Ui::MainWindow)
|
||||
{
|
||||
//! [0]
|
||||
ui->setupUi(this);
|
||||
console = new Console;
|
||||
console->setEnabled(false);
|
||||
setCentralWidget(console);
|
||||
//! [1]
|
||||
//! [1]
|
||||
settings = new SettingsDialog;
|
||||
|
||||
ui->actionConnect->setEnabled(true);
|
||||
ui->actionDisconnect->setEnabled(false);
|
||||
ui->actionQuit->setEnabled(true);
|
||||
ui->actionConfigure->setEnabled(true);
|
||||
|
||||
initActionsConnections();
|
||||
|
||||
///! [2]
|
||||
connect(console, &Console::getData, this, &MainWindow::writeData);
|
||||
//! [3]
|
||||
}
|
||||
//! [3]
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
delete settings;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
//! [4]
|
||||
void
|
||||
MainWindow::startYAP (YAPEngine *&eng)
|
||||
{
|
||||
SettingsDialog::Settings p = settings->settings();
|
||||
eng = new YAPEngine( );
|
||||
//return eng != nullptr;
|
||||
}
|
||||
|
||||
//! [4]
|
||||
|
||||
//! [5]
|
||||
void MainWindow::stopYAP(YAPEngine *eng)
|
||||
{
|
||||
delete eng;
|
||||
}
|
||||
//! [5]
|
||||
|
||||
void MainWindow::about()
|
||||
{
|
||||
QMessageBox::about(this, tr("About Simple Terminal"),
|
||||
tr("The <b>Simple Terminal</b> example demonstrates how to "
|
||||
"use the Qt Serial Port module in modern GUI applications "
|
||||
"using Qt, with a menu bar, toolbars, and a status bar."));
|
||||
}
|
||||
|
||||
//! [6]
|
||||
void MainWindow::writeData(const QString &data)
|
||||
{
|
||||
//serial->write(data);
|
||||
}
|
||||
//! [6]
|
||||
|
||||
//! [7]
|
||||
void MainWindow::readData()
|
||||
{
|
||||
//QByteArray data = serial->readAll();
|
||||
//console->putData(data);
|
||||
}
|
||||
//! [7]
|
||||
|
||||
//! [8]
|
||||
void MainWindow::handleError(YAPError error)
|
||||
{
|
||||
if (error.get() == SYNTAX_ERROR) {
|
||||
QMessageBox::StandardButton reply;
|
||||
reply = QMessageBox::question(this, tr("Syntax Error"), "Quit?",
|
||||
QMessageBox::Yes|QMessageBox::No);
|
||||
if (reply == QMessageBox::Yes) {
|
||||
stopYAP(eng);
|
||||
}
|
||||
}
|
||||
}
|
||||
//! [8]
|
||||
|
||||
void MainWindow::initActionsConnections()
|
||||
{
|
||||
connect(ui->actionConnect, SIGNAL(triggered()), this, SLOT(openSerialPort()));
|
||||
connect(ui->actionDisconnect, SIGNAL(triggered()), this, SLOT(closeSerialPort()));
|
||||
connect(ui->actionQuit, 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()));
|
||||
}
|
126
console/terminal/moc_console.cpp
Normal file
126
console/terminal/moc_console.cpp
Normal file
@ -0,0 +1,126 @@
|
||||
/****************************************************************************
|
||||
** Meta object code from reading C++ file 'console.h'
|
||||
**
|
||||
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.4.2)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#include "console.h"
|
||||
#include <QtCore/qbytearray.h>
|
||||
#include <QtCore/qmetatype.h>
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||
#error "The header file 'console.h' doesn't include <QObject>."
|
||||
#elif Q_MOC_OUTPUT_REVISION != 67
|
||||
#error "This file was generated using the moc from 5.4.2. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
QT_BEGIN_MOC_NAMESPACE
|
||||
struct qt_meta_stringdata_Console_t {
|
||||
QByteArrayData data[4];
|
||||
char stringdata[22];
|
||||
};
|
||||
#define QT_MOC_LITERAL(idx, ofs, len) \
|
||||
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
|
||||
qptrdiff(offsetof(qt_meta_stringdata_Console_t, stringdata) + ofs \
|
||||
- idx * sizeof(QByteArrayData)) \
|
||||
)
|
||||
static const qt_meta_stringdata_Console_t qt_meta_stringdata_Console = {
|
||||
{
|
||||
QT_MOC_LITERAL(0, 0, 7), // "Console"
|
||||
QT_MOC_LITERAL(1, 8, 7), // "getData"
|
||||
QT_MOC_LITERAL(2, 16, 0), // ""
|
||||
QT_MOC_LITERAL(3, 17, 4) // "data"
|
||||
|
||||
},
|
||||
"Console\0getData\0\0data"
|
||||
};
|
||||
#undef QT_MOC_LITERAL
|
||||
|
||||
static const uint qt_meta_data_Console[] = {
|
||||
|
||||
// content:
|
||||
7, // revision
|
||||
0, // classname
|
||||
0, 0, // classinfo
|
||||
1, 14, // methods
|
||||
0, 0, // properties
|
||||
0, 0, // enums/sets
|
||||
0, 0, // constructors
|
||||
0, // flags
|
||||
1, // signalCount
|
||||
|
||||
// signals: name, argc, parameters, tag, flags
|
||||
1, 1, 19, 2, 0x06 /* Public */,
|
||||
|
||||
// signals: parameters
|
||||
QMetaType::Void, QMetaType::QByteArray, 3,
|
||||
|
||||
0 // eod
|
||||
};
|
||||
|
||||
void Console::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
Console *_t = static_cast<Console *>(_o);
|
||||
switch (_id) {
|
||||
case 0: _t->getData((*reinterpret_cast< const QByteArray(*)>(_a[1]))); break;
|
||||
default: ;
|
||||
}
|
||||
} else if (_c == QMetaObject::IndexOfMethod) {
|
||||
int *result = reinterpret_cast<int *>(_a[0]);
|
||||
void **func = reinterpret_cast<void **>(_a[1]);
|
||||
{
|
||||
typedef void (Console::*_t)(const QByteArray & );
|
||||
if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Console::getData)) {
|
||||
*result = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const QMetaObject Console::staticMetaObject = {
|
||||
{ &QPlainTextEdit::staticMetaObject, qt_meta_stringdata_Console.data,
|
||||
qt_meta_data_Console, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
|
||||
};
|
||||
|
||||
|
||||
const QMetaObject *Console::metaObject() const
|
||||
{
|
||||
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
|
||||
}
|
||||
|
||||
void *Console::qt_metacast(const char *_clname)
|
||||
{
|
||||
if (!_clname) return Q_NULLPTR;
|
||||
if (!strcmp(_clname, qt_meta_stringdata_Console.stringdata))
|
||||
return static_cast<void*>(const_cast< Console*>(this));
|
||||
return QPlainTextEdit::qt_metacast(_clname);
|
||||
}
|
||||
|
||||
int Console::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
_id = QPlainTextEdit::qt_metacall(_c, _id, _a);
|
||||
if (_id < 0)
|
||||
return _id;
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
if (_id < 1)
|
||||
qt_static_metacall(this, _c, _id, _a);
|
||||
_id -= 1;
|
||||
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
|
||||
if (_id < 1)
|
||||
*reinterpret_cast<int*>(_a[0]) = -1;
|
||||
_id -= 1;
|
||||
}
|
||||
return _id;
|
||||
}
|
||||
|
||||
// SIGNAL 0
|
||||
void Console::getData(const QByteArray & _t1)
|
||||
{
|
||||
void *_a[] = { Q_NULLPTR, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
|
||||
QMetaObject::activate(this, &staticMetaObject, 0, _a);
|
||||
}
|
||||
QT_END_MOC_NAMESPACE
|
134
console/terminal/moc_mainwindow.cpp
Normal file
134
console/terminal/moc_mainwindow.cpp
Normal file
@ -0,0 +1,134 @@
|
||||
/****************************************************************************
|
||||
** Meta object code from reading C++ file 'mainwindow.h'
|
||||
**
|
||||
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.4.2)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include <QtCore/qbytearray.h>
|
||||
#include <QtCore/qmetatype.h>
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||
#error "The header file 'mainwindow.h' doesn't include <QObject>."
|
||||
#elif Q_MOC_OUTPUT_REVISION != 67
|
||||
#error "This file was generated using the moc from 5.4.2. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
QT_BEGIN_MOC_NAMESPACE
|
||||
struct qt_meta_stringdata_MainWindow_t {
|
||||
QByteArrayData data[11];
|
||||
char stringdata[120];
|
||||
};
|
||||
#define QT_MOC_LITERAL(idx, ofs, len) \
|
||||
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
|
||||
qptrdiff(offsetof(qt_meta_stringdata_MainWindow_t, stringdata) + ofs \
|
||||
- idx * sizeof(QByteArrayData)) \
|
||||
)
|
||||
static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = {
|
||||
{
|
||||
QT_MOC_LITERAL(0, 0, 10), // "MainWindow"
|
||||
QT_MOC_LITERAL(1, 11, 14), // "openSerialPort"
|
||||
QT_MOC_LITERAL(2, 26, 0), // ""
|
||||
QT_MOC_LITERAL(3, 27, 15), // "closeSerialPort"
|
||||
QT_MOC_LITERAL(4, 43, 5), // "about"
|
||||
QT_MOC_LITERAL(5, 49, 9), // "writeData"
|
||||
QT_MOC_LITERAL(6, 59, 4), // "data"
|
||||
QT_MOC_LITERAL(7, 64, 8), // "readData"
|
||||
QT_MOC_LITERAL(8, 73, 11), // "handleError"
|
||||
QT_MOC_LITERAL(9, 85, 28), // "QSerialPort::SerialPortError"
|
||||
QT_MOC_LITERAL(10, 114, 5) // "error"
|
||||
|
||||
},
|
||||
"MainWindow\0openSerialPort\0\0closeSerialPort\0"
|
||||
"about\0writeData\0data\0readData\0handleError\0"
|
||||
"QSerialPort::SerialPortError\0error"
|
||||
};
|
||||
#undef QT_MOC_LITERAL
|
||||
|
||||
static const uint qt_meta_data_MainWindow[] = {
|
||||
|
||||
// content:
|
||||
7, // revision
|
||||
0, // classname
|
||||
0, 0, // classinfo
|
||||
6, 14, // methods
|
||||
0, 0, // properties
|
||||
0, 0, // enums/sets
|
||||
0, 0, // constructors
|
||||
0, // flags
|
||||
0, // signalCount
|
||||
|
||||
// slots: name, argc, parameters, tag, flags
|
||||
1, 0, 44, 2, 0x08 /* Private */,
|
||||
3, 0, 45, 2, 0x08 /* Private */,
|
||||
4, 0, 46, 2, 0x08 /* Private */,
|
||||
5, 1, 47, 2, 0x08 /* Private */,
|
||||
7, 0, 50, 2, 0x08 /* Private */,
|
||||
8, 1, 51, 2, 0x08 /* Private */,
|
||||
|
||||
// slots: parameters
|
||||
QMetaType::Void,
|
||||
QMetaType::Void,
|
||||
QMetaType::Void,
|
||||
QMetaType::Void, QMetaType::QByteArray, 6,
|
||||
QMetaType::Void,
|
||||
QMetaType::Void, 0x80000000 | 9, 10,
|
||||
|
||||
0 // eod
|
||||
};
|
||||
|
||||
void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
MainWindow *_t = static_cast<MainWindow *>(_o);
|
||||
switch (_id) {
|
||||
case 0: _t->openSerialPort(); break;
|
||||
case 1: _t->closeSerialPort(); break;
|
||||
case 2: _t->about(); break;
|
||||
case 3: _t->writeData((*reinterpret_cast< const QByteArray(*)>(_a[1]))); break;
|
||||
case 4: _t->readData(); break;
|
||||
case 5: _t->handleError((*reinterpret_cast< QSerialPort::SerialPortError(*)>(_a[1]))); break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const QMetaObject MainWindow::staticMetaObject = {
|
||||
{ &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow.data,
|
||||
qt_meta_data_MainWindow, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
|
||||
};
|
||||
|
||||
|
||||
const QMetaObject *MainWindow::metaObject() const
|
||||
{
|
||||
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
|
||||
}
|
||||
|
||||
void *MainWindow::qt_metacast(const char *_clname)
|
||||
{
|
||||
if (!_clname) return Q_NULLPTR;
|
||||
if (!strcmp(_clname, qt_meta_stringdata_MainWindow.stringdata))
|
||||
return static_cast<void*>(const_cast< MainWindow*>(this));
|
||||
return QMainWindow::qt_metacast(_clname);
|
||||
}
|
||||
|
||||
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
_id = QMainWindow::qt_metacall(_c, _id, _a);
|
||||
if (_id < 0)
|
||||
return _id;
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
if (_id < 6)
|
||||
qt_static_metacall(this, _c, _id, _a);
|
||||
_id -= 6;
|
||||
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
|
||||
if (_id < 6)
|
||||
*reinterpret_cast<int*>(_a[0]) = -1;
|
||||
_id -= 6;
|
||||
}
|
||||
return _id;
|
||||
}
|
||||
QT_END_MOC_NAMESPACE
|
124
console/terminal/moc_settingsdialog.cpp
Normal file
124
console/terminal/moc_settingsdialog.cpp
Normal file
@ -0,0 +1,124 @@
|
||||
/****************************************************************************
|
||||
** Meta object code from reading C++ file 'settingsdialog.h'
|
||||
**
|
||||
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.4.2)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#include "settingsdialog.h"
|
||||
#include <QtCore/qbytearray.h>
|
||||
#include <QtCore/qmetatype.h>
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||
#error "The header file 'settingsdialog.h' doesn't include <QObject>."
|
||||
#elif Q_MOC_OUTPUT_REVISION != 67
|
||||
#error "This file was generated using the moc from 5.4.2. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
QT_BEGIN_MOC_NAMESPACE
|
||||
struct qt_meta_stringdata_SettingsDialog_t {
|
||||
QByteArrayData data[7];
|
||||
char stringdata[93];
|
||||
};
|
||||
#define QT_MOC_LITERAL(idx, ofs, len) \
|
||||
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
|
||||
qptrdiff(offsetof(qt_meta_stringdata_SettingsDialog_t, stringdata) + ofs \
|
||||
- idx * sizeof(QByteArrayData)) \
|
||||
)
|
||||
static const qt_meta_stringdata_SettingsDialog_t qt_meta_stringdata_SettingsDialog = {
|
||||
{
|
||||
QT_MOC_LITERAL(0, 0, 14), // "SettingsDialog"
|
||||
QT_MOC_LITERAL(1, 15, 12), // "showPortInfo"
|
||||
QT_MOC_LITERAL(2, 28, 0), // ""
|
||||
QT_MOC_LITERAL(3, 29, 3), // "idx"
|
||||
QT_MOC_LITERAL(4, 33, 5), // "apply"
|
||||
QT_MOC_LITERAL(5, 39, 25), // "checkCustomBaudRatePolicy"
|
||||
QT_MOC_LITERAL(6, 65, 27) // "checkCustomDevicePathPolicy"
|
||||
|
||||
},
|
||||
"SettingsDialog\0showPortInfo\0\0idx\0apply\0"
|
||||
"checkCustomBaudRatePolicy\0"
|
||||
"checkCustomDevicePathPolicy"
|
||||
};
|
||||
#undef QT_MOC_LITERAL
|
||||
|
||||
static const uint qt_meta_data_SettingsDialog[] = {
|
||||
|
||||
// content:
|
||||
7, // revision
|
||||
0, // classname
|
||||
0, 0, // classinfo
|
||||
4, 14, // methods
|
||||
0, 0, // properties
|
||||
0, 0, // enums/sets
|
||||
0, 0, // constructors
|
||||
0, // flags
|
||||
0, // signalCount
|
||||
|
||||
// slots: name, argc, parameters, tag, flags
|
||||
1, 1, 34, 2, 0x08 /* Private */,
|
||||
4, 0, 37, 2, 0x08 /* Private */,
|
||||
5, 1, 38, 2, 0x08 /* Private */,
|
||||
6, 1, 41, 2, 0x08 /* Private */,
|
||||
|
||||
// slots: parameters
|
||||
QMetaType::Void, QMetaType::Int, 3,
|
||||
QMetaType::Void,
|
||||
QMetaType::Void, QMetaType::Int, 3,
|
||||
QMetaType::Void, QMetaType::Int, 3,
|
||||
|
||||
0 // eod
|
||||
};
|
||||
|
||||
void SettingsDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
SettingsDialog *_t = static_cast<SettingsDialog *>(_o);
|
||||
switch (_id) {
|
||||
case 0: _t->showPortInfo((*reinterpret_cast< int(*)>(_a[1]))); break;
|
||||
case 1: _t->apply(); break;
|
||||
case 2: _t->checkCustomBaudRatePolicy((*reinterpret_cast< int(*)>(_a[1]))); break;
|
||||
case 3: _t->checkCustomDevicePathPolicy((*reinterpret_cast< int(*)>(_a[1]))); break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const QMetaObject SettingsDialog::staticMetaObject = {
|
||||
{ &QDialog::staticMetaObject, qt_meta_stringdata_SettingsDialog.data,
|
||||
qt_meta_data_SettingsDialog, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
|
||||
};
|
||||
|
||||
|
||||
const QMetaObject *SettingsDialog::metaObject() const
|
||||
{
|
||||
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
|
||||
}
|
||||
|
||||
void *SettingsDialog::qt_metacast(const char *_clname)
|
||||
{
|
||||
if (!_clname) return Q_NULLPTR;
|
||||
if (!strcmp(_clname, qt_meta_stringdata_SettingsDialog.stringdata))
|
||||
return static_cast<void*>(const_cast< SettingsDialog*>(this));
|
||||
return QDialog::qt_metacast(_clname);
|
||||
}
|
||||
|
||||
int SettingsDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
_id = QDialog::qt_metacall(_c, _id, _a);
|
||||
if (_id < 0)
|
||||
return _id;
|
||||
if (_c == QMetaObject::InvokeMetaMethod) {
|
||||
if (_id < 4)
|
||||
qt_static_metacall(this, _c, _id, _a);
|
||||
_id -= 4;
|
||||
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
|
||||
if (_id < 4)
|
||||
*reinterpret_cast<int*>(_a[0]) = -1;
|
||||
_id -= 4;
|
||||
}
|
||||
return _id;
|
||||
}
|
||||
QT_END_MOC_NAMESPACE
|
4518
console/terminal/qrc_terminal.cpp
Normal file
4518
console/terminal/qrc_terminal.cpp
Normal file
File diff suppressed because it is too large
Load Diff
205
console/terminal/settingsdialog.cpp
Normal file
205
console/terminal/settingsdialog.cpp
Normal file
@ -0,0 +1,205 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Denis Shienkov <denis.shienkov@gmail.com>
|
||||
** Copyright (C) 2012 Laszlo Papp <lpapp@kde.org>
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtSerialPort module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL21$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 or version 3 as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||
** following information to ensure the GNU Lesser General Public License
|
||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "settingsdialog.h"
|
||||
#include "ui_settingsdialog.h"
|
||||
|
||||
#include <QtSerialPort/QSerialPortInfo>
|
||||
#include <QIntValidator>
|
||||
#include <QLineEdit>
|
||||
|
||||
QT_USE_NAMESPACE
|
||||
|
||||
static const char blankString[] = QT_TRANSLATE_NOOP("SettingsDialog", "N/A");
|
||||
|
||||
SettingsDialog::SettingsDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::SettingsDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
intValidator = new QIntValidator(0, 4000000, this);
|
||||
|
||||
ui->baudRateBox->setInsertPolicy(QComboBox::NoInsert);
|
||||
|
||||
connect(ui->applyButton, SIGNAL(clicked()),
|
||||
this, SLOT(apply()));
|
||||
connect(ui->serialPortInfoListBox, SIGNAL(currentIndexChanged(int)),
|
||||
this, SLOT(showPortInfo(int)));
|
||||
connect(ui->baudRateBox, SIGNAL(currentIndexChanged(int)),
|
||||
this, SLOT(checkCustomBaudRatePolicy(int)));
|
||||
connect(ui->serialPortInfoListBox, SIGNAL(currentIndexChanged(int)),
|
||||
this, SLOT(checkCustomDevicePathPolicy(int)));
|
||||
|
||||
fillPortsParameters();
|
||||
fillPortsInfo();
|
||||
|
||||
updateSettings();
|
||||
}
|
||||
|
||||
SettingsDialog::~SettingsDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
SettingsDialog::Settings SettingsDialog::settings() const
|
||||
{
|
||||
return currentSettings;
|
||||
}
|
||||
|
||||
void SettingsDialog::showPortInfo(int idx)
|
||||
{
|
||||
if (idx == -1)
|
||||
return;
|
||||
|
||||
QStringList list = ui->serialPortInfoListBox->itemData(idx).toStringList();
|
||||
ui->descriptionLabel->setText(tr("Description: %1").arg(list.count() > 1 ? list.at(1) : tr(blankString)));
|
||||
ui->manufacturerLabel->setText(tr("Manufacturer: %1").arg(list.count() > 2 ? list.at(2) : tr(blankString)));
|
||||
ui->serialNumberLabel->setText(tr("Serial number: %1").arg(list.count() > 3 ? list.at(3) : tr(blankString)));
|
||||
ui->locationLabel->setText(tr("Location: %1").arg(list.count() > 4 ? list.at(4) : tr(blankString)));
|
||||
ui->vidLabel->setText(tr("Vendor Identifier: %1").arg(list.count() > 5 ? list.at(5) : tr(blankString)));
|
||||
ui->pidLabel->setText(tr("Product Identifier: %1").arg(list.count() > 6 ? list.at(6) : tr(blankString)));
|
||||
}
|
||||
|
||||
void SettingsDialog::apply()
|
||||
{
|
||||
updateSettings();
|
||||
hide();
|
||||
}
|
||||
|
||||
void SettingsDialog::checkCustomBaudRatePolicy(int idx)
|
||||
{
|
||||
bool isCustomBaudRate = !ui->baudRateBox->itemData(idx).isValid();
|
||||
ui->baudRateBox->setEditable(isCustomBaudRate);
|
||||
if (isCustomBaudRate) {
|
||||
ui->baudRateBox->clearEditText();
|
||||
QLineEdit *edit = ui->baudRateBox->lineEdit();
|
||||
edit->setValidator(intValidator);
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsDialog::checkCustomDevicePathPolicy(int idx)
|
||||
{
|
||||
bool isCustomPath = !ui->serialPortInfoListBox->itemData(idx).isValid();
|
||||
ui->serialPortInfoListBox->setEditable(isCustomPath);
|
||||
if (isCustomPath)
|
||||
ui->serialPortInfoListBox->clearEditText();
|
||||
}
|
||||
|
||||
void SettingsDialog::fillPortsParameters()
|
||||
{
|
||||
ui->baudRateBox->addItem(QStringLiteral("9600"), QSerialPort::Baud9600);
|
||||
ui->baudRateBox->addItem(QStringLiteral("19200"), QSerialPort::Baud19200);
|
||||
ui->baudRateBox->addItem(QStringLiteral("38400"), QSerialPort::Baud38400);
|
||||
ui->baudRateBox->addItem(QStringLiteral("115200"), QSerialPort::Baud115200);
|
||||
ui->baudRateBox->addItem(tr("Custom"));
|
||||
|
||||
ui->dataBitsBox->addItem(QStringLiteral("5"), QSerialPort::Data5);
|
||||
ui->dataBitsBox->addItem(QStringLiteral("6"), QSerialPort::Data6);
|
||||
ui->dataBitsBox->addItem(QStringLiteral("7"), QSerialPort::Data7);
|
||||
ui->dataBitsBox->addItem(QStringLiteral("8"), QSerialPort::Data8);
|
||||
ui->dataBitsBox->setCurrentIndex(3);
|
||||
|
||||
ui->parityBox->addItem(tr("None"), QSerialPort::NoParity);
|
||||
ui->parityBox->addItem(tr("Even"), QSerialPort::EvenParity);
|
||||
ui->parityBox->addItem(tr("Odd"), QSerialPort::OddParity);
|
||||
ui->parityBox->addItem(tr("Mark"), QSerialPort::MarkParity);
|
||||
ui->parityBox->addItem(tr("Space"), QSerialPort::SpaceParity);
|
||||
|
||||
ui->stopBitsBox->addItem(QStringLiteral("1"), QSerialPort::OneStop);
|
||||
#ifdef Q_OS_WIN
|
||||
ui->stopBitsBox->addItem(tr("1.5"), QSerialPort::OneAndHalfStop);
|
||||
#endif
|
||||
ui->stopBitsBox->addItem(QStringLiteral("2"), QSerialPort::TwoStop);
|
||||
|
||||
ui->flowControlBox->addItem(tr("None"), QSerialPort::NoFlowControl);
|
||||
ui->flowControlBox->addItem(tr("RTS/CTS"), QSerialPort::HardwareControl);
|
||||
ui->flowControlBox->addItem(tr("XON/XOFF"), QSerialPort::SoftwareControl);
|
||||
}
|
||||
|
||||
void SettingsDialog::fillPortsInfo()
|
||||
{
|
||||
ui->serialPortInfoListBox->clear();
|
||||
QString description;
|
||||
QString manufacturer;
|
||||
QString serialNumber;
|
||||
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
|
||||
QStringList list;
|
||||
description = info.description();
|
||||
manufacturer = info.manufacturer();
|
||||
serialNumber = info.serialNumber();
|
||||
list << info.portName()
|
||||
<< (!description.isEmpty() ? description : blankString)
|
||||
<< (!manufacturer.isEmpty() ? manufacturer : blankString)
|
||||
<< (!serialNumber.isEmpty() ? serialNumber : blankString)
|
||||
<< info.systemLocation()
|
||||
<< (info.vendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : blankString)
|
||||
<< (info.productIdentifier() ? QString::number(info.productIdentifier(), 16) : blankString);
|
||||
|
||||
ui->serialPortInfoListBox->addItem(list.first(), list);
|
||||
}
|
||||
|
||||
ui->serialPortInfoListBox->addItem(tr("Custom"));
|
||||
}
|
||||
|
||||
void SettingsDialog::updateSettings()
|
||||
{
|
||||
currentSettings.name = ui->serialPortInfoListBox->currentText();
|
||||
|
||||
if (ui->baudRateBox->currentIndex() == 4) {
|
||||
currentSettings.baudRate = ui->baudRateBox->currentText().toInt();
|
||||
} else {
|
||||
currentSettings.baudRate = static_cast<QSerialPort::BaudRate>(
|
||||
ui->baudRateBox->itemData(ui->baudRateBox->currentIndex()).toInt());
|
||||
}
|
||||
currentSettings.stringBaudRate = QString::number(currentSettings.baudRate);
|
||||
|
||||
currentSettings.dataBits = static_cast<QSerialPort::DataBits>(
|
||||
ui->dataBitsBox->itemData(ui->dataBitsBox->currentIndex()).toInt());
|
||||
currentSettings.stringDataBits = ui->dataBitsBox->currentText();
|
||||
|
||||
currentSettings.parity = static_cast<QSerialPort::Parity>(
|
||||
ui->parityBox->itemData(ui->parityBox->currentIndex()).toInt());
|
||||
currentSettings.stringParity = ui->parityBox->currentText();
|
||||
|
||||
currentSettings.stopBits = static_cast<QSerialPort::StopBits>(
|
||||
ui->stopBitsBox->itemData(ui->stopBitsBox->currentIndex()).toInt());
|
||||
currentSettings.stringStopBits = ui->stopBitsBox->currentText();
|
||||
|
||||
currentSettings.flowControl = static_cast<QSerialPort::FlowControl>(
|
||||
ui->flowControlBox->itemData(ui->flowControlBox->currentIndex()).toInt());
|
||||
currentSettings.stringFlowControl = ui->flowControlBox->currentText();
|
||||
|
||||
currentSettings.localEchoEnabled = ui->localEchoCheckBox->isChecked();
|
||||
}
|
9
console/terminal/terminal.qrc
Normal file
9
console/terminal/terminal.qrc
Normal file
@ -0,0 +1,9 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>images/connect.png</file>
|
||||
<file>images/disconnect.png</file>
|
||||
<file>images/application-exit.png</file>
|
||||
<file>images/settings.png</file>
|
||||
<file>images/clear.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
Reference in New Issue
Block a user