En esta página

QModbusDevice Class

La clase QModbusDevice es la clase base para las clases Modbus, QModbusServer y QModbusClient. Más...

Cabecera: #include <QModbusDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Hereda: QObject
Heredado por:

QModbusClient y QModbusServer

Tipos Públicos

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 }

Funciones públicas

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

Señales

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

Funciones protegidas

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

Descripción detallada

Documentación de los tipos de miembros

enum QModbusDevice::ConnectionParameter

Este enum describe los posibles valores que se pueden establecer para una conexión de dispositivo Modbus.

Los valores de propósito general (y los tipos asociados) son:

ConstanteValorDescripción
QModbusDevice::SerialPortNameParameter0Este parámetro contiene el puerto serie utilizado para la comunicación del dispositivo, por ejemplo COM1. QString
QModbusDevice::SerialParityParameter1Este parámetro contiene el modo de comprobación de paridad. QSerialPort::Parity
QModbusDevice::SerialBaudRateParameter2Este parámetro contiene la velocidad de transmisión de datos para la comunicación. QSerialPort::BaudRate
QModbusDevice::SerialDataBitsParameter3Este parámetro contiene los bits de datos en una trama. QSerialPort::DataBits
QModbusDevice::SerialStopBitsParameter4Este parámetro contiene el número de bits de parada en una trama. QSerialPort::StopBits
QModbusDevice::NetworkPortParameter5Este parámetro contiene el puerto de red. int
QModbusDevice::NetworkAddressParameter6Este parámetro contiene la dirección del host para la comunicación de red. QString

enum QModbusDevice::Error

Este enum describe todas las condiciones de error posibles.

ConstanteValorDescripción
QModbusDevice::NoError0No se ha producido ningún error.
QModbusDevice::ReadError1Se ha producido un error durante una operación de lectura.
QModbusDevice::WriteError2Se ha producido un error durante una operación de escritura.
QModbusDevice::ConnectionError3Se ha producido un error al intentar abrir el backend.
QModbusDevice::ConfigurationError4Se ha producido un error al intentar establecer un parámetro de configuración.
QModbusDevice::TimeoutError5Se ha producido un tiempo de espera durante la E/S. Una operación de E/S no ha finalizado en un tiempo determinado.
QModbusDevice::ProtocolError6Se ha producido un error de protocolo específico de Modbus.
QModbusDevice::ReplyAbortedError7La respuesta se ha interrumpido debido a una desconexión del dispositivo.
QModbusDevice::UnknownError8Se ha producido un error desconocido.
QModbusDevice::InvalidResponseError (since Qt 6.4)9Se ha producido un error al analizar la respuesta o FunctionCode no es compatible con la implementación actual. En este último caso, la implementación personalizada del cliente Modbus puede sobrescribir los métodos processResponse() y processPrivateResponse() para proporcionar soporte a las funciones necesarias.

[since 6.0] enum QModbusDevice::IntermediateError

Este enum describe los posibles errores que pueden ocurrir durante un ciclo completo de envío y recepción de una respuesta Modbus.

ConstanteValorDescripción
QModbusDevice::ResponseCrcError0Se recibió una respuesta Modbus con un CRC incorrecto.
QModbusDevice::ResponseRequestMismatch1Se recibió una respuesta Modbus pero no coincidía con la petición abierta, probablemente debido a que el código de función de la PDU no coincidía.

Si se ha producido alguno de los errores intermedios anteriores, es probable que la trama esté presente hasta que se haya alcanzado el número máximo de reintentos.

La lista de errores intermedios puede inspeccionarse desde la función QModbusReply errores intermedios.

Este enum se introdujo en Qt 6.0.

Véase también QModbusClient::numberOfRetries() y QModbusReply::intermediateErrors().

enum QModbusDevice::State

Este enum describe todos los estados posibles del dispositivo.

ConstanteValorDescripción
QModbusDevice::UnconnectedState0El dispositivo está desconectado.
QModbusDevice::ConnectingState1El dispositivo se está conectando.
QModbusDevice::ConnectedState2El dispositivo está conectado a la red Modbus.
QModbusDevice::ClosingState3El dispositivo se está cerrando.

Documentación de la función de miembro

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

Construye un dispositivo Modbus con la dirección parent especificada.

[virtual noexcept] QModbusDevice::~QModbusDevice()

Destruye la instancia QModbusDevice

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

Esta función es responsable de cerrar la conexión Modbus. La implementación debe asegurarse de que state() de la instancia se establece en QModbusDevice::UnconnectedState.

Véase también disconnectDevice().

bool QModbusDevice::connectDevice()

Conecta el dispositivo a la red Modbus. Devuelve true si el proceso de conexión se ha iniciado con éxito; en caso contrario false. La confirmación final del éxito de la conexión requiere que state() cambie a QModbusDevice::ConnectedState.

Esta función llama a open() como parte de su implementación.

Véase también open().

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

Devuelve el valor asociado a la conexión dada parameter. El valor devuelto puede estar vacío.

Por defecto, QModbusDevice se inicializa con algunos valores comunes. La configuración del puerto serie es paridad par, una velocidad en baudios de 19200 bits por segundo, ocho bits de datos y un bit de parada. La configuración de red para la dirección de host se establece en host local y el puerto en 502.

Nota: Para que una conexión serie tenga éxito, SerialPortNameParameter debe estar configurado en un puerto de comunicación válido. La información sobre puertos serie válidos puede obtenerse en QSerialPortInfo.

Nota: Si el dispositivo ya está conectado, los ajustes se tienen en cuenta después de volver a conectar el dispositivo.

Véase también setConnectionParameter() y ConnectionParameter.

QIODevice *QModbusDevice::device() const

Devuelve el QIODevice subyacente utilizado para la comunicación ModBus o nullptr si el dispositivo aún no se ha inicializado completamente.

Nota: No almacene un puntero al dispositivo subyacente, ya que puede ser invalidado en cualquier momento.

void QModbusDevice::disconnectDevice()

Desconecta el dispositivo.

Esta función llama a close() como parte de su implementación.

QModbusDevice::Error QModbusDevice::error() const

Devuelve el estado de error del dispositivo.

Véase también setError() y QModbusDevice::Error.

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

Esta señal se emite cuando se produce un error del tipo error.

QString QModbusDevice::errorString() const

Devuelve un texto de error descriptivo para el error del dispositivo.

Véase también QModbusDevice::Error.

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

Esta función es llamada por connectDevice(). Las subclases deben proporcionar una implementación que devuelva true en caso de conexión Modbus exitosa o inicio de conexión; en caso contrario devuelve false.

La implementación debe asegurarse de que la instancia state() se establece en QModbusDevice::ConnectingState o QModbusDevice::ConnectedState en caso de éxito; en caso contrario QModbusDevice::UnconnectedState. Normalmente, QModbusDevice::ConnectingState se utiliza cuando el proceso de conexión informa de forma asíncrona y QModbusDevice::ConnectedState en caso de comportamiento de conexión síncrona.

Véase también connectDevice().

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

Establece el valor de parameter en value. Si parameter ya existe, se sobrescribe el valor anterior. Una conexión activa o en ejecución no se ve afectada por estos cambios de parámetros.

Véase también ConnectionParameter y connectionParameter().

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

Establece el estado de error del dispositivo. Las implementaciones de dispositivos ModBus deben utilizar esta función en caso de error para establecer el tipo error y un descriptivo errorText.

Véase también error() y QModbusDevice::Error.

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

Establece el estado del dispositivo en newState. Las implementaciones de dispositivos Modbus deben utilizar esta función para actualizar el estado del dispositivo.

Véase también state().

QModbusDevice::State QModbusDevice::state() const

Devuelve el estado actual del dispositivo.

Véase también setState() y stateChanged().

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

Esta señal se emite cada vez que cambia el estado del dispositivo. El nuevo estado se representa mediante state.

Véase también setState() y 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.