Sur cette page

QModbusDevice Class

La classe `QModbusDevice` est la classe de base des classes Modbus : QModbusServer et QModbusClient. En savoir plus...

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

QModbusClient et QModbusServer

Types publics

enum ConnectionParameter { SerialPortNameParameter, SerialParityParameter, SerialBaudRateParameter, SerialDataBitsParameter, SerialStopBitsParameter, …, NetworkAddressParameter }
enum Error { NoError, ReadError, WriteError, ConnectionError, ConfigurationError, …, InvalidResponseError }
(since 6.0) enum IntermediateError { ResponseCrcError, ResponseRequestMismatch }
enum State { UnconnectedState, ConnectingState, ConnectedState, ClosingState }

Fonctions publiques

QModbusDevice(QObject *parent = nullptr)
virtual ~QModbusDevice()
bool connectDevice()
QVariant connectionParameter(QModbusDevice::ConnectionParameter parameter) const
QIODevice *device() const
void disconnectDevice()
QModbusDevice::Error error() const
QString errorString() const
void setConnectionParameter(QModbusDevice::ConnectionParameter parameter, const QVariant &value)
QModbusDevice::State state() const

Signaux

void errorOccurred(QModbusDevice::Error error)
void stateChanged(QModbusDevice::State state)

Fonctions protégées

virtual void close() = 0
virtual bool open() = 0
void setError(const QString &errorText, QModbusDevice::Error error)
void setState(QModbusDevice::State newState)

Description détaillée

Documentation sur les types membres

enum QModbusDevice::ConnectionParameter

Cette énumération décrit les valeurs possibles pouvant être définies pour la connexion d'un périphérique Modbus.

Les valeurs d'usage général (et les types associés) sont les suivantes :

ConstanteValeurDescription
QModbusDevice::SerialPortNameParameter0Ce paramètre indique le port série utilisé pour la communication avec le périphérique, par exemple COM1. QString
QModbusDevice::SerialParityParameter1Ce paramètre définit le mode de contrôle de parité. QSerialPort::Parity
QModbusDevice::SerialBaudRateParameter2Ce paramètre définit le débit en bauds des données pour la communication. QSerialPort::BaudRate
QModbusDevice::SerialDataBitsParameter3Ce paramètre définit le nombre de bits de données dans une trame. QSerialPort::DataBits
QModbusDevice::SerialStopBitsParameter4Ce paramètre indique le nombre de bits d'arrêt dans une trame. QSerialPort::StopBits
QModbusDevice::NetworkPortParameter5Ce paramètre définit le port réseau. int
QModbusDevice::NetworkAddressParameter6Ce paramètre définit l'adresse hôte pour la communication réseau. QString

enum QModbusDevice::Error

Cette énumération décrit toutes les conditions d'erreur possibles.

ConstanteValeurDescription
QModbusDevice::NoError0Aucune erreur ne s'est produite.
QModbusDevice::ReadError1Une erreur s'est produite lors d'une opération de lecture.
QModbusDevice::WriteError2Une erreur s'est produite lors d'une opération d'écriture.
QModbusDevice::ConnectionError3Une erreur s'est produite lors de la tentative d'ouverture du backend.
QModbusDevice::ConfigurationError4Une erreur s'est produite lors de la tentative de définition d'un paramètre de configuration.
QModbusDevice::TimeoutError5Un délai d'attente s'est produit pendant l'E/S. Une opération d'E/S ne s'est pas terminée dans le délai imparti.
QModbusDevice::ProtocolError6Une erreur de protocole spécifique à Modbus s'est produite.
QModbusDevice::ReplyAbortedError7La réponse a été interrompue en raison d'une déconnexion de l'appareil.
QModbusDevice::UnknownError8Une erreur inconnue s'est produite.
QModbusDevice::InvalidResponseError (since Qt 6.4)9Une erreur s'est produite lors de l'analyse de la réponse, ou l'FunctionCode n'est pas prise en charge par l'implémentation actuelle. Dans ce dernier cas, une implémentation personnalisée du client Modbus peut redéfinir les méthodes processResponse() et processPrivateResponse() afin de prendre en charge les fonctions requises.

[since 6.0] enum QModbusDevice::IntermediateError

Cette énumération décrit les erreurs pouvant survenir au cours d'un cycle complet d'envoi et de réception d'une réponse Modbus.

ConstanteValeurDescription
QModbusDevice::ResponseCrcError0Une réponse Modbus avec un CRC erroné a été reçue.
QModbusDevice::ResponseRequestMismatch1Une réponse Modbus a été reçue, mais elle ne correspondait pas à la requête ouverte, probablement en raison d’une incompatibilité du code de fonction de la PDU.

Si l'une des erreurs intermédiaires ci-dessus s'est produite, la trame est susceptible de rester présente jusqu’à ce que le nombre maximal de tentatives soit atteint.

La liste des erreurs intermédiaires peut être consultée via la fonction « erreurs intermédiaires » de l'QModbusReply.

Cette énumération a été introduite dans Qt 6.0.

Voir également ` QModbusClient::numberOfRetries()` et ` QModbusReply::intermediateErrors()`.

enum QModbusDevice::State

Cette énumération décrit tous les états possibles d'un périphérique.

ConstanteValeurDescription
QModbusDevice::UnconnectedState0L'appareil est déconnecté.
QModbusDevice::ConnectingState1L'appareil est en cours de connexion.
QModbusDevice::ConnectedState2L'appareil est connecté au réseau Modbus.
QModbusDevice::ClosingState3L'appareil est en cours de fermeture.

Documentation des fonctions membres

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

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

[virtual noexcept] QModbusDevice::~QModbusDevice()

Supprime l'instance de « QModbusDevice »

[pure virtual protected] void QModbusDevice::close()

Cette fonction est chargée de fermer la connexion Modbus. L'implémentation doit s'assurer que la méthode state() de l'instance est définie sur QModbusDevice::UnconnectedState.

Voir également disconnectDevice().

bool QModbusDevice::connectDevice()

Connecte l'appareil au réseau Modbus. Renvoie ` true ` si le processus de connexion a été lancé avec succès ; sinon, ` false`. La confirmation définitive de la réussite de la connexion nécessite que la valeur de ` state()` passe à ` QModbusDevice::ConnectedState`.

Cette fonction appelle open() dans le cadre de sa mise en œuvre.

Voir également open().

QVariant QModbusDevice::connectionParameter(QModbusDevice::ConnectionParameter parameter) const

Renvoie la valeur associée à la connexion indiquée parameter. La valeur renvoyée peut être vide.

Par défaut, l'QModbusDevice est initialisé avec des valeurs courantes. Les paramètres du port série sont les suivants : parité paire, débit de 19 200 bits par seconde, huit bits de données et un bit d'arrêt. Les paramètres réseau sont définis sur l'hôte local pour l'adresse hôte et le port 502.

Remarque : pour qu’ une connexion série aboutisse, l’ SerialPortNameParameter doit être configuré sur un port de communication valide. Les informations concernant les ports série valides sont disponibles à l’adresse QSerialPortInfo.

Remarque : si le périphérique est déjà connecté, les paramètres ne seront pris en compte qu’après sa reconnexion.

Voir également setConnectionParameter() et ConnectionParameter.

QIODevice *QModbusDevice::device() const

Renvoie l'QIODevice sous-jacente utilisée pour la communication Modbus ou nullptr si le périphérique n'a pas encore été entièrement initialisé.

Remarque : ne stockez pas de pointeur vers le périphérique sous-jacent, car celui-ci peut être invalidé à tout moment.

void QModbusDevice::disconnectDevice()

Déconnecte l'appareil.

Cette fonction appelle close() dans le cadre de sa mise en œuvre.

QModbusDevice::Error QModbusDevice::error() const

Renvoie l'état d'erreur du périphérique.

Voir également setError() et QModbusDevice::Error.

[signal] void QModbusDevice::errorOccurred(QModbusDevice::Error error)

Ce signal est émis lorsqu'une erreur de type « error » se produit.

QString QModbusDevice::errorString() const

Renvoie un texte descriptif indiquant la nature de l'erreur du périphérique.

Voir également QModbusDevice::Error.

[pure virtual protected] bool QModbusDevice::open()

Cette fonction est appelée par ` connectDevice()`. Les sous-classes doivent fournir une implémentation qui renvoie ` true ` en cas de connexion Modbus réussie ou d'initiation de connexion ; sinon, elle renvoie ` false`.

L'implémentation doit garantir que la méthode state() de l'instance soit définie sur QModbusDevice::ConnectingState ou QModbusDevice::ConnectedState en cas de réussite ; sinon, elle doit être définie sur QModbusDevice::UnconnectedState. En général, QModbusDevice::ConnectingState est utilisé lorsque le processus de connexion renvoie des informations de manière asynchrone, et QModbusDevice::ConnectedState en cas de comportement de connexion synchrone.

Voir également connectDevice().

void QModbusDevice::setConnectionParameter(QModbusDevice::ConnectionParameter parameter, const QVariant &value)

Définit la valeur de parameter sur value. Si le fichier parameter existe déjà, la valeur précédente est écrasée. Une connexion active ou en cours n'est pas affectée par ces modifications de paramètres.

Voir également ConnectionParameter et connectionParameter().

[protected] void QModbusDevice::setError(const QString &errorText, QModbusDevice::Error error)

Définit l'état d'erreur du périphérique. Les implémentations de périphériques ModBus doivent utiliser cette fonction en cas d'erreur pour définir le type d'error s et un message descriptif errorText.

Voir également error() et QModbusDevice::Error.

[protected] void QModbusDevice::setState(QModbusDevice::State newState)

Définit l'état du périphérique sur « newState ». Les implémentations de périphériques Modbus doivent utiliser cette fonction pour mettre à jour l'état du périphérique.

Voir également state().

QModbusDevice::State QModbusDevice::state() const

Renvoie l'état actuel du périphérique.

Voir également setState() et stateChanged().

[signal] void QModbusDevice::stateChanged(QModbusDevice::State state)

Ce signal est émis à chaque fois que l'état de l'appareil change. Le nouvel état est représenté par state.

Voir également setState() et state().

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