Класс QModbusClient
Класс QModbusClient — это интерфейс для отправки запросов Modbus. Подробнее...
| Заголовок: | #include <QModbusClient> |
| qmake: | QT += serialbus |
| С момента: | Qt 5.8 |
| Наследуется от: | QModbusDevice |
| Наследует: |
Открытые функции
| 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 |
Сигналы
| void | timeoutChanged(int newTimeout) |
Защищённые функции
| virtual bool | processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data) |
| virtual bool | processResponse(const QModbusResponse &response, QModbusDataUnit *data) |
Подробное описание
API QModbusClient построен вокруг одного объекта QModbusClient, который содержит общие настройки и параметры для запросов, которые он отправляет. Достаточно одного QModbusClient для всего приложения Qt.
После создания объекта QModbusClient приложение может использовать его для отправки запросов. Возвращаемый объект используется для получения любых данных, возвращённых в ответ на соответствующий запрос.
QModbusClient имеет асинхронный API. Когда вызывается слот finished, параметром является объект QModbusReply, содержащий PDU, а также метаданные (адресация и т. д.).
Примечание: QModbusClient помещает в очередь полученные запросы. Количество запросов, выполняемых параллельно, зависит от протокола. Например, протокол HTTP на настольных платформах выдает 6 запросов параллельно для одной комбинации хост/порт.
Документация по функциям-членам
QModbusClient::QModbusClient(QObject *parent = nullptr)
Конструирует устройство Modbus-клиента со указанным parent.
[signal] void QModbusClient::timeoutChanged(int newTimeout)
Этот сигнал излучается при изменении таймаута, используемого этим экземпляром QModbusClient. Новый таймаут ответа для устройства передаётся как newTimeout.
См. также setTimeout().
int QModbusClient::numberOfRetries() const
Возвращает количество попыток повторной отправки, которые выполнит клиент, прежде чем запрос будет считаться неудачным. Значение по умолчанию равно 3.
См. также setNumberOfRetries().
[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
Реализуется реализацией клиентского модуля Modbus. Реализация по умолчанию игнорирует response и data. Она всегда возвращает false, чтобы указать на ошибку.
[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Обрабатывает ответ Modbus-сервера response и сохраняет декодированную информацию в data. Возвращает true при успехе; в противном случае false.
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
Отправляет необработанный запрос Modbus request. Необработанный запрос может содержать всё, что помещается в раздел данных Modbus PDU, и имеет допустимый код функции. Единственная проверка, выполняемая перед отправкой, — это проверка её валидности, см. QModbusPdu::isValid. Если ошибок не произошло, функция возвращает новый допустимый QModbusReply; в противном случае nullptr. В сетях Modbus может быть несколько серверов, каждый сервер имеет уникальный serverAddress.
См. также QModbusReply::rawResult().
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
Отправляет запрос на чтение содержимого данных, указанных в read. Возвращает новый допустимый объект QModbusReply, если ошибок не произошло, в противном случае nullptr. В сети Modbus может быть несколько серверов, каждый сервер имеет уникальный serverAddress.
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Отправляет запрос на чтение содержимого данных, указанных в read, и на изменение содержимого данных, указанных в write, используя код функции Modbus QModbusPdu::ReadWriteMultipleRegisters. Возвращает новый допустимый объект QModbusReply, если ошибок не произошло, в противном случае nullptr. В сети Modbus может быть несколько серверов, каждый сервер имеет уникальный serverAddress.
Примечание: Отправка такого запроса допустима только если read и write являются типа QModbusDataUnit::HoldingRegisters.
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
Отправляет запрос на изменение содержимого данных, указанных в write. Возвращает новый допустимый объект QModbusReply, если ошибок не произошло, в противном случае nullptr. В сети Modbus может быть несколько серверов, каждый сервер имеет уникальный serverAddress.
void QModbusClient::setNumberOfRetries(int number)
Устанавливает number попыток повторной отправки, которые выполнит клиент, прежде чем запрос будет считаться неудачным. Значение по умолчанию равно 3.
Примечание: Новое значение должно быть больше или равно 0. Изменение этого свойства повлияет только на новые запросы, а не на уже запланированные.
См. также numberOfRetries().
void QModbusClient::setTimeout(int newTimeout)
Устанавливает newTimeout для этого экземпляра QModbusClient. Минимальный таймаут составляет 10 мс.
Таймаут используется клиентом для определения того, как долго он ждёт ответа от сервера. Если ответ не получен в течение заданного таймаута, устанавливается ошибка TimeoutError.
Уже активные/запущенные таймауты не затронуты изменениями длительности таймаута.
См. также timeout и timeoutChanged().
int QModbusClient::timeout() const
Возвращает значение таймаута, используемое этим экземпляром QModbusClient в мс. Таймаут обозначается как TimeoutError. Значение по умолчанию составляет 1000 мс.
См. также setTimeout и timeoutChanged().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qmodbusclient.html