diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-11-03 03:03:30 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-11-03 03:03:30 +0100 |
commit | d34ae8f61fa92ef31225cede984f07a8083e50fb (patch) | |
tree | 17d3daf469ddd1a70781539022b1a13e65c8d7a7 /src | |
parent | 8c4b7368b5b8c499a3cdf40b2f4ae8bbfc616dd0 (diff) | |
parent | 834258bb3d17638e8e3dc2eca2a3115006c092fd (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: I2060b7d74a0bfeecff06eb37db20261bfffa6666
Diffstat (limited to 'src')
-rw-r--r-- | src/serialbus/qmodbusrtuserialmaster.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/serialbus/qmodbusrtuserialmaster.cpp b/src/serialbus/qmodbusrtuserialmaster.cpp index 1db43a9..99006f4 100644 --- a/src/serialbus/qmodbusrtuserialmaster.cpp +++ b/src/serialbus/qmodbusrtuserialmaster.cpp @@ -150,18 +150,24 @@ void QModbusRtuSerialMaster::close() if (d->m_serialPort->isOpen()) d->m_serialPort->close(); - if (d->m_queue.count()) - qCDebug(QT_MODBUS_LOW) << "(RTU client) Aborted replies:" << d->m_queue.count(); + // enqueue current active request back for abortion + d->m_queue.enqueue(d->m_current); + d->m_current = QModbusClientPrivate::QueueElement(); + int numberOfAborts = 0; while (!d->m_queue.isEmpty()) { // Finish each open reply and forget them QModbusRtuSerialMasterPrivate::QueueElement elem = d->m_queue.dequeue(); if (!elem.reply.isNull()) { elem.reply->setError(QModbusDevice::ReplyAbortedError, QModbusClient::tr("Reply aborted due to connection closure.")); + numberOfAborts++; } } + if (numberOfAborts > 0) + qCDebug(QT_MODBUS_LOW) << "(RTU client) Aborted replies:" << numberOfAborts; + setState(QModbusDevice::UnconnectedState); } |