QModbusResponse Class
QModbusResponse 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 <QModbusResponse> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus)target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Hereda: | QModbusPdu |
| Heredado por: |
Tipos Públicos
Funciones Públicas
| QModbusResponse() | |
| QModbusResponse(const QModbusPdu &pdu) | |
| QModbusResponse(QModbusPdu::FunctionCode code, Args... data) | |
| QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray()) |
Miembros públicos estáticos
| int | calculateDataSize(const QModbusResponse &response) |
| int | minimumDataSize(const QModbusResponse &response) |
| void | registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator) |
No miembros relacionados
| QDataStream & | operator>>(QDataStream &stream, QModbusResponse &pdu) |
Descripción detallada
Una respuesta Modbus típica puede tener este aspecto:
QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));
Nota: Cuando utilice el constructor tomando el QByteArray, por favor asegúrese de convertir los datos que contiene al orden big-endian byte antes de crear la petición.
La misma respuesta puede ser creada así, si los valores son conocidos en tiempo de compilación:
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01; QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);
Documentación del tipo de miembro
[alias] QModbusResponse::CalcFuncPtr
Typedef para un puntero a una función de calculadora personalizada con la misma firma que QModbusResponse::calculateDataSize.
Documentación de funciones miembro
[constexpr noexcept] QModbusResponse::QModbusResponse()
Construye un QModbusResponse inválido.
QModbusResponse::QModbusResponse(const QModbusPdu &pdu)
Construye una copia de pdu.
template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)
Construye un QModbusResponse con el código de función establecido en code y la carga útil establecida 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] QModbusResponse::QModbusResponse(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 QModbusResponse::calculateDataSize(const QModbusResponse &response)
Calcula el tamaño esperado de los datos de response, basándose en el código de función y los datos de la respuesta. Devuelve el tamaño completo de la parte de datos de la respuesta; -1 si no se ha podido calcular correctamente el tamaño.
Véase también minimumDataSize y registerDataSizeCalculator.
[static] int QModbusResponse::minimumDataSize(const QModbusResponse &response)
Devuelve el tamaño mínimo de datos esperado para response basándose en el código de función de la respuesta; -1 si no se conoce el código de función.
[static] void QModbusResponse::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)
Esta función registra una implementación definida por el usuario para calcular el tamaño de los datos de respuesta para el código de función fc. Puede utilizarse para ampliar o anular la implementación dentro de QModbusResponse::calculateDataSize().
El CalcFuncPtr es un typedef para un puntero a una función personalizada calculator con la siguiente firma:
int myCalculateDataSize(const QModbusResponse &pdu);
No miembros relacionados
QDataStream &operator>>(QDataStream &stream, QModbusResponse &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.