Sur cette page

QModbusClient Class

La classe QModbusClient sert d'interface pour envoyer des requêtes Modbus. En savoir plus...

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

QModbusRtuSerialClient et QModbusTcpClient

Fonctions publiques

QModbusClient(QObject *parent = nullptr)
int numberOfRetries() const
QModbusReply *sendRawRequest(const QModbusRequest &request, int serverAddress)
QModbusReply *sendReadRequest(const QModbusDataUnit &read, int serverAddress)
QModbusReply *sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
QModbusReply *sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
void setNumberOfRetries(int number)
void setTimeout(int newTimeout)
int timeout() const

Signaux

void timeoutChanged(int newTimeout)

Fonctions protégées

virtual bool processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
virtual bool processResponse(const QModbusResponse &response, QModbusDataUnit *data)

Description détaillée

L'API QModbusClient s'articule autour d'un objet QModbusClient, qui contient la configuration et les paramètres communs aux requêtes qu'il envoie. Un seul objet QModbusClient devrait suffire pour l'ensemble de l'application Qt.

Une fois l'objet QModbusClient créé, l'application peut l'utiliser pour envoyer des requêtes. L'objet renvoyé sert à récupérer les données renvoyées en réponse à la requête correspondante.

QModbusClient dispose d'une API asynchrone. Lorsque le slot `finished` est appelé, le paramètre qu'il prend est l'objet ` QModbusReply ` contenant la PDU ainsi que les métadonnées (adressage, etc.).

Remarque : QModbusClient met en file d’attente les requêtes qu’il reçoit. Le nombre de requêtes exécutées en parallèle dépend du protocole. Par exemple, le protocole HTTP sur les plateformes de bureau émet 6 requêtes en parallèle pour une combinaison hôte/port.

Documentation des fonctions membres

[explicit] QModbusClient::QModbusClient(QObject *parent = nullptr)

Crée un périphérique client Modbus avec l'parent spécifiée.

int QModbusClient::numberOfRetries() const

Renvoie le nombre de tentatives qu’un client effectuera avant qu’une requête ne soit considérée comme ayant échoué. La valeur par défaut est définie sur 3.

Voir également setNumberOfRetries().

[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)

À mettre en œuvre via une implémentation personnalisée du client Modbus. L'implémentation par défaut ignore les requêtes ` response ` et ` data`. Elle renvoie toujours `false` pour signaler une erreur.

[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)

Traite une response de serveur Modbus et stocke les informations décodées dans ` data`. Renvoie ` true ` en cas de réussite ; sinon, ` false`.

Remarque : l'implémentation par défaut ne prend pas en charge toutes les FunctionCodes. Redéfinissez cette méthode dans une implémentation personnalisée de client Modbus pour gérer les fonctions nécessaires.

QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)

Envoie une requête Modbus brute request. Une requête brute peut contenir tout élément pouvant tenir dans la section de données de la PDU Modbus et disposant d’un code de fonction valide. La seule vérification effectuée avant l’envoi est donc celle de la validité ; voir QModbusPdu::isValid. Si aucune erreur ne s’est produite, la fonction renvoie un nouvel objet QModbusReply valide ; sinon, elle renvoie nullptr. Les réseaux Modbus peuvent comporter plusieurs serveurs, chaque serveur disposant d’un identifiant unique serverAddress.

Voir également QModbusReply::rawResult().

QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)

Envoie une requête pour lire le contenu des données pointées par ` read`. Renvoie un nouvel objet ` QModbusReply ` valide si aucune erreur ne s'est produite, sinon `nullptr`. Le réseau Modbus peut comporter plusieurs serveurs, chaque serveur disposant d'un ` serverAddress` unique.

QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)

Envoie une requête pour lire le contenu des données pointées par ` read ` et pour modifier le contenu des données pointées par ` write ` à l’aide du code de fonction Modbus ` QModbusPdu::ReadWriteMultipleRegisters`. Renvoie un nouvel objet ` QModbusReply ` valide si aucune erreur ne s’est produite, sinon `nullptr`. Le réseau Modbus peut comporter plusieurs serveurs, chaque serveur disposant d’un identifiant unique ` serverAddress`.

Remarque : l’envoi de ce type de requête n’est valide que si read et write sont tous deux de type QModbusDataUnit::HoldingRegisters.

QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)

Envoie une requête visant à modifier le contenu des données pointées par ` write`. Renvoie un nouvel objet ` QModbusReply ` valide si aucune erreur ne s'est produite ; sinon, renvoie `nullptr`. Un réseau Modbus peut comporter plusieurs serveurs, chaque serveur disposant d'un identifiant unique ` serverAddress`.

void QModbusClient::setNumberOfRetries(int number)

Définit le nombre de tentatives de ré number s qu’un client effectuera avant qu’une requête ne soit considérée comme ayant échoué. La valeur par défaut est définie sur 3.

Remarque : la nouvelle valeur doit être supérieure ou égale à ` 0`. La modification de cette propriété n’aura d’effet que sur les nouvelles requêtes, et non sur celles déjà planifiées.

Voir également numberOfRetries().

void QModbusClient::setTimeout(int newTimeout)

Définit le délai d'newTimeout pour cette instance de ` QModbusClient `. Le délai d' minimum est de 10 ms.

Ce délai d'expiration est utilisé par le client pour déterminer combien de temps il attend une réponse du serveur. Si la réponse n'est pas reçue dans le délai imparti, l'TimeoutError est déclenchée.

Les délais d'expiration déjà actifs ou en cours d'exécution ne sont pas affectés par ces modifications de durée.

Voir également timeout et timeoutChanged().

int QModbusClient::timeout() const

Renvoie la valeur du délai d'expiration utilisée par cette instance de ` QModbusClient `, en millisecondes. Un délai d'expiration est indiqué par un ` TimeoutError`. La valeur par défaut est 1 000 ms.

Voir également setTimeout et timeoutChanged().

[signal] void QModbusClient::timeoutChanged(int newTimeout)

Ce signal est émis lorsque le délai d'expiration utilisé par cette instance de ` QModbusClient ` est modifié. Le nouveau délai d'expiration de réponse pour le périphérique est transmis sous la forme ` newTimeout`.

Voir également setTimeout().

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