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