QModbusResponse Class▲
-
Header: QModbusResponse
-
Since: Qt 5.8
-
CMake:
find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
-
qmake: QT += serialbus
-
Inherits: QModbusPdu
-
Inherited By: QModbusExceptionResponse
Detailed Description▲
A typical Modbus response can looks like this:
QModbusResponse response(QModbusResponse::
ReadCoils, QByteArray::
fromHex("02cd01"
));
When using the constructor taking the QByteArray, please make sure to convert the containing data to big-endian byte order before creating the request.
The same response can be created like this, if the values are known at compile time:
quint8 payloadInBytes =
2
, outputHigh =
0xcd
, outputLow =
0x01
;
QModbusResponse response(QModbusResponse::
ReadCoils, payloadInBytes, outputHigh, outputLow);
Member Type Documentation▲
[alias] QModbusResponse::CalcFuncPtr▲
Typedef for a pointer to a custom calculator function with the same signature as QModbusResponse::calculateDataSize.
Member Function Documentation▲
QModbusResponse::QModbusResponse()▲
Constructs an invalid QModbusResponse.
QModbusResponse::QModbusResponse(const QModbusPdu &pdu)▲
Constructs a copy of pdu.
[explicit] QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())▲
Constructs a QModbusResponse with function code set to code and payload set to data. The data is expected to be stored in big-endian byte order already.
QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)▲
Constructs a QModbusResponse with function code set to code and payload set to data. The data is converted and stored in big-endian byte order.
Usage is limited quint8 and quint16 only. This is because QDataStream stream operators will not only append raw data, but also e.g. size, count, etc. for complex types.
[static] int QModbusResponse::calculateDataSize(const QModbusResponse &response)▲
Calculates the expected data size for response, based on the response's function code and data. Returns the full size of the response's data part; -1 if the size could not be properly calculated.
See Also▲
See also minimumDataSize, registerDataSizeCalculator
[static] int QModbusResponse::minimumDataSize(const QModbusResponse &response)▲
Returns the expected minimum data size for response based on the response's function code; -1 if the function code is not known.
[static] void QModbusResponse::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)▲
This function registers a user-defined implementation to calculate the response data size for function code fc. It can be used to extend or override the implementation inside QModbusResponse::calculateDataSize().
The CalcFuncPtr is a typedef for a pointer to a custom calculator function with the following signature:
int
myCalculateDataSize(const
QModbusResponse &
amp;pdu);
Related Non-Members▲
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)▲
Reads a pdu from the stream and returns a reference to the stream.
The function might fail to properly stream PDU's with function code QModbusPdu::Diagnostics or QModbusPdu::EncapsulatedInterfaceTransport because of the missing size indicator inside the PDU. In particular this may happen when the PDU is embedded into a stream that doesn't end with the diagnostic/encapsulated request itself.