QModbusResponse Class
QModbusResponse is a container class containing the function code and payload that is stored inside a Modbus ADU. 更多...
头文件: | #include <QModbusResponse> |
qmake: | QT += serialbus |
开始支持版本: | Qt 5.8 |
基类: | QModbusPdu |
派生类: |
公有函数
QModbusResponse() = default | |
QModbusResponse(const QModbusPdu &pdu) | |
QModbusResponse(FunctionCode code, const QByteArray &data = QByteArray()) | |
QModbusResponse(FunctionCode code, Args... data) |
- 11 个公有函数继承自 QModbusPdu
静态公有成员
int | calculateDataSize(const QModbusResponse &response) |
int | minimumDataSize(const QModbusResponse &response) |
void | registerDataSizeCalculator(FunctionCode fc, CalcFuncPtr calculator) |
- 1 个静态公有成员继承自 QModbusPdu
相关非成员
QDataStream & | operator>>(QDataStream &stream, QModbusResponse &pdu) |
其他继承的成员
- 1 个受保护的函数继承自 QModbusPdu
详细描述
QModbusResponse is a container class containing the function code and payload that is stored inside a Modbus ADU.
A typical Modbus response can looks like this:
QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));
Note: 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 know at compile time:
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01; QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);
成员函数
[default]
QModbusResponse::QModbusResponse()
Constructs an invalid QModbusResponse.
QModbusResponse::QModbusResponse(const QModbusPdu &pdu)
Constructs a copy of pdu.
QModbusResponse::QModbusResponse(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(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.
Note: 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.
参见 minimumDataSize and 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(FunctionCode fc, 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 &pdu);
相关非成员
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)
Reads a pdu from the stream and returns a reference to the stream.
Note: 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.