QModbusRtuSerialServer Class
Die Klasse „QModbusRtuSerialServer“ stellt einen Modbus-Server dar, der für die Kommunikation mit dem Modbus-Client eine serielle Schnittstelle nutzt. Mehr...
| Header: | #include <QModbusRtuSerialServer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Seit: | Qt 6.2 |
| Erbt von: | QModbusServer |
Öffentliche Funktionen
| QModbusRtuSerialServer(QObject *parent = nullptr) | |
| virtual | ~QModbusRtuSerialServer() |
(since 6.2) int | interFrameDelay() const |
(since 6.2) void | setInterFrameDelay(int microseconds) |
Neu implementierte öffentliche Funktionen
| virtual bool | processesBroadcast() const override |
Neu implementierte geschützte Funktionen
| virtual void | close() override |
| virtual bool | open() override |
| virtual QModbusResponse | processRequest(const QModbusPdu &request) override |
Ausführliche Beschreibung
Die Kommunikation über Modbus erfordert die Interaktion zwischen einer einzelnen Modbus-Client-Instanz und mehreren Modbus-Servern. Diese Klasse stellt die Modbus-Server-Implementierung über eine serielle Schnittstelle bereit.
Da mehrere Modbus-Server-Instanzen gleichzeitig (über einen seriellen Bus) mit einem Modbus-Client interagieren können, werden die Server anhand ihrer „ serverAddress “ () identifiziert.
Dokumentation der Mitgliedsfunktionen
[explicit] QModbusRtuSerialServer::QModbusRtuSerialServer(QObject *parent = nullptr)
Erstellt einen QModbusRtuSerialServer mit dem angegebenen „ parent “. Die Voreinstellung für „ serverAddress “ lautet „ 1 “.
[virtual noexcept] QModbusRtuSerialServer::~QModbusRtuSerialServer()
Löscht die Instanz von „ QModbusRtuSerialServer “.
[override virtual protected] void QModbusRtuSerialServer::close()
Implementiert: QModbusDevice::close().
[since 6.2] int QModbusRtuSerialServer::interFrameDelay() const
Gibt die Dauer des Pausenintervalls zwischen zwei aufeinanderfolgenden Modbus-Nachrichten in Mikrosekunden zurück.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch ` setInterFrameDelay()`.
[override virtual protected] bool QModbusRtuSerialServer::open()
Implementiert: QModbusDevice::open().
Hinweis: Beim Aufruf dieser Funktion werden vorhandene gepufferte Daten aus dem seriellen Port entfernt.
[override virtual protected] QModbusResponse QModbusRtuSerialServer::processRequest(const QModbusPdu &request)
Implementiert: ` QModbusServer::processRequest` (const QModbusPdu &request).
Verarbeitet die durch „ request “ angegebene Modbus-Client-Anfrage und gibt eine Modbus-Antwort zurück.
Die Modbus-Funktion „ QModbusRequest::EncapsulatedInterfaceTransport “ mit MEI-Typ 13 (0x0D) „CANopen General Reference“ wird herausgefiltert, da es sich dabei in der Regel ausschließlich um Modbus-TCP oder serielles Modbus-ASCII handelt.
Eine Anfrage an den seriellen RTU-Server wird mit einer Modbus-Ausnahmeantwort mit dem Ausnahmecode `QModbusExceptionResponse::IllegalFunction` beantwortet.
[override virtual] bool QModbusRtuSerialServer::processesBroadcast() const
Implementiert: ` QModbusServer::processesBroadcast()` const.
[since 6.2] void QModbusRtuSerialServer::setInterFrameDelay(int microseconds)
Legt die Dauer von „ microseconds “ für die Pause zwischen zwei aufeinanderfolgenden Modbus-Nachrichten fest. Standardmäßig verwendet die Klassenimplementierung einen gemäß der Modbus-Spezifikation vorab berechneten Wert. Eine aktive oder laufende Verbindung ist von solchen Änderungen der Verzögerung nicht betroffen.
Hinweis: Wenn „ microseconds “ auf -1 gesetzt ist oder „ microseconds “ kleiner als die vorab berechnete Verzögerung ist, wird dieser vorab berechnete Wert als Frame-Verzögerung verwendet.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch „ interFrameDelay()“.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.