Sur cette page

QModbusResponse Class

QModbusResponse est une classe conteneur contenant le code de la fonction et la charge utile qui est stockée à l'intérieur d'un ADU Modbus. Plus d'informations...

En-tête : #include <QModbusResponse>
CMake : find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake : QT += serialbus
Hérite : QModbusPdu
Hérité par :

QModbusExceptionResponse

Types publics

Fonctions publiques

QModbusResponse()
QModbusResponse(const QModbusPdu &pdu)
QModbusResponse(QModbusPdu::FunctionCode code, Args... data)
QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())

Membres publics statiques

int calculateDataSize(const QModbusResponse &response)
int minimumDataSize(const QModbusResponse &response)
void registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)

Description détaillée

Une réponse Modbus typique peut ressembler à ceci :

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

Remarque : lors de l'utilisation du constructeur à l'adresse QByteArray, veillez à convertir les données contenues en ordre d'octets big-endian avant de créer la demande.

La même réponse peut être créée comme ceci, si les valeurs sont connues au moment de la compilation :

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

Membre Type Documentation

[alias] QModbusResponse::CalcFuncPtr

Typedef pour un pointeur vers une fonction de calculatrice personnalisée avec la même signature que QModbusResponse::calculateDataSize.

Documentation sur les fonctions membres

[constexpr noexcept] QModbusResponse::QModbusResponse()

Construit une réponse QModbusResponse invalide.

QModbusResponse::QModbusResponse(const QModbusPdu &pdu)

Construit une copie de pdu.

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

Construit une réponse QModbusResponse avec un code de fonction fixé à code et une charge utile fixée à data. Les données sont converties et stockées dans l'ordre des octets big-endian.

Remarque : l'utilisation est limitée à quint8 et quint16. En effet, les opérateurs de flux de QDataStream n'ajouteront pas seulement des données brutes, mais aussi, par exemple, la taille, le nombre, etc. pour les types complexes.

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

Construit une réponse QModbusResponse avec un code de fonction fixé à code et une charge utile fixée à data. Les données sont censées être déjà stockées dans l'ordre des octets big-endian.

[static] int QModbusResponse::calculateDataSize(const QModbusResponse &response)

Calcule la taille attendue des données pour response, sur la base du code de fonction et des données de la réponse. Renvoie la taille complète de la partie des données de la réponse ; -1 si la taille n'a pas pu être calculée correctement.

Voir également minimumDataSize et registerDataSizeCalculator.

[static] int QModbusResponse::minimumDataSize(const QModbusResponse &response)

Renvoie la taille minimale attendue des données pour response en fonction du code de fonction de la réponse ; -1 si le code de fonction n'est pas connu.

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

Cette fonction enregistre une implémentation définie par l'utilisateur pour calculer la taille des données de réponse pour le code de fonction fc. Elle peut être utilisée pour étendre ou remplacer l'implémentation à l'intérieur de QModbusResponse::calculateDataSize().

Le code CalcFuncPtr est un typedef pour un pointeur vers une fonction personnalisée calculator avec la signature suivante :

int myCalculateDataSize(const QModbusResponse &pdu);

Non-membres apparentés

QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)

Lit un pdu sur le site stream et renvoie une référence au flux.

Remarque : il se peut que la fonction ne parvienne pas à transmettre correctement les PDU portant le code de fonction QModbusPdu::Diagnostics ou QModbusPdu::EncapsulatedInterfaceTransport en raison de l'absence d'indicateur de taille à l'intérieur du PDU. Cela peut notamment se produire lorsque le PDU est intégré dans un flux qui ne se termine pas par la requête diagnostique/encapsulée elle-même.

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