QModbusClient Class
The QModbusClient class is the interface to send Modbus requests. More...
Header: | #include <QModbusClient> |
qmake: | QT += serialbus |
Since: | Qt 5.8 |
Inherits: | QModbusDevice |
Inherited By: |
Properties
- timeout : int
- 1 property inherited from QObject
Public Functions
QModbusClient(QObject *parent = nullptr) | |
int | numberOfRetries() const |
QModbusReply * | sendRawRequest(const QModbusRequest &request, int serverAddress) |
QModbusReply * | sendReadRequest(const QModbusDataUnit &read, int serverAddress) |
QModbusReply * | sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress) |
QModbusReply * | sendWriteRequest(const QModbusDataUnit &write, int serverAddress) |
void | setNumberOfRetries(int number) |
void | setTimeout(int newTimeout) |
int | timeout() const |
- 7 public functions inherited from QModbusDevice
- 31 public functions inherited from QObject
Signals
void | timeoutChanged(int newTimeout) |
- 2 signals inherited from QModbusDevice
- 2 signals inherited from QObject
Static Public Members
const QMetaObject | staticMetaObject |
- 9 static public members inherited from QObject
Protected Functions
virtual bool | processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data) |
virtual bool | processResponse(const QModbusResponse &response, QModbusDataUnit *data) |
- 4 protected functions inherited from QModbusDevice
- 9 protected functions inherited from QObject
Additional Inherited Members
- 1 public slot inherited from QObject
Detailed Description
The QModbusClient class is the interface to send Modbus requests.
The QModbusClient API is constructed around one QModbusClient object, which holds the common configuration and settings for the requests it sends. One QModbusClient should be enough for the whole Qt application.
Once a QModbusClient object has been created, the application can use it to send requests. The returned object is used to obtain any data returned in response to the corresponding request.
QModbusClient has an asynchronous API. When the finished slot is called, the parameter it takes is the QModbusReply object containing the PDU as well as meta-data (Addressing, etc.).
Note: QModbusClient queues the requests it receives. The number of requests executed in parallel is dependent on the protocol. For example, the HTTP protocol on desktop platforms issues 6 requests in parallel for one host/port combination.
Property Documentation
timeout : int
This property holds the timeout value used by this client
Returns the timeout value used by this QModbusClient instance in ms. A timeout is indicated by a TimeoutError. The default value is 1000 ms.
Access functions:
int | timeout() const |
void | setTimeout(int newTimeout) |
Notifier signal:
void | timeoutChanged(int newTimeout) |
See also setTimeout.
Member Function Documentation
QModbusClient::QModbusClient(QObject *parent = nullptr)
Constructs a Modbus client device with the specified parent.
int QModbusClient::numberOfRetries() const
Returns the number of retries a client will perform before a request fails. The default value is set to 3
.
See also setNumberOfRetries().
[virtual protected]
bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
To be implemented by custom Modbus client implementation. The default implementation ignores response and data. It always returns false to indicate error.
[virtual protected]
bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Processes a Modbus server response and stores the decoded information in data. Returns true on success; otherwise false.
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
Sends a raw Modbus request. A raw request can contain anything that fits inside the Modbus PDU data section and has a valid function code. The only check performed before sending is therefore the validity check, see QModbusPdu::isValid. If no error occurred the function returns a a new valid QModbusReply; nullptr otherwise. Modbus networks may have multiple servers, each server has a unique serverAddress.
See also QModbusReply::rawResult().
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
Sends a request to read the contents of the data pointed by read. Returns a new valid QModbusReply object if no error occurred, otherwise nullptr. Modbus network may have multiple servers, each server has unique serverAddress.
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Sends a request to read the contents of the data pointed by read and to modify the contents of the data pointed by write using Modbus function code QModbusPdu::ReadWriteMultipleRegisters. Returns a new valid QModbusReply object if no error occurred, otherwise nullptr. Modbus network may have multiple servers, each server has unique serverAddress.
Note: : Sending this kind of request is only valid of both read and write are of type QModbusDataUnit::HoldingRegisters.
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
Sends a request to modify the contents of the data pointed by write. Returns a new valid QModbusReply object if no error occurred, otherwise nullptr. Modbus network may have multiple servers, each server has unique serverAddress.
void QModbusClient::setNumberOfRetries(int number)
Sets the number of retries a client will perform before a request fails. The default value is set to 3
.
Note: The new value must be greater than or equal to 0
. Changing this property will only effect new requests, not already scheduled ones.
See also numberOfRetries().
void QModbusClient::setTimeout(int newTimeout)
Sets the newTimeout for this QModbusClient instance. The minimum timeout is 50 ms.
The timeout is used by the client to determine how long it waits for a response from the server. If the response is not received within the required timeout, the TimeoutError is set.
Already active/running timeouts are not affected by such timeout duration changes.
Note: Setter function for property timeout.
See also timeout and timeoutChanged().
[signal]
void QModbusClient::timeoutChanged(int newTimeout)
This signal is emitted when the timeout used by this QModbusClient instance is changed. The new response timeout for the device is passed as newTimeout.
Note: Notifier signal for property timeout.
See also setTimeout().
© 2019 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.