summaryrefslogtreecommitdiffstats
path: root/examples/serialbus/modbus/master
diff options
context:
space:
mode:
Diffstat (limited to 'examples/serialbus/modbus/master')
-rw-r--r--examples/serialbus/modbus/master/main.cpp5
-rw-r--r--examples/serialbus/modbus/master/mainwindow.cpp74
-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
7 files changed, 75 insertions, 63 deletions
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..d88393b 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);
@@ -167,7 +177,7 @@ void MainWindow::on_connectType_currentIndexChanged(int index)
} else if (type == Tcp) {
modbusDevice = new QModbusTcpClient(this);
if (ui->portEdit->text().isEmpty())
- ui->portEdit->setText(QLatin1Literal("127.0.0.1:502"));
+ ui->portEdit->setText(QLatin1String("127.0.0.1:502"));
}
connect(modbusDevice, &QModbusClient::errorOccurred, [this](QModbusDevice::Error) {
@@ -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;
};