QModbusRequest Class

QModbusRequest is a container class containing the function code and payload that is stored inside a Modbus ADU. 更多...

头: #include <QModbusRequest>
qmake: QT += serialbus
Since: Qt 5.8
继承: QModbusPdu

公共函数

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

静态公共成员

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

额外继承成员

详细描述

QModbusRequest is a container class containing the function code and payload that is stored inside a Modbus ADU.

A Modbus request usually consists of a single byte describing the FunctionCode and N bytes of payload

A typical Modbus request can looks like this:

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

注意: 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 request can be created like this, if the values are know at compile time:

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

成员函数文档编制

[default] QModbusRequest:: QModbusRequest ()

Constructs an invalid QModbusRequest .

QModbusRequest:: QModbusRequest (const QModbusPdu & pdu )

构造副本为 pdu .

QModbusRequest:: QModbusRequest ( FunctionCode code , const QByteArray & data = QByteArray())

构造 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.

QModbusRequest:: QModbusRequest ( FunctionCode code , Args ... data )

构造 QModbusRequest 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 QModbusRequest:: calculateDataSize (const QModbusRequest & request )

Calculates the expected data size for request based on the request's function code and data. Returns the full size of the request's data part; -1 if the size could not be properly calculated.

另请参阅 minimumDataSize and registerDataSizeCalculator .

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

Returns the expected minimum data size for request based on the request's function code; -1 if the function code is not known.

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

This function registers a user-defined implementation to calculate the request data size for function code fc . It can be used to extend or override the implementation inside QModbusRequest::calculateDataSize ().

CalcFuncPtr is a typedef for a pointer to a custom calculator function with the following signature:

int myCalculateDataSize(const QModbusRequest &pdu);
					

相关非成员

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

读取 pdu 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.