QModbusResponse Class
QModbusResponse ist eine Containerklasse, die den Funktionscode und die Nutzdaten enthält, die in einer Modbus-ADU gespeichert sind. Mehr...
Kopfzeile: | #include <QModbusResponse> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
Vererbt: | QModbusPdu |
Vererbt von: |
Öffentliche Typen
Öffentliche Funktionen
QModbusResponse() | |
QModbusResponse(const QModbusPdu &pdu) | |
QModbusResponse(QModbusPdu::FunctionCode code, Args... data) | |
QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray()) |
Statische öffentliche Mitglieder
int | calculateDataSize(const QModbusResponse &response) |
int | minimumDataSize(const QModbusResponse &response) |
void | registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator) |
Verwandte Nicht-Mitglieder
QDataStream & | operator>>(QDataStream &stream, QModbusResponse &pdu) |
Detaillierte Beschreibung
Eine typische Modbus-Antwort kann wie folgt aussehen:
QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));
Hinweis: Wenn Sie den Konstruktor mit der Adresse QByteArray
verwenden, stellen Sie bitte sicher, dass Sie die enthaltenen Daten in Big-Endian-Byte-Reihenfolge konvertieren, bevor Sie die Anfrage erstellen.
Die gleiche Antwort kann wie folgt erstellt werden, wenn die Werte zur Kompilierungszeit bekannt sind:
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01; QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);
Member Type Dokumentation
[alias]
QModbusResponse::CalcFuncPtr
Typedef für einen Zeiger auf eine benutzerdefinierte Taschenrechnerfunktion mit der gleichen Signatur wie QModbusResponse::calculateDataSize.
Dokumentation der Mitgliedsfunktionen
[constexpr noexcept]
QModbusResponse::QModbusResponse()
Konstruiert eine ungültige QModbusResponse.
QModbusResponse::QModbusResponse(const QModbusPdu &pdu)
Konstruiert eine Kopie von pdu.
template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)
Konstruiert eine QModbusResponse 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]
QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
Konstruiert eine QModbusResponse mit dem Funktionscode code und der Nutzlast data. Es wird erwartet, dass die Daten bereits in Big-Endian-Byte-Reihenfolge gespeichert sind.
[static]
int QModbusResponse::calculateDataSize(const QModbusResponse &response)
Berechnet die erwartete Datengröße für response auf der Grundlage des Funktionscodes und der Daten der Antwort. Gibt die volle Größe des Datenteils der Antwort zurück; -1
, wenn die Größe nicht korrekt berechnet werden konnte.
Siehe auch minimumDataSize und registerDataSizeCalculator.
[static]
int QModbusResponse::minimumDataSize(const QModbusResponse &response)
Gibt die erwartete Mindestdatengröße für response zurück, basierend auf dem Funktionscode der Antwort; -1
, wenn der Funktionscode nicht bekannt ist.
[static]
void QModbusResponse::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)
Mit dieser Funktion wird eine benutzerdefinierte Implementierung zur Berechnung der Antwortdatengröße für den Funktionscode fc registriert. Sie kann verwendet werden, um die Implementierung in QModbusResponse::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 QModbusResponse &pdu);
Verwandte Nicht-Mitglieder
QDataStream &operator>>(QDataStream &stream, QModbusResponse &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.