QModbusRequest Class
QModbusRequest ist eine Containerklasse, die den Funktionscode und die Nutzdaten enthält, die in einer Modbus-ADU gespeichert sind. Mehr...
| Header: | #include <QModbusRequest> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Erbt von: | QModbusPdu |
Öffentliche Typen
Öffentliche Funktionen
| QModbusRequest() | |
| QModbusRequest(const QModbusPdu &pdu) | |
| QModbusRequest(QModbusPdu::FunctionCode code, Args... data) | |
| QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray()) |
Statische öffentliche Mitglieder
| int | calculateDataSize(const QModbusRequest &request) |
| int | minimumDataSize(const QModbusRequest &request) |
| void | registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator) |
Verwandte Nicht-Mitglieder
| QDataStream & | operator>>(QDataStream &stream, QModbusRequest &pdu) |
Ausführliche Beschreibung
Eine Modbus-Anfrage besteht in der Regel aus einem einzelnen Byte, das die „ FunctionCode “ beschreibt, sowie N Bytes Nutzdaten
Eine typische Modbus-Anfrage kann wie folgt aussehen:
QModbusRequest request(QModbusRequest::WriteMultipleCoils,
QByteArray::fromHex("0013000a02cd01"));Hinweis: Wenn Sie den Konstruktor verwenden, der den „ QByteArray “ als Parameter nimmt, stellen Sie bitte sicher, dass Sie die darin enthaltenen Daten vor dem Erstellen der Anfrage in die Big-Endian-Byte-Reihenfolge konvertieren.
Die gleiche Anfrage kann wie folgt erstellt werden, wenn die Werte zur Kompilierungszeit bekannt sind:
quint16 startAddress = 19, numberOfCoils = 10;
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils,
payloadInBytes, outputHigh, outputLow);Dokumentation zu den Mitgliedstypen
[alias] QModbusRequest::CalcFuncPtr
Typedef für einen Zeiger auf eine benutzerdefinierte Rechenfunktion mit derselben Signatur wie QModbusRequest::calculateDataSize.
Dokumentation der Member-Funktionen
[constexpr noexcept default] QModbusRequest::QModbusRequest()
Erstellt eine ungültige QModbusRequest-Objekt.
QModbusRequest::QModbusRequest(const QModbusPdu &pdu)
Erstellt eine Kopie von „ pdu “.
template <typename... Args> QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, Args... data)
Erstellt einen QModbusRequest, dessen Funktionscode auf „ code “ und dessen Nutzdaten auf „ data “ gesetzt sind. Die Daten werden konvertiert und in Big-Endian-Byte-Reihenfolge gespeichert.
Hinweis: Die Verwendung ist ausschließlich auf „ quint8 “ und „ quint16 “ beschränkt. Der Grund dafür ist, dass die Stream-Operatoren von „ QDataStream “ bei komplexen Typen nicht nur die Rohdaten, sondern auch z. B. Größe, Anzahl usw. anfügen.
[explicit] QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
Erstellt einen ` QModbusResponse `, dessen Funktionscode auf ` code ` und dessen Nutzdaten auf ` data` gesetzt sind. Es wird davon ausgegangen, dass die Daten bereits in Big-Endian-Byte-Reihenfolge gespeichert sind.
[static] int QModbusRequest::calculateDataSize(const QModbusRequest &request)
Berechnet die erwartete Datengröße für request anhand des Funktionscodes und der Daten der Anfrage. Gibt die Gesamtgröße des Datenteils der Anfrage zurück; -1, wenn die Größe nicht korrekt berechnet werden konnte.
Siehe auch „ minimumDataSize “ und „ registerDataSizeCalculator “.
[static] int QModbusRequest::minimumDataSize(const QModbusRequest &request)
Gibt die erwartete minimale Datengröße für „ request “ basierend auf dem Funktionscode der Anfrage zurück; „ -1 “, wenn der Funktionscode nicht bekannt ist.
[static] void QModbusRequest::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)
Diese Funktion registriert eine benutzerdefinierte Implementierung zur Berechnung der Größe der Anforderungsdaten für den Funktionscode ` fc`. Sie kann verwendet werden, um die Implementierung in ` QModbusRequest::calculateDataSize()` zu erweitern oder zu überschreiben.
CalcFuncPtr ist ein `typedef` für einen Zeiger auf eine benutzerdefinierte ` calculator `-Funktion mit folgender Signatur:
int myCalculateDataSize(const QModbusRequest &pdu);Verwandte Nicht-Mitglieder
QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu)
Liest eine „ pdu “ aus dem „ stream “ und gibt eine Referenz auf den Stream zurück.
Hinweis: Die Funktion kann möglicherweise PDUs mit den Funktionscodes „ QModbusPdu::Diagnostics “ oder „ QModbusPdu::EncapsulatedInterfaceTransport “ nicht ordnungsgemäß streamen, da der Größenindikator innerhalb der PDU fehlt. Dies kann insbesondere dann vorkommen, wenn die PDU in einen Stream eingebettet ist, der nicht mit der Diagnose-/Kapselungsanforderung selbst endet.
© 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.