Sur cette page

QModbusDevice Class

La classe QModbusDevice est la classe de base des classes Modbus, QModbusServer et QModbusClient. 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 : QObject
Héritée 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 des types de membres

enum QModbusDevice::ConnectionParameter

Cette énumération décrit les valeurs possibles qui peuvent être définies pour la connexion d'un dispositif Modbus.

Les valeurs générales (et les types associés) sont les suivantes :

ConstanteValeurDescription
QModbusDevice::SerialPortNameParameter0Ce paramètre indique le port série utilisé pour la communication avec l'appareil, par exemple COM1. QString
QModbusDevice::SerialParityParameter1Ce paramètre indique le mode de vérification de la parité. QSerialPort::Parity
QModbusDevice::SerialBaudRateParameter2Ce paramètre indique la vitesse de transmission des données pour la communication. QSerialPort::BaudRate
QModbusDevice::SerialDataBitsParameter3Ce paramètre indique 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 indique le port réseau. int
QModbusDevice::NetworkAddressParameter6Ce paramètre indique l'adresse de l'hôte pour la communication réseau. QString

enum QModbusDevice::Error

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

ConstanteValeurDescription de l'erreur
QModbusDevice::NoError0Aucune erreur n'est survenue.
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 définition d'un paramètre de configuration.
QModbusDevice::TimeoutError5Un dépassement de délai s'est produit lors d'une opération d'E/S. Une opération d'E/S ne s'est pas terminée dans un délai donné.
QModbusDevice::ProtocolError6Une erreur de protocole spécifique au 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 le site FunctionCode n'est pas pris en charge par l'implémentation actuelle. Dans ce dernier cas, l'implémentation personnalisée du client Modbus peut surcharger les méthodes processResponse() et processPrivateResponse() pour fournir le support des fonctions nécessaires.

[since 6.0] enum QModbusDevice::IntermediateError

Cette énumération décrit les erreurs possibles qui peuvent se produire pendant un cycle complet d'envoi et de réception d'une réponse Modbus.

ConstanteValeurDescription de l'erreur
QModbusDevice::ResponseCrcError0Une réponse Modbus avec un CRC erroné a été reçue.
QModbusDevice::ResponseRequestMismatch1Une réponse Modbus a été reçue mais ne correspond pas à la demande ouverte, probablement parce que le code de fonction du PDU ne correspond pas.

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

La liste des erreurs intermédiaires peut être consultée à l'aide de la fonction QModbusReply intermediate errors.

Cette liste a été introduite dans Qt 6.0.

Voir aussi QModbusClient::numberOfRetries() et QModbusReply::intermediateErrors().

enum QModbusDevice::State

Cette énumération décrit tous les états possibles de l'appareil.

ConstanteValeurDescription de l'état de l'appareil
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.

Fonction membre Documentation

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

Construit un dispositif Modbus avec l'adresse parent spécifiée.

[virtual noexcept] QModbusDevice::~QModbusDevice()

Détruit l'instance QModbusDevice

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

Cette fonction est responsable de la fermeture de la connexion Modbus. L'implémentation doit s'assurer que l'instance state() est réglée 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 finale de la réussite de la connexion exige que 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 donnée parameter. La valeur retournée peut être vide.

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

Remarque : pour qu'une connexion série réussisse, le site SerialPortNameParameter doit être réglé sur un port de communication valide. Les informations sur les ports série valides peuvent être obtenues sur le site QSerialPortInfo.

Remarque : si l'appareil est déjà connecté, les paramètres sont pris en compte après la reconnexion de l'appareil.

Voir également setConnectionParameter() et ConnectionParameter.

QIODevice *QModbusDevice::device() const

Renvoie l'adresse QIODevice utilisée pour la communication ModBus ou nullptr si le dispositif n'a pas encore été entièrement initialisé.

Note : Ne pas stocker de pointeur sur le périphérique sous-jacent, car il 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 de l'appareil.

Voir aussi setError() et QModbusDevice::Error.

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

Ce signal est émis lorsqu'une erreur du type error se produit.

QString QModbusDevice::errorString() const

Renvoie un texte d'erreur descriptif pour l'erreur de l'appareil.

Voir aussi 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 la connexion ; sinon, elle renvoie false.

L'implémentation doit garantir que l'instance state() est définie sur QModbusDevice::ConnectingState ou QModbusDevice::ConnectedState en cas de succès, sinon QModbusDevice::UnconnectedState. En règle générale, QModbusDevice::ConnectingState est utilisé lorsque le processus de connexion renvoie des informations de manière asynchrone et QModbusDevice::ConnectedState dans le cas d'un comportement de connexion synchrone.

Voir également connectDevice().

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

Définit la valeur de parameter à value. Si 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 changements de paramètres.

Voir aussi ConnectionParameter et connectionParameter().

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

Définit l'état d'erreur du dispositif. Les implémentations de dispositifs ModBus doivent utiliser cette fonction en cas d'erreur pour définir le type error et une description errorText.

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

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

Définit l'état de l'appareil à newState. Les implémentations de dispositifs Modbus doivent utiliser cette fonction pour mettre à jour l'état du dispositif.

Voir aussi state().

QModbusDevice::State QModbusDevice::state() const

Renvoie l'état actuel de l'appareil.

Voir aussi 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.