summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/serialbus/modbus/master/mainwindow.ui2
-rw-r--r--src/serialbus/qmodbusdevice.cpp3
-rw-r--r--tests/auto/qmodbusdevice/tst_qmodbusdevice.cpp10
3 files changed, 14 insertions, 1 deletions
diff --git a/examples/serialbus/modbus/master/mainwindow.ui b/examples/serialbus/modbus/master/mainwindow.ui
index 4230fbf..bf80826 100644
--- a/examples/serialbus/modbus/master/mainwindow.ui
+++ b/examples/serialbus/modbus/master/mainwindow.ui
@@ -17,7 +17,7 @@
</size>
</property>
<property name="windowTitle">
- <string>Modbus Master Example</string>
+ <string>Modbus Client Example</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout">
diff --git a/src/serialbus/qmodbusdevice.cpp b/src/serialbus/qmodbusdevice.cpp
index 4aaae87..7ef358c 100644
--- a/src/serialbus/qmodbusdevice.cpp
+++ b/src/serialbus/qmodbusdevice.cpp
@@ -258,6 +258,9 @@ bool QModbusDevice::connectDevice()
*/
void QModbusDevice::disconnectDevice()
{
+ if (state() == QModbusDevice::UnconnectedState)
+ return;
+
setState(QModbusDevice::ClosingState);
//Unconnected is set by backend -> might be delayed by event loop
diff --git a/tests/auto/qmodbusdevice/tst_qmodbusdevice.cpp b/tests/auto/qmodbusdevice/tst_qmodbusdevice.cpp
index 836d881..748c4bf 100644
--- a/tests/auto/qmodbusdevice/tst_qmodbusdevice.cpp
+++ b/tests/auto/qmodbusdevice/tst_qmodbusdevice.cpp
@@ -64,6 +64,7 @@ private slots:
void cleanupTestCase();
void connectDevice();
+ void disconnectDevice();
void state();
void error();
@@ -98,6 +99,15 @@ void tst_QModbusDevice::connectDevice()
QVERIFY(!device->connectDevice());
}
+void tst_QModbusDevice::disconnectDevice()
+{
+ //see QTBUG-66648
+ DummyDevice dev;
+ QCOMPARE(dev.state(), QModbusDevice::UnconnectedState);
+ dev.disconnectDevice();
+ QCOMPARE(dev.state(), QModbusDevice::UnconnectedState);
+}
+
void tst_QModbusDevice::state()
{
device->setState(QModbusDevice::ConnectedState);