summaryrefslogtreecommitdiffstats
path: root/examples/serialbus
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2018-05-09 20:43:49 +0200
committerAndré Hartmann <aha_1980@gmx.de>2019-02-13 16:50:50 +0000
commiteb85cebadb546dafe7c87db931164491ad5cca89 (patch)
tree8f967f1091614089dc531e5af9acab1a1a77c1c2 /examples/serialbus
parenteca5edf45a8043b87852698a00dd05acf897ba2c (diff)
Cleanup and modernize the Modbus examples
* Replace static_cast with QOverload * Fix some Clang warnings * Mark user-visible strings with tr() * Disable verbose log output * Replace auto-connect with explicit functor-style connect * Initialize members at declaration * Small style cleanup Change-Id: Idcb6c24a8733e7fd659ad4750ce0798a72c84af6 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'examples/serialbus')
-rw-r--r--examples/serialbus/modbus/adueditor/adueditor.pro16
-rw-r--r--examples/serialbus/modbus/adueditor/mainwindow.cpp43
-rw-r--r--examples/serialbus/modbus/adueditor/modbustcpclient_p.h21
-rw-r--r--examples/serialbus/modbus/adueditor/plaintextedit.h6
-rw-r--r--examples/serialbus/modbus/master/main.cpp5
-rw-r--r--examples/serialbus/modbus/master/mainwindow.cpp72
-rw-r--r--examples/serialbus/modbus/master/mainwindow.h26
-rw-r--r--examples/serialbus/modbus/master/master.pro21
-rw-r--r--examples/serialbus/modbus/master/settingsdialog.h2
-rw-r--r--examples/serialbus/modbus/master/writeregistermodel.cpp6
-rw-r--r--examples/serialbus/modbus/master/writeregistermodel.h4
-rw-r--r--examples/serialbus/modbus/slave/main.cpp5
-rw-r--r--examples/serialbus/modbus/slave/mainwindow.cpp45
-rw-r--r--examples/serialbus/modbus/slave/mainwindow.h10
-rw-r--r--examples/serialbus/modbus/slave/slave.pro15
15 files changed, 162 insertions, 135 deletions
diff --git a/examples/serialbus/modbus/adueditor/adueditor.pro b/examples/serialbus/modbus/adueditor/adueditor.pro
index facba76..77a6158 100644
--- a/examples/serialbus/modbus/adueditor/adueditor.pro
+++ b/examples/serialbus/modbus/adueditor/adueditor.pro
@@ -7,9 +7,19 @@ QT += serialbus-private core-private
requires(qtConfig(combobox))
requires(qtConfig(modbus-serialport))
-FORMS += interface.ui
-SOURCES += main.cpp mainwindow.cpp modbustcpclient.cpp
-HEADERS += mainwindow.h plaintextedit.h modbustcpclient.h modbustcpclient_p.h
+SOURCES += \
+ main.cpp \
+ mainwindow.cpp \
+ modbustcpclient.cpp
+
+HEADERS += \
+ mainwindow.h \
+ modbustcpclient.h \
+ modbustcpclient_p.h \
+ plaintextedit.h
+
+FORMS += \
+ interface.ui
target.path = $$[QT_INSTALL_EXAMPLES]/serialbus/modbus/adueditor
INSTALLS += target
diff --git a/examples/serialbus/modbus/adueditor/mainwindow.cpp b/examples/serialbus/modbus/adueditor/mainwindow.cpp
index 862be6a..995cfc9 100644
--- a/examples/serialbus/modbus/adueditor/mainwindow.cpp
+++ b/examples/serialbus/modbus/adueditor/mainwindow.cpp
@@ -52,8 +52,8 @@
#include "modbustcpclient.h"
#include <QLoggingCategory>
-#include <QModbusRtuSerialMaster>
#include <QModbusPdu>
+#include <QModbusRtuSerialMaster>
#include <QSerialPortInfo>
#ifndef QT_STATIC
@@ -84,7 +84,7 @@ MainWindow::MainWindow(QWidget *parent)
for (const QSerialPortInfo &info : ports)
serialPortCombo->addItem(info.portName(), false);
serialPortCombo->insertSeparator(serialPortCombo->count());
- serialPortCombo->addItem(QStringLiteral("Add port..."), true);
+ serialPortCombo->addItem(tr("Add port..."), true);
serialPortCombo->setInsertPolicy(QComboBox::InsertAtTop);
connect(tcpRadio, &QRadioButton::toggled, this, [this](bool toggled) {
@@ -119,14 +119,14 @@ void MainWindow::on_sendButton_clicked()
return;
}
- const quint8 address = (isSerial ? addressSpin : ui1Spin)->value();
+ const quint8 address = quint8((isSerial ? addressSpin : ui1Spin)->value());
if (isCustom) {
qDebug() << "Send: Sending custom PDU.";
reply = m_device->sendRawRequest(QModbusRequest(QModbusRequest::FunctionCode(
pduData[0]), pduData.mid(1)), address);
} else {
qDebug() << "Send: Sending PDU with predefined function code.";
- quint16 fc = (isSerial ? fcSerialDrop : fcTcpDrop)->currentText().left(4).toShort(0, 16);
+ quint16 fc = (isSerial ? fcSerialDrop : fcTcpDrop)->currentText().left(4).toUShort(0, 16);
reply = m_device->sendRawRequest(QModbusRequest(QModbusRequest::FunctionCode(fc), pduData),
address);
}
@@ -149,24 +149,23 @@ void MainWindow::on_connectButton_clicked()
{
if (tcpRadio->isChecked()) {
auto device = new ModbusTcpClient;
- using signature = void (QSpinBox::*)(int);
- connect(ti1Spin, static_cast<signature>(&QSpinBox::valueChanged), device,
- &ModbusTcpClient::valueChanged);
- connect(ti2Spin, static_cast<signature>(&QSpinBox::valueChanged), device,
- &ModbusTcpClient::valueChanged);
-
- connect(pi1Spin, static_cast<signature>(&QSpinBox::valueChanged), device,
- &ModbusTcpClient::valueChanged);
- connect(pi2Spin, static_cast<signature>(&QSpinBox::valueChanged), device,
- &ModbusTcpClient::valueChanged);
-
- connect(l1Spin, static_cast<signature>(&QSpinBox::valueChanged), device,
- &ModbusTcpClient::valueChanged);
- connect(l2Spin, static_cast<signature>(&QSpinBox::valueChanged), device,
- &ModbusTcpClient::valueChanged);
-
- connect(ui1Spin, static_cast<signature>(&QSpinBox::valueChanged), device,
- &ModbusTcpClient::valueChanged);
+ connect(ti1Spin, QOverload<int>::of(&QSpinBox::valueChanged),
+ device, &ModbusTcpClient::valueChanged);
+ connect(ti2Spin, QOverload<int>::of(&QSpinBox::valueChanged),
+ device, &ModbusTcpClient::valueChanged);
+
+ connect(pi1Spin, QOverload<int>::of(&QSpinBox::valueChanged),
+ device, &ModbusTcpClient::valueChanged);
+ connect(pi2Spin, QOverload<int>::of(&QSpinBox::valueChanged),
+ device, &ModbusTcpClient::valueChanged);
+
+ connect(l1Spin, QOverload<int>::of(&QSpinBox::valueChanged),
+ device, &ModbusTcpClient::valueChanged);
+ connect(l2Spin, QOverload<int>::of(&QSpinBox::valueChanged),
+ device, &ModbusTcpClient::valueChanged);
+
+ connect(ui1Spin, QOverload<int>::of(&QSpinBox::valueChanged),
+ device, &ModbusTcpClient::valueChanged);
m_device = device;
device->valueChanged(0); // trigger update
diff --git a/examples/serialbus/modbus/adueditor/modbustcpclient_p.h b/examples/serialbus/modbus/adueditor/modbustcpclient_p.h
index 9d091d8..a563b6f 100644
--- a/examples/serialbus/modbus/adueditor/modbustcpclient_p.h
+++ b/examples/serialbus/modbus/adueditor/modbustcpclient_p.h
@@ -73,7 +73,7 @@ public:
QDataStream output(&buffer, QIODevice::WriteOnly);
output << m_tId << m_pId << m_length << m_uId << request;
- int writtenBytes = m_socket->write(buffer);
+ qint64 writtenBytes = m_socket->write(buffer);
if (writtenBytes == -1 || writtenBytes < buffer.size()) {
Q_Q(ModbusTcpClient);
qDebug() << "Cannot write request to socket.";
@@ -91,14 +91,13 @@ public:
Q_Q(ModbusTcpClient);
auto reply = new QModbusReply(type, m_uId, q);
- const auto element = QueueElement{ reply, request, unit, m_numberOfRetries,
- m_responseTimeoutDuration };
+ const auto element = QueueElement{reply, request, unit, m_numberOfRetries,
+ m_responseTimeoutDuration};
m_transactionStore.insert(m_tId, element);
- using TypeId = void (QTimer::*)(int);
q->connect(q, &QModbusClient::timeoutChanged,
- element.timer.data(), static_cast<TypeId>(&QTimer::setInterval));
- QObject::connect(element.timer.data(), &QTimer::timeout, [this, writeToSocket]() {
+ element.timer.data(), QOverload<int>::of(&QTimer::setInterval));
+ q->connect(element.timer.data(), &QTimer::timeout, [this, writeToSocket]() {
if (!m_transactionStore.contains(m_tId))
return;
@@ -120,13 +119,13 @@ public:
}
});
element.timer->start();
- return reply;
+ return reply;
}
- quint16 m_tId;
- quint16 m_pId;
- quint16 m_length;
- quint8 m_uId;
+ quint16 m_tId = 0;
+ quint16 m_pId = 0;
+ quint16 m_length = 0;
+ quint8 m_uId = 0;
};
#endif // MODBUSTCPCLIENT_P_H
diff --git a/examples/serialbus/modbus/adueditor/plaintextedit.h b/examples/serialbus/modbus/adueditor/plaintextedit.h
index 3cbbaaf..cbc590c 100644
--- a/examples/serialbus/modbus/adueditor/plaintextedit.h
+++ b/examples/serialbus/modbus/adueditor/plaintextedit.h
@@ -81,12 +81,12 @@ public:
void contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
- menu.addAction(QStringLiteral("Clear"), this, &QPlainTextEdit::clear);
+ menu.addAction(tr("Clear"), this, &QPlainTextEdit::clear);
#ifndef QT_NO_CLIPBOARD
- menu.addAction(QStringLiteral("Copy"), this, &QPlainTextEdit::copy, QKeySequence::Copy);
+ menu.addAction(tr("Copy"), this, &QPlainTextEdit::copy, QKeySequence::Copy);
#endif
menu.addSeparator();
- menu.addAction(QStringLiteral("Select All"), this, &QPlainTextEdit::selectAll,
+ menu.addAction(tr("Select All"), this, &QPlainTextEdit::selectAll,
QKeySequence::SelectAll);
menu.exec(event->globalPos());
}
diff --git a/examples/serialbus/modbus/master/main.cpp b/examples/serialbus/modbus/master/main.cpp
index 4f97a39..19a1d5b 100644
--- a/examples/serialbus/modbus/master/main.cpp
+++ b/examples/serialbus/modbus/master/main.cpp
@@ -55,9 +55,8 @@
int main(int argc, char *argv[])
{
- // TODO uncomment this line before release
- // right now we always need it
- QLoggingCategory::setFilterRules(QStringLiteral("qt.modbus* = true"));
+ // Uncomment the following line to enable logging
+ // QLoggingCategory::setFilterRules(QStringLiteral("qt.modbus* = true"));
QApplication a(argc, argv);
MainWindow w;
w.show();
diff --git a/examples/serialbus/modbus/master/mainwindow.cpp b/examples/serialbus/modbus/master/mainwindow.cpp
index 6600af8..7427a17 100644
--- a/examples/serialbus/modbus/master/mainwindow.cpp
+++ b/examples/serialbus/modbus/master/mainwindow.cpp
@@ -67,8 +67,6 @@ enum ModbusConnection {
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
- , lastRequest(nullptr)
- , modbusDevice(nullptr)
{
ui->setupUi(this);
@@ -82,8 +80,8 @@ MainWindow::MainWindow(QWidget *parent)
ui->writeValueTable->setModel(writeModel);
ui->writeValueTable->hideColumn(2);
- connect(writeModel, &WriteRegisterModel::updateViewport, ui->writeValueTable->viewport(),
- static_cast<void (QWidget::*)()>(&QWidget::update));
+ connect(writeModel, &WriteRegisterModel::updateViewport,
+ ui->writeValueTable->viewport(), QOverload<>::of(&QWidget::update));
ui->writeTable->addItem(tr("Coils"), QModbusDataUnit::Coils);
ui->writeTable->addItem(tr("Discrete Inputs"), QModbusDataUnit::DiscreteInputs);
@@ -92,11 +90,11 @@ MainWindow::MainWindow(QWidget *parent)
#if QT_CONFIG(modbus_serialport)
ui->connectType->setCurrentIndex(0);
- on_connectType_currentIndexChanged(0);
+ onConnectTypeChanged(0);
#else
// lock out the serial port option
ui->connectType->setCurrentIndex(1);
- on_connectType_currentIndexChanged(1);
+ onConnectTypeChanged(1);
ui->connectType->setEnabled(false);
#endif
@@ -105,10 +103,10 @@ MainWindow::MainWindow(QWidget *parent)
model->setItem(i, new QStandardItem(QStringLiteral("%1").arg(i + 1)));
ui->writeSize->setModel(model);
ui->writeSize->setCurrentText("10");
- connect(ui->writeSize,&QComboBox::currentTextChanged, writeModel,
- &WriteRegisterModel::setNumberOfValues);
+ connect(ui->writeSize, &QComboBox::currentTextChanged,
+ writeModel, &WriteRegisterModel::setNumberOfValues);
- auto valueChanged = static_cast<void (QSpinBox::*)(int)> (&QSpinBox::valueChanged);
+ auto valueChanged = QOverload<int>::of(&QSpinBox::valueChanged);
connect(ui->writeAddress, valueChanged, writeModel, &WriteRegisterModel::setStartAddress);
connect(ui->writeAddress, valueChanged, this, [this, model](int i) {
int lastPossibleIndex = 0;
@@ -142,16 +140,28 @@ void MainWindow::initActions()
ui->actionExit->setEnabled(true);
ui->actionOptions->setEnabled(true);
+ connect(ui->connectButton, &QPushButton::clicked,
+ this, &MainWindow::onConnectButtonClicked);
connect(ui->actionConnect, &QAction::triggered,
- this, &MainWindow::on_connectButton_clicked);
+ this, &MainWindow::onConnectButtonClicked);
connect(ui->actionDisconnect, &QAction::triggered,
- this, &MainWindow::on_connectButton_clicked);
+ this, &MainWindow::onConnectButtonClicked);
+ connect(ui->readButton, &QPushButton::clicked,
+ this, &MainWindow::onReadButtonClicked);
+ connect(ui->writeButton, &QPushButton::clicked,
+ this, &MainWindow::onWriteButtonClicked);
+ connect(ui->readWriteButton, &QPushButton::clicked,
+ this, &MainWindow::onReadWriteButtonClicked);
+ connect(ui->connectType, QOverload<int>::of(&QComboBox::currentIndexChanged),
+ this, &MainWindow::onConnectTypeChanged);
+ connect(ui->writeTable, QOverload<int>::of(&QComboBox::currentIndexChanged),
+ this, &MainWindow::onWriteTableChanged);
connect(ui->actionExit, &QAction::triggered, this, &QMainWindow::close);
connect(ui->actionOptions, &QAction::triggered, m_settingsDialog, &QDialog::show);
}
-void MainWindow::on_connectType_currentIndexChanged(int index)
+void MainWindow::onConnectTypeChanged(int index)
{
if (modbusDevice) {
modbusDevice->disconnectDevice();
@@ -159,7 +169,7 @@ void MainWindow::on_connectType_currentIndexChanged(int index)
modbusDevice = nullptr;
}
- auto type = static_cast<ModbusConnection> (index);
+ auto type = static_cast<ModbusConnection>(index);
if (type == Serial) {
#if QT_CONFIG(modbus_serialport)
modbusDevice = new QModbusRtuSerialMaster(this);
@@ -182,18 +192,18 @@ void MainWindow::on_connectType_currentIndexChanged(int index)
statusBar()->showMessage(tr("Could not create Modbus client."), 5000);
} else {
connect(modbusDevice, &QModbusClient::stateChanged,
- this, &MainWindow::onStateChanged);
+ this, &MainWindow::onModbusStateChanged);
}
}
-void MainWindow::on_connectButton_clicked()
+void MainWindow::onConnectButtonClicked()
{
if (!modbusDevice)
return;
statusBar()->clearMessage();
if (modbusDevice->state() != QModbusDevice::ConnectedState) {
- if (static_cast<ModbusConnection> (ui->connectType->currentIndex()) == Serial) {
+ if (static_cast<ModbusConnection>(ui->connectType->currentIndex()) == Serial) {
modbusDevice->setConnectionParameter(QModbusDevice::SerialPortNameParameter,
ui->portEdit->text());
#if QT_CONFIG(modbus_serialport)
@@ -226,7 +236,7 @@ void MainWindow::on_connectButton_clicked()
}
}
-void MainWindow::onStateChanged(int state)
+void MainWindow::onModbusStateChanged(int state)
{
bool connected = (state != QModbusDevice::UnconnectedState);
ui->actionConnect->setEnabled(!connected);
@@ -238,7 +248,7 @@ void MainWindow::onStateChanged(int state)
ui->connectButton->setText(tr("Disconnect"));
}
-void MainWindow::on_readButton_clicked()
+void MainWindow::onReadButtonClicked()
{
if (!modbusDevice)
return;
@@ -247,7 +257,7 @@ void MainWindow::on_readButton_clicked()
if (auto *reply = modbusDevice->sendReadRequest(readRequest(), ui->serverEdit->value())) {
if (!reply->isFinished())
- connect(reply, &QModbusReply::finished, this, &MainWindow::readReady);
+ connect(reply, &QModbusReply::finished, this, &MainWindow::onReadReady);
else
delete reply; // broadcast replies return immediately
} else {
@@ -255,7 +265,7 @@ void MainWindow::on_readButton_clicked()
}
}
-void MainWindow::readReady()
+void MainWindow::onReadReady()
{
auto reply = qobject_cast<QModbusReply *>(sender());
if (!reply)
@@ -263,7 +273,7 @@ void MainWindow::readReady()
if (reply->error() == QModbusDevice::NoError) {
const QModbusDataUnit unit = reply->result();
- for (uint i = 0; i < unit.valueCount(); i++) {
+ for (int i = 0, total = int(unit.valueCount()); i < total; ++i) {
const QString entry = tr("Address: %1, Value: %2").arg(unit.startAddress() + i)
.arg(QString::number(unit.value(i),
unit.registerType() <= QModbusDataUnit::Coils ? 10 : 16));
@@ -282,7 +292,7 @@ void MainWindow::readReady()
reply->deleteLater();
}
-void MainWindow::on_writeButton_clicked()
+void MainWindow::onWriteButtonClicked()
{
if (!modbusDevice)
return;
@@ -290,7 +300,7 @@ void MainWindow::on_writeButton_clicked()
QModbusDataUnit writeUnit = writeRequest();
QModbusDataUnit::RegisterType table = writeUnit.registerType();
- for (uint i = 0; i < writeUnit.valueCount(); i++) {
+ for (int i = 0, total = int(writeUnit.valueCount()); i < total; ++i) {
if (table == QModbusDataUnit::Coils)
writeUnit.setValue(i, writeModel->m_coils[i + writeUnit.startAddress()]);
else
@@ -319,7 +329,7 @@ void MainWindow::on_writeButton_clicked()
}
}
-void MainWindow::on_readWriteButton_clicked()
+void MainWindow::onReadWriteButtonClicked()
{
if (!modbusDevice)
return;
@@ -328,7 +338,7 @@ void MainWindow::on_readWriteButton_clicked()
QModbusDataUnit writeUnit = writeRequest();
QModbusDataUnit::RegisterType table = writeUnit.registerType();
- for (uint i = 0; i < writeUnit.valueCount(); i++) {
+ for (int i = 0, total = int(writeUnit.valueCount()); i < total; ++i) {
if (table == QModbusDataUnit::Coils)
writeUnit.setValue(i, writeModel->m_coils[i + writeUnit.startAddress()]);
else
@@ -338,7 +348,7 @@ void MainWindow::on_readWriteButton_clicked()
if (auto *reply = modbusDevice->sendReadWriteRequest(readRequest(), writeUnit,
ui->serverEdit->value())) {
if (!reply->isFinished())
- connect(reply, &QModbusReply::finished, this, &MainWindow::readReady);
+ connect(reply, &QModbusReply::finished, this, &MainWindow::onReadReady);
else
delete reply; // broadcast replies return immediately
} else {
@@ -346,7 +356,7 @@ void MainWindow::on_readWriteButton_clicked()
}
}
-void MainWindow::on_writeTable_currentIndexChanged(int index)
+void MainWindow::onWriteTableChanged(int index)
{
const bool coilsOrHolding = index == 0 || index == 3;
if (coilsOrHolding) {
@@ -363,25 +373,25 @@ void MainWindow::on_writeTable_currentIndexChanged(int index)
QModbusDataUnit MainWindow::readRequest() const
{
const auto table =
- static_cast<QModbusDataUnit::RegisterType> (ui->writeTable->currentData().toInt());
+ static_cast<QModbusDataUnit::RegisterType>(ui->writeTable->currentData().toInt());
int startAddress = ui->readAddress->value();
Q_ASSERT(startAddress >= 0 && startAddress < 10);
// do not go beyond 10 entries
- int numberOfEntries = qMin(ui->readSize->currentText().toInt(), 10 - startAddress);
+ quint16 numberOfEntries = qMin(ui->readSize->currentText().toUShort(), quint16(10 - startAddress));
return QModbusDataUnit(table, startAddress, numberOfEntries);
}
QModbusDataUnit MainWindow::writeRequest() const
{
const auto table =
- static_cast<QModbusDataUnit::RegisterType> (ui->writeTable->currentData().toInt());
+ static_cast<QModbusDataUnit::RegisterType>(ui->writeTable->currentData().toInt());
int startAddress = ui->writeAddress->value();
Q_ASSERT(startAddress >= 0 && startAddress < 10);
// do not go beyond 10 entries
- int numberOfEntries = qMin(ui->writeSize->currentText().toInt(), 10 - startAddress);
+ quint16 numberOfEntries = qMin(ui->writeSize->currentText().toUShort(), quint16(10 - startAddress));
return QModbusDataUnit(table, startAddress, numberOfEntries);
}
diff --git a/examples/serialbus/modbus/master/mainwindow.h b/examples/serialbus/modbus/master/mainwindow.h
index d4d5036..186d004 100644
--- a/examples/serialbus/modbus/master/mainwindow.h
+++ b/examples/serialbus/modbus/master/mainwindow.h
@@ -83,24 +83,24 @@ private:
QModbusDataUnit writeRequest() const;
private slots:
- void on_connectButton_clicked();
- void onStateChanged(int state);
+ void onConnectButtonClicked();
+ void onModbusStateChanged(int state);
- void on_readButton_clicked();
- void readReady();
+ void onReadButtonClicked();
+ void onReadReady();
- void on_writeButton_clicked();
- void on_readWriteButton_clicked();
+ void onWriteButtonClicked();
+ void onReadWriteButtonClicked();
- void on_connectType_currentIndexChanged(int);
- void on_writeTable_currentIndexChanged(int);
+ void onConnectTypeChanged(int);
+ void onWriteTableChanged(int);
private:
- Ui::MainWindow *ui;
- QModbusReply *lastRequest;
- QModbusClient *modbusDevice;
- SettingsDialog *m_settingsDialog;
- WriteRegisterModel *writeModel;
+ Ui::MainWindow *ui = nullptr;
+ QModbusReply *lastRequest = nullptr;
+ QModbusClient *modbusDevice = nullptr;
+ SettingsDialog *m_settingsDialog = nullptr;
+ WriteRegisterModel *writeModel = nullptr;
};
#endif // MAINWINDOW_H
diff --git a/examples/serialbus/modbus/master/master.pro b/examples/serialbus/modbus/master/master.pro
index 188fbc1..d7a4885 100644
--- a/examples/serialbus/modbus/master/master.pro
+++ b/examples/serialbus/modbus/master/master.pro
@@ -7,17 +7,20 @@ TARGET = modbusmaster
TEMPLATE = app
CONFIG += c++11
-SOURCES += main.cpp\
- mainwindow.cpp \
- settingsdialog.cpp \
- writeregistermodel.cpp
+SOURCES += \
+ main.cpp\
+ mainwindow.cpp \
+ settingsdialog.cpp \
+ writeregistermodel.cpp
-HEADERS += mainwindow.h \
- settingsdialog.h \
- writeregistermodel.h
+HEADERS += \
+ mainwindow.h \
+ settingsdialog.h \
+ writeregistermodel.h
-FORMS += mainwindow.ui \
- settingsdialog.ui
+FORMS += \
+ mainwindow.ui \
+ settingsdialog.ui
RESOURCES += \
master.qrc
diff --git a/examples/serialbus/modbus/master/settingsdialog.h b/examples/serialbus/modbus/master/settingsdialog.h
index 98ba946..fbeb97a 100644
--- a/examples/serialbus/modbus/master/settingsdialog.h
+++ b/examples/serialbus/modbus/master/settingsdialog.h
@@ -88,7 +88,7 @@ public:
private:
Settings m_settings;
- Ui::SettingsDialog *ui;
+ Ui::SettingsDialog *ui = nullptr;
};
#endif // SETTINGSDIALOG_H
diff --git a/examples/serialbus/modbus/master/writeregistermodel.cpp b/examples/serialbus/modbus/master/writeregistermodel.cpp
index 4b61e99..441f643 100644
--- a/examples/serialbus/modbus/master/writeregistermodel.cpp
+++ b/examples/serialbus/modbus/master/writeregistermodel.cpp
@@ -82,7 +82,7 @@ QVariant WriteRegisterModel::data(const QModelIndex &index, int role) const
if (index.column() == CoilsColumn && role == Qt::CheckStateRole) // coils
return m_coils.at(index.row()) ? Qt::Checked : Qt::Unchecked;
- else if (index.column() == HoldingColumn && role == Qt::DisplayRole) //holding registers
+ if (index.column() == HoldingColumn && role == Qt::DisplayRole) // holding registers
return QString("0x%1").arg(QString::number(m_holdingRegisters.at(index.row()), 16));
return QVariant();
@@ -146,9 +146,9 @@ Qt::ItemFlags WriteRegisterModel::flags(const QModelIndex &index) const
if ((index.row() < m_address) || (index.row() >= (m_address + m_number)))
flags &= ~Qt::ItemIsEnabled;
- if (index.column() == CoilsColumn) //coils
+ if (index.column() == CoilsColumn) // coils
return flags | Qt::ItemIsUserCheckable;
- if (index.column() == HoldingColumn) //holding registers
+ if (index.column() == HoldingColumn) // holding registers
return flags | Qt::ItemIsEditable;
return flags;
diff --git a/examples/serialbus/modbus/master/writeregistermodel.h b/examples/serialbus/modbus/master/writeregistermodel.h
index fe49591..4b0311e 100644
--- a/examples/serialbus/modbus/master/writeregistermodel.h
+++ b/examples/serialbus/modbus/master/writeregistermodel.h
@@ -79,8 +79,8 @@ signals:
void updateViewport();
public:
- int m_number;
- int m_address;
+ int m_number = 0;
+ int m_address = 0;
QBitArray m_coils;
QVector<quint16> m_holdingRegisters;
};
diff --git a/examples/serialbus/modbus/slave/main.cpp b/examples/serialbus/modbus/slave/main.cpp
index 4f97a39..19a1d5b 100644
--- a/examples/serialbus/modbus/slave/main.cpp
+++ b/examples/serialbus/modbus/slave/main.cpp
@@ -55,9 +55,8 @@
int main(int argc, char *argv[])
{
- // TODO uncomment this line before release
- // right now we always need it
- QLoggingCategory::setFilterRules(QStringLiteral("qt.modbus* = true"));
+ // Uncomment the following line to enable logging
+ // QLoggingCategory::setFilterRules(QStringLiteral("qt.modbus* = true"));
QApplication a(argc, argv);
MainWindow w;
w.show();
diff --git a/examples/serialbus/modbus/slave/mainwindow.cpp b/examples/serialbus/modbus/slave/mainwindow.cpp
index 4a4c194..dc31196 100644
--- a/examples/serialbus/modbus/slave/mainwindow.cpp
+++ b/examples/serialbus/modbus/slave/mainwindow.cpp
@@ -67,18 +67,17 @@ enum ModbusConnection {
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
- , modbusDevice(nullptr)
{
ui->setupUi(this);
setupWidgetContainers();
#if QT_CONFIG(modbus_serialport)
ui->connectType->setCurrentIndex(0);
- on_connectType_currentIndexChanged(0);
+ onCurrentConnectTypeChanged(0);
#else
// lock out the serial port option
ui->connectType->setCurrentIndex(1);
- on_connectType_currentIndexChanged(1);
+ onCurrentConnectTypeChanged(1);
ui->connectType->setEnabled(false);
#endif
@@ -102,16 +101,20 @@ void MainWindow::initActions()
ui->actionExit->setEnabled(true);
ui->actionOptions->setEnabled(true);
+ connect(ui->connectButton, &QPushButton::clicked,
+ this, &MainWindow::onConnectButtonClicked);
connect(ui->actionConnect, &QAction::triggered,
- this, &MainWindow::on_connectButton_clicked);
+ this, &MainWindow::onConnectButtonClicked);
connect(ui->actionDisconnect, &QAction::triggered,
- this, &MainWindow::on_connectButton_clicked);
+ this, &MainWindow::onConnectButtonClicked);
+ connect(ui->connectType, QOverload<int>::of(&QComboBox::currentIndexChanged),
+ this, &MainWindow::onCurrentConnectTypeChanged);
connect(ui->actionExit, &QAction::triggered, this, &QMainWindow::close);
connect(ui->actionOptions, &QAction::triggered, m_settingsDialog, &QDialog::show);
}
-void MainWindow::on_connectType_currentIndexChanged(int index)
+void MainWindow::onCurrentConnectTypeChanged(int index)
{
if (modbusDevice) {
modbusDevice->disconnect();
@@ -119,7 +122,7 @@ void MainWindow::on_connectType_currentIndexChanged(int index)
modbusDevice = nullptr;
}
- ModbusConnection type = static_cast<ModbusConnection> (index);
+ auto type = static_cast<ModbusConnection>(index);
if (type == Serial) {
#if QT_CONFIG(modbus_serialport)
modbusDevice = new QModbusRtuSerialSlave(this);
@@ -176,14 +179,14 @@ void MainWindow::handleDeviceError(QModbusDevice::Error newError)
statusBar()->showMessage(modbusDevice->errorString(), 5000);
}
-void MainWindow::on_connectButton_clicked()
+void MainWindow::onConnectButtonClicked()
{
bool intendToConnect = (modbusDevice->state() == QModbusDevice::UnconnectedState);
statusBar()->clearMessage();
if (intendToConnect) {
- if (static_cast<ModbusConnection> (ui->connectType->currentIndex()) == Serial) {
+ if (static_cast<ModbusConnection>(ui->connectType->currentIndex()) == Serial) {
modbusDevice->setConnectionParameter(QModbusDevice::SerialPortNameParameter,
ui->portEdit->text());
#if QT_CONFIG(modbus_serialport)
@@ -244,7 +247,7 @@ void MainWindow::bitChanged(int id, QModbusDataUnit::RegisterType table, bool va
if (!modbusDevice)
return;
- if (!modbusDevice->setData(table, id, value))
+ if (!modbusDevice->setData(table, quint16(id), value))
statusBar()->showMessage(tr("Could not set data: ") + modbusDevice->errorString(), 5000);
}
@@ -256,11 +259,11 @@ void MainWindow::setRegister(const QString &value)
const QString objectName = QObject::sender()->objectName();
if (registers.contains(objectName)) {
bool ok = true;
- const int id = QObject::sender()->property("ID").toInt();
+ const quint16 id = quint16(QObject::sender()->property("ID").toUInt());
if (objectName.startsWith(QStringLiteral("inReg")))
- ok = modbusDevice->setData(QModbusDataUnit::InputRegisters, id, value.toInt(&ok, 16));
+ ok = modbusDevice->setData(QModbusDataUnit::InputRegisters, id, value.toUShort(&ok, 16));
else if (objectName.startsWith(QStringLiteral("holdReg")))
- ok = modbusDevice->setData(QModbusDataUnit::HoldingRegisters, id, value.toInt(&ok, 16));
+ ok = modbusDevice->setData(QModbusDataUnit::HoldingRegisters, id, value.toUShort(&ok, 16));
if (!ok)
statusBar()->showMessage(tr("Could not set register: ") + modbusDevice->errorString(),
@@ -275,11 +278,11 @@ void MainWindow::updateWidgets(QModbusDataUnit::RegisterType table, int address,
QString text;
switch (table) {
case QModbusDataUnit::Coils:
- modbusDevice->data(QModbusDataUnit::Coils, address + i, &value);
+ modbusDevice->data(QModbusDataUnit::Coils, quint16(address + i), &value);
coilButtons.button(address + i)->setChecked(value);
break;
case QModbusDataUnit::HoldingRegisters:
- modbusDevice->data(QModbusDataUnit::HoldingRegisters, address + i, &value);
+ modbusDevice->data(QModbusDataUnit::HoldingRegisters, quint16(address + i), &value);
registers.value(QStringLiteral("holdReg_%1").arg(address + i))->setText(text
.setNum(value, 16));
break;
@@ -296,10 +299,10 @@ void MainWindow::setupDeviceData()
if (!modbusDevice)
return;
- for (int i = 0; i < coilButtons.buttons().count(); ++i)
+ for (quint16 i = 0; i < coilButtons.buttons().count(); ++i)
modbusDevice->setData(QModbusDataUnit::Coils, i, coilButtons.button(i)->isChecked());
- for (int i = 0; i < discreteButtons.buttons().count(); ++i) {
+ for (quint16 i = 0; i < discreteButtons.buttons().count(); ++i) {
modbusDevice->setData(QModbusDataUnit::DiscreteInputs, i,
discreteButtons.button(i)->isChecked());
}
@@ -307,11 +310,11 @@ void MainWindow::setupDeviceData()
bool ok;
for (QLineEdit *widget : qAsConst(registers)) {
if (widget->objectName().startsWith(QStringLiteral("inReg"))) {
- modbusDevice->setData(QModbusDataUnit::InputRegisters, widget->property("ID").toInt(),
- widget->text().toInt(&ok, 16));
+ modbusDevice->setData(QModbusDataUnit::InputRegisters, quint16(widget->property("ID").toUInt()),
+ widget->text().toUShort(&ok, 16));
} else if (widget->objectName().startsWith(QStringLiteral("holdReg"))) {
- modbusDevice->setData(QModbusDataUnit::HoldingRegisters, widget->property("ID").toInt(),
- widget->text().toInt(&ok, 16));
+ modbusDevice->setData(QModbusDataUnit::HoldingRegisters, quint16(widget->property("ID").toUInt()),
+ widget->text().toUShort(&ok, 16));
}
}
}
diff --git a/examples/serialbus/modbus/slave/mainwindow.h b/examples/serialbus/modbus/slave/mainwindow.h
index aec1e9d..e824649 100644
--- a/examples/serialbus/modbus/slave/mainwindow.h
+++ b/examples/serialbus/modbus/slave/mainwindow.h
@@ -77,7 +77,7 @@ public:
~MainWindow();
private Q_SLOTS:
- void on_connectButton_clicked();
+ void onConnectButtonClicked();
void onStateChanged(int state);
void coilChanged(int id);
@@ -87,7 +87,7 @@ private Q_SLOTS:
void setRegister(const QString &value);
void updateWidgets(QModbusDataUnit::RegisterType table, int address, int size);
- void on_connectType_currentIndexChanged(int);
+ void onCurrentConnectTypeChanged(int);
void handleDeviceError(QModbusDevice::Error newError);
@@ -96,13 +96,13 @@ private:
void setupDeviceData();
void setupWidgetContainers();
- Ui::MainWindow *ui;
- QModbusServer *modbusDevice;
+ Ui::MainWindow *ui = nullptr;
+ QModbusServer *modbusDevice = nullptr;
QButtonGroup coilButtons;
QButtonGroup discreteButtons;
QHash<QString, QLineEdit *> registers;
- SettingsDialog *m_settingsDialog;
+ SettingsDialog *m_settingsDialog = nullptr;
};
#endif // MAINWINDOW_H
diff --git a/examples/serialbus/modbus/slave/slave.pro b/examples/serialbus/modbus/slave/slave.pro
index aadef07..2e128c2 100644
--- a/examples/serialbus/modbus/slave/slave.pro
+++ b/examples/serialbus/modbus/slave/slave.pro
@@ -7,13 +7,18 @@ TARGET = modbusslave
TEMPLATE = app
CONFIG += c++11
-SOURCES += main.cpp\
- mainwindow.cpp \
- settingsdialog.cpp
+SOURCES += \
+ main.cpp \
+ mainwindow.cpp \
+ settingsdialog.cpp
-HEADERS += mainwindow.h settingsdialog.h
+HEADERS += \
+ mainwindow.h \
+ settingsdialog.h
-FORMS += mainwindow.ui settingsdialog.ui
+FORMS += \
+ mainwindow.ui \
+ settingsdialog.ui
RESOURCES += slave.qrc