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)
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.