QModbusClient Class
La clase QModbusClient es la interfaz para enviar peticiones Modbus. Más...
| Cabecera: | #include <QModbusClient> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus)target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Hereda: | QModbusDevice |
| Heredado por: |
Funciones Públicas
| 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 |
Señales
| void | timeoutChanged(int newTimeout) |
Funciones protegidas
| virtual bool | processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data) |
| virtual bool | processResponse(const QModbusResponse &response, QModbusDataUnit *data) |
Descripción Detallada
La API QModbusClient se construye alrededor de un objeto QModbusClient, que contiene la configuración común y los ajustes para las peticiones que envía. Un QModbusClient debería ser suficiente para toda la aplicación Qt.
Una vez creado un objeto QModbusClient, la aplicación puede utilizarlo para enviar peticiones. El objeto devuelto se utiliza para obtener cualquier dato devuelto en respuesta a la solicitud correspondiente.
QModbusClient tiene una API asíncrona. Cuando se llama a la ranura de finalización, el parámetro que toma es el objeto QModbusReply que contiene la PDU así como los metadatos (Direccionamiento, etc.).
Nota: QModbusClient pone en cola las peticiones que recibe. El número de peticiones ejecutadas en paralelo depende del protocolo. Por ejemplo, el protocolo HTTP en plataformas de escritorio emite 6 peticiones en paralelo para una combinación host/puerto.
Documentación de las funciones miembro
[explicit] QModbusClient::QModbusClient(QObject *parent = nullptr)
Construye un dispositivo cliente Modbus con la dirección parent especificada.
int QModbusClient::numberOfRetries() const
Devuelve el número de reintentos que realizará un cliente antes de que falle una petición. El valor por defecto es 3.
Véase también setNumberOfRetries().
[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
Para ser implementado por la implementación personalizada del cliente Modbus. La implementación por defecto ignora response y data. Siempre devuelve false para indicar error.
[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Procesa un servidor Modbus response y almacena la información decodificada en data. Devuelve true en caso de éxito; en caso contrario false.
Nota: La implementación por defecto no soporta todos los FunctionCodes. Sobreescribe este método en una implementación cliente Modbus personalizada para manejar las funciones necesarias.
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
Envía una solicitud Modbus sin procesar request. Una petición raw puede contener cualquier cosa que quepa dentro de la sección de datos de la PDU Modbus y tenga un código de función válido. Por lo tanto, la única comprobación que se realiza antes del envío es la comprobación de validez, véase QModbusPdu::isValid. Si no se ha producido ningún error, la función devuelve un nuevo QModbusReply válido; nullptr en caso contrario. Las redes Modbus pueden tener múltiples servidores, cada servidor tiene un único serverAddress.
Véase también QModbusReply::rawResult().
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
Envía una petición para leer el contenido de los datos apuntados por read. Devuelve un nuevo objeto QModbusReply válido si no se ha producido ningún error, en caso contrario nullptr. La red Modbus puede tener múltiples servidores, cada servidor tiene un único serverAddress.
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Envía una petición para leer el contenido de los datos apuntados por read y para modificar el contenido de los datos apuntados por write utilizando el código de función Modbus QModbusPdu::ReadWriteMultipleRegisters. Devuelve un nuevo objeto QModbusReply válido si no se ha producido ningún error, en caso contrario nullptr. La red Modbus puede tener múltiples servidores, cada servidor tiene un único serverAddress.
Nota: : El envío de este tipo de petición sólo es válido si tanto read como write son del tipo QModbusDataUnit::HoldingRegisters.
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
Envía una petición para modificar el contenido de los datos apuntados por write. Devuelve un nuevo objeto QModbusReply válido si no se ha producido ningún error, en caso contrario nullptr. La red Modbus puede tener múltiples servidores, cada servidor tiene un único serverAddress.
void QModbusClient::setNumberOfRetries(int number)
Establece el number de reintentos que realizará un cliente antes de que falle una solicitud. El valor por defecto es 3.
Nota: El nuevo valor debe ser mayor o igual a 0. Cambiar esta propiedad sólo afectará a las nuevas peticiones, no a las ya programadas.
Véase también numberOfRetries().
void QModbusClient::setTimeout(int newTimeout)
Establece el newTimeout para esta instancia QModbusClient. El tiempo de espera mínimo es de 10 ms.
El tiempo de espera es utilizado por el cliente para determinar cuánto tiempo espera una respuesta del servidor. Si la respuesta no se recibe en el tiempo de espera requerido, se establece el TimeoutError.
Los tiempos de espera ya activos/en ejecución no se ven afectados por estos cambios en la duración del tiempo de espera.
Véase también timeout y timeoutChanged().
int QModbusClient::timeout() const
Devuelve el valor de tiempo de espera utilizado por esta instancia de QModbusClient en ms. Un tiempo de espera se indica con un TimeoutError. El valor por defecto es 1000 ms.
Véase también setTimeout y timeoutChanged().
[signal] void QModbusClient::timeoutChanged(int newTimeout)
Esta señal se emite cuando se cambia el tiempo de espera utilizado por esta instancia de QModbusClient. El nuevo tiempo de respuesta del dispositivo se pasa como newTimeout.
Véase también 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.