summaryrefslogtreecommitdiffstats
path: root/src/serialbus/qmodbusrtuserialmaster.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialbus/qmodbusrtuserialmaster.cpp')
-rw-r--r--src/serialbus/qmodbusrtuserialmaster.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/serialbus/qmodbusrtuserialmaster.cpp b/src/serialbus/qmodbusrtuserialmaster.cpp
index 331e0ee..5a9555e 100644
--- a/src/serialbus/qmodbusrtuserialmaster.cpp
+++ b/src/serialbus/qmodbusrtuserialmaster.cpp
@@ -144,10 +144,15 @@ bool QModbusRtuSerialMaster::open()
*/
void QModbusRtuSerialMaster::close()
{
- if (state() == QModbusDevice::UnconnectedState)
+ if (state() == QModbusDevice::UnconnectedState ||
+ state() == QModbusDevice::ClosingState) {
return;
+ }
+
+ setState(QModbusDevice::ClosingState);
Q_D(QModbusRtuSerialMaster);
+
if (d->m_serialPort->isOpen())
d->m_serialPort->close();