Auf dieser Seite

QModbusResponse Class

„QModbusResponse“ ist eine Containerklasse, die den Funktionscode und die Nutzdaten enthält, die in einer Modbus-ADU gespeichert sind. Mehr...

Header: #include <QModbusResponse>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Erbt von: QModbusPdu
Vererbt an:

QModbusExceptionResponse

Ö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)
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)

Ausführliche Beschreibung

Eine typische Modbus-Antwort kann wie folgt aussehen:

QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));

Hinweis: Wenn Sie den Konstruktor mit dem Parameter „ QByteArray “ verwenden, stellen Sie bitte sicher, dass Sie die darin enthaltenen Daten vor dem Erstellen der Anfrage in die Big-Endian-Byte-Reihenfolge konvertieren.

Die gleiche Antwort kann wie folgt erstellt werden, wenn die Werte bereits zur Kompilierungszeit bekannt sind:

quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);

Dokumentation zum Mitgliedstyp

[alias] QModbusResponse::CalcFuncPtr

Typedef für einen Zeiger auf eine benutzerdefinierte Rechenfunktion mit derselben Signatur wie QModbusResponse::calculateDataSize.

Dokumentation der Member-Funktionen

[constexpr noexcept default] QModbusResponse::QModbusResponse()

Erstellt eine ungültige QModbusResponse.

QModbusResponse::QModbusResponse(const QModbusPdu &pdu)

Erstellt eine Kopie von „ pdu “.

template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)

Erstellt eine `QModbusResponse`, deren Funktionscode auf ` code ` und deren 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 nicht nur Rohdaten anhängen, sondern bei komplexen Typen auch z. B. Größe, Anzahl usw.

[explicit] QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())

Erstellt ein `QModbusResponse`-Objekt, 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 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 Gesamtgröß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 minimale Datengröße für „ response “ basierend auf dem Funktionscode der Antwort zurück; „ -1 “, wenn der Funktionscode nicht bekannt ist.

[static] void QModbusResponse::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)

Diese Funktion registriert eine benutzerdefinierte Implementierung zur Berechnung der Größe der Antwortdaten für den Funktionscode fc. Sie kann verwendet werden, um die Implementierung innerhalb von QModbusResponse::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 QModbusResponse &pdu);

Verwandte Nicht-Mitglieder

QDataStream &operator>>(QDataStream &stream, QModbusResponse &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.