QModbusRequest Class
QModbusRequest ist eine Containerklasse, die den Funktionscode und die Nutzdaten enthält, die in einer Modbus-ADU gespeichert sind. Mehr...
Kopfzeile: | #include <QModbusRequest> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
Vererbt: | 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) |
Detaillierte Beschreibung
Eine Modbus-Anfrage besteht in der Regel aus einem einzelnen Byte, das die FunctionCode
beschreibt, und N Bytes Nutzdaten.
Eine typische Modbus-Anfrage kann wie folgt aussehen:
QModbusRequest request(QModbusRequest::WriteMultipleCoils, QByteArray::fromHex("0013000a02cd01"));
Hinweis: Wenn Sie den Konstruktor mit QByteArray
verwenden, stellen Sie bitte sicher, dass Sie die enthaltenen Daten in Big-Endian-Byte-Reihenfolge konvertieren, bevor Sie die Anfrage erstellen.
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);
Member Type Dokumentation
[alias]
QModbusRequest::CalcFuncPtr
Typedef für einen Zeiger auf eine benutzerdefinierte Taschenrechnerfunktion mit der gleichen Signatur wie QModbusRequest::calculateDataSize.
Dokumentation der Mitgliedsfunktionen
[constexpr noexcept]
QModbusRequest::QModbusRequest()
Konstruiert einen ungültigen QModbusRequest.
QModbusRequest::QModbusRequest(const QModbusPdu &pdu)
Konstruiert eine Kopie von pdu.
template <typename... Args> QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, Args... data)
Konstruiert einen QModbusRequest mit dem Funktionscode code und der Nutzlast data. Die Daten werden in Big-Endian-Byte-Reihenfolge konvertiert und gespeichert.
Hinweis: Die Verwendung ist nur auf quint8
und quint16
beschränkt. Dies liegt daran, dass die Stream-Operatoren von QDataStream
nicht nur Rohdaten anhängen, sondern auch z. B. Größe, Anzahl usw. für komplexe Typen.
[explicit]
QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
Konstruiert eine QModbusResponse mit dem Funktionscode code und der Nutzlast data. Die Daten sollten bereits in Big-Endian-Byte-Reihenfolge gespeichert sein.
[static]
int QModbusRequest::calculateDataSize(const QModbusRequest &request)
Berechnet die erwartete Datengröße für request auf der Grundlage des Funktionscodes und der Daten der Anfrage. Gibt die volle Größ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 Mindestdatengröße für request auf der Grundlage des Funktionscodes der Anfrage zurück; -1
, wenn der Funktionscode nicht bekannt ist.
[static]
void QModbusRequest::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)
Mit dieser Funktion wird eine benutzerdefinierte Implementierung zur Berechnung der Anfragedatengröße für den Funktionscode fc registriert. Sie kann verwendet werden, um die Implementierung in QModbusRequest::calculateDataSize() zu erweitern oder außer Kraft zu setzen.
CalcFuncPtr
ist ein Typedef für einen Zeiger auf eine benutzerdefinierte Funktion calculator mit der folgenden Signatur:
int myCalculateDataSize(const QModbusRequest &pdu);
Verwandte Nicht-Mitglieder
QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu)
Liest eine pdu aus dem stream und gibt einen Verweis auf den Stream zurück.
Hinweis: Es kann vorkommen, dass die Funktion PDUs mit dem Funktionscode QModbusPdu::Diagnostics oder QModbusPdu::EncapsulatedInterfaceTransport aufgrund des fehlenden Größenindikators innerhalb der PDU nicht richtig streamen kann. Dies kann insbesondere dann passieren, wenn die PDU in einen Stream eingebettet ist, der nicht mit der Diagnose/gekapselten Anfrage selbst endet.
© 2025 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.