QModbusResponse Class
QModbusResponse est une classe conteneur qui regroupe le code de fonction et la charge utile stockés dans une unité de données d'application (ADU) Modbus. En savoir plus...
| En-tête : | #include <QModbusResponse> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake : | QT += serialbus |
| Hérite de : | QModbusPdu |
| Hérité par : |
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) |
Éléments non membres associés
| QDataStream & | operator>>(QDataStream &stream, QModbusResponse &pdu) |
Description détaillée
Une réponse Modbus typique peut se présenter comme suit :
QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));Remarque : lorsque vous utilisez le constructeur prenant en paramètre l'QByteArray, veillez à convertir les données qu'il contient en ordre d'octets « big-endian » avant de créer la requête.
La même réponse peut être créée de la manière suivante, si les valeurs sont connues au moment de la compilation :
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);Documentation sur les types de membres
[alias] QModbusResponse::CalcFuncPtr
Définition de type pour un pointeur vers une fonction de calcul personnalisée ayant la même signature que QModbusResponse::calculateDataSize.
Documentation des fonctions membres
[constexpr noexcept default] QModbusResponse::QModbusResponse()
Crée une instance `QModbusResponse` non valide.
QModbusResponse::QModbusResponse(const QModbusPdu &pdu)
Crée une copie de pdu.
template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)
Crée un objet `QModbusResponse` dont le code de fonction est défini sur ` code ` et dont la charge utile est définie sur ` data`. Les données sont converties et stockées selon l'ordre des octets « big-endian ».
Remarque : l'utilisation est limitée à quint8 et quint16 uniquement. En effet, les opérateurs de flux QDataStream n'ajoutent pas seulement les données brutes, mais également, par exemple, la taille, le nombre, etc. pour les types complexes.
[explicit] QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
Crée un objet `QModbusResponse` dont le code de fonction est défini sur « code » et dont la charge utile est définie sur « data ». Les données doivent déjà être stockées dans l'ordre des octets « big-endian ».
[static] int QModbusResponse::calculateDataSize(const QModbusResponse &response)
Calcule la taille prévue des données pour response, en fonction du code de fonction et des données de la réponse. Renvoie la taille totale de la partie 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 prévue 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 permettant de calculer la taille des données de réponse pour la fonction ` fc`. Elle peut être utilisée pour étendre ou remplacer l'implémentation contenue dans la fonction ` QModbusResponse::calculateDataSize()`.
CalcFuncPtr est un typedef pour un pointeur vers une fonction personnalisée calculator présentant la signature suivante :
int myCalculateDataSize(const QModbusResponse &pdu);Éléments non membres associés
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)
Lit une PDU de type « pdu » à partir du flux de données « stream » et renvoie une référence à ce flux.
Remarque : la fonction peut ne pas réussir à transmettre correctement les PDU dont le code de fonction est « QModbusPdu::Diagnostics » ou « QModbusPdu::EncapsulatedInterfaceTransport » en raison de l’absence d’indicateur de taille au sein de la PDU. Cela peut notamment se produire lorsque la PDU est intégrée dans un flux qui ne se termine pas par la requête de diagnostic/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.