summaryrefslogtreecommitdiffstats
path: root/examples/serialbus/modbus/slave
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@theqtcompany.com>2015-10-23 13:57:46 +0200
committerKarsten Heimrich <karsten.heimrich@theqtcompany.com>2015-10-25 19:52:11 +0000
commit8ea5ca66825f1c7045823d60974a1bc9e92d7ee0 (patch)
tree50bdd082f385d8708253d0509ede90b55fcb7b6f /examples/serialbus/modbus/slave
parent8e162b633e80082c8def85550758d9871402745a (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.cpp32
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();
}