diff options
-rw-r--r-- | examples/serialbus/modbus/master/mainwindow.ui | 2 | ||||
-rw-r--r-- | src/serialbus/qmodbusdevice.cpp | 3 | ||||
-rw-r--r-- | tests/auto/qmodbusdevice/tst_qmodbusdevice.cpp | 10 |
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); |