QModbusRequest Class
QModbusRequest 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 <QModbusRequest> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake : | QT += serialbus |
| Hérite de : | QModbusPdu |
Types publics
Fonctions publiques
| QModbusRequest() | |
| QModbusRequest(const QModbusPdu &pdu) | |
| QModbusRequest(QModbusPdu::FunctionCode code, Args... data) | |
| QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray()) |
Membres publics statiques
| int | calculateDataSize(const QModbusRequest &request) |
| int | minimumDataSize(const QModbusRequest &request) |
| void | registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator) |
Éléments non-membres associés
| QDataStream & | operator>>(QDataStream &stream, QModbusRequest &pdu) |
Description détaillée
Une requête Modbus se compose généralement d'un seul octet décrivant l'FunctionCode, et de N octets de données utiles
Une requête Modbus typique peut se présenter comme suit :
QModbusRequest request(QModbusRequest::WriteMultipleCoils,
QByteArray::fromHex("0013000a02cd01"));Remarque : lorsque vous utilisez le constructeur prenant l’ QByteArray, veillez à convertir les données qu’il contient à l’ordre des octets big-endian avant de créer la requête.
La même requête peut être créée ainsi, si les valeurs sont connues au moment de la compilation :
quint16 startAddress = 19, numberOfCoils = 10;
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils,
payloadInBytes, outputHigh, outputLow);Documentation sur les types de membres
[alias] QModbusRequest::CalcFuncPtr
Définition de type (typedef) pour un pointeur vers une fonction de calcul personnalisée présentant la même signature que QModbusRequest::calculateDataSize.
Documentation des fonctions membres
[constexpr noexcept default] QModbusRequest::QModbusRequest()
Crée une requête QModbusRequest non valide.
QModbusRequest::QModbusRequest(const QModbusPdu &pdu)
Crée une copie de pdu.
template <typename... Args> QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, Args... data)
Crée un objet `QModbusRequest` 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 exclusivement à quint8 et quint16. En effet, les opérateurs de flux de QDataStream n'ajoutent pas seulement les données brutes, mais également, par exemple, la taille, le nombre, etc. pour les types complexes.
[explicit] QModbusRequest::QModbusRequest(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 QModbusRequest::calculateDataSize(const QModbusRequest &request)
Calcule la taille estimée des données pour request en fonction du code de fonction et des données de la requête. Renvoie la taille totale de la partie données de la requête ; -1 si la taille n’a pas pu être calculée correctement.
Voir également minimumDataSize et registerDataSizeCalculator.
[static] int QModbusRequest::minimumDataSize(const QModbusRequest &request)
Renvoie la taille minimale attendue des données pour request en fonction du code de fonction de la requête ; -1 si le code de fonction n'est pas connu.
[static] void QModbusRequest::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)
Cette fonction enregistre une implémentation définie par l'utilisateur permettant de calculer la taille des données de la requête pour la fonction ` fc`. Elle peut être utilisée pour étendre ou remplacer l'implémentation interne de la fonction ` QModbusRequest::calculateDataSize()`.
CalcFuncPtr est un typedef pour un pointeur vers une fonction calculator personnalisée présentant la signature suivante :
int myCalculateDataSize(const QModbusRequest &pdu);Éléments non membres associés
QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu)
Lit une PDU de type « pdu » à partir de la source « stream » et renvoie une référence au flux.
Remarque : la fonction peut ne pas réussir à transmettre correctement les PDU portant le code de fonction 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.