diff options
author | Alex Blasche <alexander.blasche@theqtcompany.com> | 2015-10-23 13:57:46 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@theqtcompany.com> | 2015-10-25 19:52:11 +0000 |
commit | 8ea5ca66825f1c7045823d60974a1bc9e92d7ee0 (patch) | |
tree | 50bdd082f385d8708253d0509ede90b55fcb7b6f /examples/serialbus/modbus/slave | |
parent | 8e162b633e80082c8def85550758d9871402745a (diff) |
Performance improvement in slave example
There is no need to connect the signals each time we reconnect.
The server map is only set once when a new QModbusServer instance
is created and not during each reconnect.
Change-Id: I0784b98b93f625012abcf688535c6c2660366a33
Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
Diffstat (limited to 'examples/serialbus/modbus/slave')
-rw-r--r-- | examples/serialbus/modbus/slave/mainwindow.cpp | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/examples/serialbus/modbus/slave/mainwindow.cpp b/examples/serialbus/modbus/slave/mainwindow.cpp index 6f29d9c..0cbb0de 100644 --- a/examples/serialbus/modbus/slave/mainwindow.cpp +++ b/examples/serialbus/modbus/slave/mainwindow.cpp @@ -91,10 +91,22 @@ void MainWindow::on_connectType_currentIndexChanged(int index) else ui->errorLabel->setText(tr("Could not create Modbus server.")); } else { + QModbusDataUnitMap reg; + reg.insert(QModbusDataUnit::Coils, { QModbusDataUnit::Coils, 0, 10 }); + reg.insert(QModbusDataUnit::DiscreteInputs, { QModbusDataUnit::DiscreteInputs, 0, 10 }); + reg.insert(QModbusDataUnit::InputRegisters, { QModbusDataUnit::InputRegisters, 0, 10 }); + reg.insert(QModbusDataUnit::HoldingRegisters, { QModbusDataUnit::HoldingRegisters, 0, 10 }); + + modbusDevice->setMap(reg); + + connect(modbusDevice, &QModbusServer::dataWritten, + this, &MainWindow::updateWidgets); connect(modbusDevice, &QModbusClient::stateChanged, this, &MainWindow::onStateChanged); connect(modbusDevice, &QModbusServer::errorOccurred, this, &MainWindow::handleDeviceError); + + setupDeviceData(); } } @@ -110,31 +122,13 @@ void MainWindow::on_connectButton_clicked() { bool intendToConnect = (modbusDevice->state() == QModbusDevice::UnconnectedState); - if (modbusDevice && intendToConnect) { - QModbusDataUnitMap reg; - reg.insert(QModbusDataUnit::Coils, { QModbusDataUnit::Coils, 0, 10 }); - reg.insert(QModbusDataUnit::DiscreteInputs, { QModbusDataUnit::DiscreteInputs, 0, 10 }); - reg.insert(QModbusDataUnit::InputRegisters, { QModbusDataUnit::InputRegisters, 0, 10 }); - reg.insert(QModbusDataUnit::HoldingRegisters, { QModbusDataUnit::HoldingRegisters, 0, 10 }); - - modbusDevice->setMap(reg); - - connect(modbusDevice, &QModbusServer::dataWritten, - this, &MainWindow::updateWidgets); - connect(modbusDevice, &QModbusServer::stateChanged, - this, &MainWindow::onStateChanged); - } - ui->errorLabel->setText(QString()); if (intendToConnect) { modbusDevice->setPortName(ui->portEdit->text()); modbusDevice->setSlaveId(ui->slaveEdit->text().toInt()); - if (modbusDevice->connectDevice()) { - setupDeviceData(); - } else { + if (!modbusDevice->connectDevice()) ui->errorLabel->setText(tr("Connect failed: ") + modbusDevice->errorString()); - } } else { modbusDevice->disconnectDevice(); } |