QModbusClient Class
La classe QModbusClient est l'interface permettant d'envoyer des requêtes Modbus. Plus d'informations...
| En-tête : | #include <QModbusClient> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS SerialBus)target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake : | QT += serialbus |
| Hérite : | QModbusDevice |
| Héritée par : |
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 est construite autour d'un objet QModbusClient, qui contient la configuration et les paramètres communs pour les requêtes qu'il envoie. Un seul QModbusClient devrait suffire pour l'ensemble de l'application Qt.
Une fois qu'un objet QModbusClient a été créé, l'application peut l'utiliser pour envoyer des requêtes. L'objet renvoyé est utilisé pour obtenir les données renvoyées en réponse à la demande correspondante.
QModbusClient a une API asynchrone. Lorsque le slot terminé est appelé, le paramètre qu'il prend est l'objet QModbusReply contenant le PDU ainsi que les méta-données (adressage, etc.).
Note : QModbusClient met en file d'attente les demandes 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 plates-formes de bureau émet 6 demandes en parallèle pour une combinaison hôte/port.
Documentation des fonctions membres
[explicit] QModbusClient::QModbusClient(QObject *parent = nullptr)
Construit un dispositif client Modbus avec l'adresse parent spécifiée.
int QModbusClient::numberOfRetries() const
Renvoie le nombre de tentatives qu'un client effectuera avant qu'une requête n'échoue. La valeur par défaut est 3.
Voir également setNumberOfRetries().
[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
À mettre en œuvre par l'implémentation personnalisée du client Modbus. L'implémentation par défaut ignore response et data. Elle renvoie toujours false pour indiquer une erreur.
[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Traite un serveur Modbus response et stocke les informations décodées dans data. Retourne true en cas de succès, sinon false.
Remarque : l'implémentation par défaut ne prend pas en charge toutes les FunctionCodes. Surchargez cette méthode dans une implémentation personnalisée du client Modbus pour gérer les fonctions nécessaires.
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
Envoi d'un Modbus brut request. Une requête brute peut contenir tout ce qui entre dans la section de données du PDU Modbus et possède un code de fonction valide. Le seul contrôle effectué avant l'envoi est donc le contrôle de validité, voir QModbusPdu::isValid. Si aucune erreur ne s'est produite, la fonction renvoie un nouveau QModbusReply valide ; nullptr dans le cas contraire. Les réseaux Modbus peuvent avoir plusieurs serveurs, chaque serveur ayant un code unique serverAddress.
Voir également QModbusReply::rawResult().
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
Envoie une demande de lecture du contenu des données indiqué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, chacun d'entre eux ayant une adresse unique : serverAddress.
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Envoie une demande de lecture du contenu des données pointées par read et de modification du contenu des données pointées par write en utilisant le 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 avoir plusieurs serveurs, chaque serveur a un code unique serverAddress.
Remarque : : L'envoi de ce type de requête n'est valable que si read et write sont tous deux de type QModbusDataUnit::HoldingRegisters.
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
Envoie une demande de modification du contenu des données pointées par write. Renvoie un nouvel objet QModbusReply valide si aucune erreur ne s'est produite, sinon nullptr. Le réseau Modbus peut comporter plusieurs serveurs, chacun d'entre eux ayant une adresse unique serverAddress.
void QModbusClient::setNumberOfRetries(int number)
Définit le nombre de tentatives ( number ) qu'un client doit effectuer avant qu'une requête n'échoue. La valeur par défaut est 3.
Remarque : la nouvelle valeur doit être supérieure ou égale à 0. La modification de cette propriété n'affecte que les nouvelles demandes, et non les demandes déjà programmées.
Voir également numberOfRetries().
void QModbusClient::setTimeout(int newTimeout)
Définit l'adresse newTimeout pour cette instance QModbusClient. Le délai minimum est de 10 ms.
Le délai d'attente 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 requis, l'adresse TimeoutError est définie.
Les délais déjà actifs ou en cours d'exécution ne sont pas affectés par ces modifications de la durée du délai.
Voir également timeout et timeoutChanged().
int QModbusClient::timeout() const
Renvoie la valeur du délai d'attente utilisée par cette instance QModbusClient en ms. Un délai d'attente est indiqué par un TimeoutError. La valeur par défaut est de 1000 ms.
Voir également setTimeout et timeoutChanged().
[signal] void QModbusClient::timeoutChanged(int newTimeout)
Ce signal est émis lorsque le délai d'attente utilisé par cette instance QModbusClient est modifié. Le nouveau délai de réponse de l'appareil est transmis en tant que 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.