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 | 
| typedef | CalcFuncPtr | 
| QModbusRequest () | |
| QModbusRequest (const QModbusPdu & pdu ) | |
| QModbusRequest (QModbusPdu::FunctionCode code , const QByteArray & data = ...) | |
| QModbusRequest (QModbusPdu::FunctionCode code , Args... data ) | 
| int | calculateDataSize (const QModbusRequest & request ) | 
| int | minimumDataSize (const QModbusRequest & request ) | 
| void | registerDataSizeCalculator (QModbusPdu::FunctionCode fc , QModbusRequest::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 known at compile time:
quint16 startAddress = 19, numberOfCoils = 10; quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01; QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils, payloadInBytes, outputHigh, outputLow);
Typedef for a pointer to a custom calculator function with the same signature as QModbusRequest::calculateDataSize .
构造无效 QModbusRequest .
构造副本为 pdu .
构造 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 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
						
						(
						
							
								QModbusPdu::FunctionCode
							
						
						
							fc
						
						,
						
							
								QModbusRequest::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 ().
						The
						
CalcFuncPtr
						
						is a typedef for a pointer to a custom
						
							calculator
						
						function with the following signature:
					
int myCalculateDataSize(const 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.