diff options
Diffstat (limited to 'examples/serialbus/modbus/master')
-rw-r--r-- | examples/serialbus/modbus/master/main.cpp | 5 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/mainwindow.cpp | 74 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/mainwindow.h | 26 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/master.pro | 21 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/settingsdialog.h | 2 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/writeregistermodel.cpp | 6 | ||||
-rw-r--r-- | examples/serialbus/modbus/master/writeregistermodel.h | 4 |
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; }; |