Sur cette page

QModbusRequest Class

QModbusRequest 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 <QModbusRequest>
CMake : find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake : QT += serialbus
Héritages : 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)
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'adresse FunctionCode et de N octets de charge utile.

Une requête Modbus typique peut ressembler à ceci :

QModbusRequest request(QModbusRequest::WriteMultipleCoils,
    QByteArray::fromHex("0013000a02cd01"));

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

La même requête peut être créée comme ceci, 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);

Membre Type Documentation

[alias] QModbusRequest::CalcFuncPtr

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

Documentation sur les fonctions membres

[constexpr noexcept] QModbusRequest::QModbusRequest()

Construit un QModbusRequest invalide.

QModbusRequest::QModbusRequest(const QModbusPdu &pdu)

Construit une copie de pdu.

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

Construit un QModbusRequest 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] QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())

Construit un 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 QModbusRequest::calculateDataSize(const QModbusRequest &request)

Calcule la taille attendue des données pour request sur la base du code de fonction et des données de la demande. Renvoie la taille complète de la partie des données de la demande ; -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 demande ; -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 pour calculer la taille des données demandées pour le code de fonction fc. Elle peut être utilisée pour étendre ou remplacer l'implémentation à l'intérieur de QModbusRequest::calculateDataSize().

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

int myCalculateDataSize(const QModbusRequest &pdu);

Non-membres apparentés

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