Sur cette page

QModbusRtuSerialServer Class

La classe QModbusRtuSerialServer représente un serveur Modbus qui utilise un port série pour communiquer avec le client Modbus. En savoir plus...

En-tête : #include <QModbusRtuSerialServer>
CMake : find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake : QT += serialbus
Depuis : Qt 6.2
Hérite de : QModbusServer

Fonctions publiques

QModbusRtuSerialServer(QObject *parent = nullptr)
virtual ~QModbusRtuSerialServer()
(since 6.2) int interFrameDelay() const
(since 6.2) void setInterFrameDelay(int microseconds)

Fonctions publiques réimplémentées

virtual bool processesBroadcast() const override

Fonctions protégées réimplémentées

virtual void close() override
virtual bool open() override
virtual QModbusResponse processRequest(const QModbusPdu &request) override

Description détaillée

La communication via Modbus nécessite l'interaction entre une seule instance de client Modbus et plusieurs serveurs Modbus. Cette classe fournit l'implémentation du serveur Modbus via un port série.

Étant donné que plusieurs instances de serveur Modbus peuvent interagir simultanément avec un client Modbus (via un bus série), les serveurs sont identifiés par leur identifiant de session ( serverAddress()).

Documentation des fonctions membres

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

Crée un objet `QModbusRtuSerialServer` avec l'parent spécifiée. Le préréglage de l'serverAddress est ` 1`.

[virtual noexcept] QModbusRtuSerialServer::~QModbusRtuSerialServer()

Supprime l'instance ` QModbusRtuSerialServer `.

[override virtual protected] void QModbusRtuSerialServer::close()

Réimplémente : QModbusDevice::close().

[since 6.2] int QModbusRtuSerialServer::interFrameDelay() const

Renvoie la durée, en microsecondes, de l'intervalle de silence entre deux messages Modbus consécutifs.

Cette fonction a été introduite dans Qt 6.2.

Voir également setInterFrameDelay().

[override virtual protected] bool QModbusRtuSerialServer::open()

Réimplémente : QModbusDevice::open().

Remarque : l'appel de cette fonctionentraîne la suppression des données mises en mémoire tampon existantes du port série.

[override virtual protected] QModbusResponse QModbusRtuSerialServer::processRequest(const QModbusPdu &request)

Réimplémente : QModbusServer::processRequest(const QModbusPdu &request).

Traite la requête du client Modbus spécifiée par request et renvoie une réponse Modbus.

La fonction Modbus QModbusRequest::EncapsulatedInterfaceTransport avec le type MEI 13 (0x0D) « Référence générale CANopen » est ignorée, car elle concerne généralement uniquement Modbus TCP ou Modbus série ASCII.

Une requête adressée au serveur série RTU recevra une réponse d’exception Modbus avec le code d’exception QModbusExceptionResponse::IllegalFunction.

[override virtual] bool QModbusRtuSerialServer::processesBroadcast() const

Réimplémente : QModbusServer::processesBroadcast() const.

[since 6.2] void QModbusRtuSerialServer::setInterFrameDelay(int microseconds)

Définit la durée de l'microseconds pour l'intervalle de silence entre deux messages Modbus consécutifs. Par défaut, l'implémentation de la classe utilise une valeur précalculée conformément à la spécification Modbus. Une connexion active ou en cours n'est pas affectée par ces modifications de délai.

Remarque : si l'microseconds est défini sur -1 ou si microseconds est inférieur au délai précalculé, c'est cette valeur précalculée qui est utilisée comme délai de trame.

Cette fonction a été introduite dans Qt 6.2.

Voir également interFrameDelay().

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