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: |
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) |
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:
| Constante | Valor | Descripción |
|---|---|---|
QModbusDevice::SerialPortNameParameter | 0 | Este parámetro contiene el puerto serie utilizado para la comunicación del dispositivo, por ejemplo COM1. QString |
QModbusDevice::SerialParityParameter | 1 | Este parámetro contiene el modo de comprobación de paridad. QSerialPort::Parity |
QModbusDevice::SerialBaudRateParameter | 2 | Este parámetro contiene la velocidad de transmisión de datos para la comunicación. QSerialPort::BaudRate |
QModbusDevice::SerialDataBitsParameter | 3 | Este parámetro contiene los bits de datos en una trama. QSerialPort::DataBits |
QModbusDevice::SerialStopBitsParameter | 4 | Este parámetro contiene el número de bits de parada en una trama. QSerialPort::StopBits |
QModbusDevice::NetworkPortParameter | 5 | Este parámetro contiene el puerto de red. int |
QModbusDevice::NetworkAddressParameter | 6 | Este 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.
| Constante | Valor | Descripción |
|---|---|---|
QModbusDevice::NoError | 0 | No se ha producido ningún error. |
QModbusDevice::ReadError | 1 | Se ha producido un error durante una operación de lectura. |
QModbusDevice::WriteError | 2 | Se ha producido un error durante una operación de escritura. |
QModbusDevice::ConnectionError | 3 | Se ha producido un error al intentar abrir el backend. |
QModbusDevice::ConfigurationError | 4 | Se ha producido un error al intentar establecer un parámetro de configuración. |
QModbusDevice::TimeoutError | 5 | Se ha producido un tiempo de espera durante la E/S. Una operación de E/S no ha finalizado en un tiempo determinado. |
QModbusDevice::ProtocolError | 6 | Se ha producido un error de protocolo específico de Modbus. |
QModbusDevice::ReplyAbortedError | 7 | La respuesta se ha interrumpido debido a una desconexión del dispositivo. |
QModbusDevice::UnknownError | 8 | Se ha producido un error desconocido. |
QModbusDevice::InvalidResponseError (since Qt 6.4) | 9 | Se 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.
| Constante | Valor | Descripción |
|---|---|---|
QModbusDevice::ResponseCrcError | 0 | Se recibió una respuesta Modbus con un CRC incorrecto. |
QModbusDevice::ResponseRequestMismatch | 1 | Se 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.
| Constante | Valor | Descripción |
|---|---|---|
QModbusDevice::UnconnectedState | 0 | El dispositivo está desconectado. |
QModbusDevice::ConnectingState | 1 | El dispositivo se está conectando. |
QModbusDevice::ConnectedState | 2 | El dispositivo está conectado a la red Modbus. |
QModbusDevice::ClosingState | 3 | El 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.
© 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.