En esta página

QModbusRequest Class

QModbusRequest es una clase contenedora que contiene el código de función y la carga útil que se almacena dentro de una ADU Modbus. Más...

Cabecera: #include <QModbusRequest>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Hereda: QModbusPdu

Tipos Públicos

Funciones Públicas

QModbusRequest()
QModbusRequest(const QModbusPdu &pdu)
QModbusRequest(QModbusPdu::FunctionCode code, Args... data)
QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())

Miembros públicos estáticos

int calculateDataSize(const QModbusRequest &request)
int minimumDataSize(const QModbusRequest &request)
void registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)
QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu)

Descripción detallada

Una petición Modbus normalmente consiste en un único byte que describe FunctionCode y N bytes de carga útil.

Una petición Modbus típica puede tener este aspecto:

QModbusRequest request(QModbusRequest::WriteMultipleCoils,
    QByteArray::fromHex("0013000a02cd01"));

Nota: Cuando utilice el constructor tomando el QByteArray, por favor asegúrese de convertir los datos contenidos al orden big-endian byte antes de crear la petición.

La misma petición puede crearse así, si los valores son conocidos en tiempo de compilación:

quint16 startAddress = 19, numberOfCoils = 10;
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils,
    payloadInBytes, outputHigh, outputLow);

Documentación del tipo de miembro

[alias] QModbusRequest::CalcFuncPtr

Typedef para un puntero a una función de calculadora personalizada con la misma firma que QModbusRequest::calculateDataSize.

Documentación de funciones miembro

[constexpr noexcept] QModbusRequest::QModbusRequest()

Construye un QModbusRequest inválido.

QModbusRequest::QModbusRequest(const QModbusPdu &pdu)

Construye una copia de pdu.

template <typename... Args> QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, Args... data)

Construye un QModbusRequest con el código de función establecido en code y la carga útil en data. Los datos se convierten y almacenan en orden big-endian de bytes.

Nota: El uso está limitado a quint8 y quint16 solamente. Esto se debe a que los operadores de flujo QDataStream no sólo añadirán datos sin procesar, sino también, por ejemplo, tamaño, recuento, etc. para tipos complejos.

[explicit] QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())

Construye un QModbusResponse con el código de función establecido en code y la carga útil establecida en data. Se espera que los datos ya estén almacenados en orden big-endian de bytes.

[static] int QModbusRequest::calculateDataSize(const QModbusRequest &request)

Calcula el tamaño esperado de los datos para request basándose en el código de función y los datos de la petición. Devuelve el tamaño completo de la parte de datos de la petición; -1 si no se ha podido calcular correctamente el tamaño.

Véase también minimumDataSize y registerDataSizeCalculator.

[static] int QModbusRequest::minimumDataSize(const QModbusRequest &request)

Devuelve el tamaño mínimo de datos esperado para request basado en el código de función de la petición; -1 si no se conoce el código de función.

[static] void QModbusRequest::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)

Esta función registra una implementación definida por el usuario para calcular el tamaño de los datos solicitados para el código de función fc. Puede utilizarse para ampliar o anular la implementación dentro de QModbusRequest::calculateDataSize().

El CalcFuncPtr es un typedef para un puntero a una función personalizada calculator con la siguiente firma:

int myCalculateDataSize(const QModbusRequest &pdu);

No miembros relacionados

QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu)

Lee un pdu de stream y devuelve una referencia al flujo.

Nota: Es posible que la función no pueda transmitir correctamente PDU con el código de función QModbusPdu::Diagnostics o QModbusPdu::EncapsulatedInterfaceTransport debido a la falta del indicador de tamaño dentro de la PDU. En particular, esto puede ocurrir cuando la PDU está incrustada en un flujo que no termina con la propia petición de diagnóstico/encapsulada.

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