Spec-Zone.ru › Qt

Класс QModbusRequest

Класс QModbusRequest является контейнерным классом, содержащим код функции и полезную нагрузку, хранящуюся внутри Modbus ADU. Подробнее...

Заголовок: #include <QModbusRequest>
qmake: QT += serialbus
С момента: Qt 5.8
Наследуется от: QModbusPdu
  • Список всех членов, включая унаследованные члены

Типы общедоступного доступа

CalcFuncPtr

Функции общедоступного доступа

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

Статические члены общедоступного доступа

int calculateDataSize(const QModbusRequest &request)
int minimumDataSize(const QModbusRequest &request)
void registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)

Связанные нечлены

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

Подробное описание

Запрос Modbus обычно состоит из одного байта, описывающего FunctionCode и N байтов полезной нагрузки

Типичный запрос Modbus может выглядеть так:

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

Примечание: При использовании конструктора, принимающего QByteArray, убедитесь, что вы конвертируете содержащиеся данные в порядок байтов big-endian перед созданием запроса.

Тот же запрос можно создать так, если значения известны на этапе компиляции:

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

Документация по типам членов

[alias] QModbusRequest::CalcFuncPtr

Тип-синоним для указателя на пользовательскую функцию-калькулятор с той же сигнатурой, что и QModbusRequest::calculateDataSize.

Документация по функциям-членам

шаблон <typename Args> QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, Args... data)

Конструирует QModbusRequest с кодом функции, установленным в code, и полезной нагрузкой, установленной в data. Данные конвертируются и хранятся в порядке байтов big-endian.

Примечание: Использование ограничено quint8 и quint16 только. Это связано с тем, что QDataStream операторы потока не только добавляют сырые данные, но также, например, размер, количество и т. д. для сложных типов.

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

Конструирует QModbusResponse с кодом функции, установленным в code, и полезной нагрузкой, установленной в data. Ожидается, что данные уже хранятся в порядке байтов big-endian.

QModbusRequest::QModbusRequest(const QModbusPdu &pdu)

Создаёт копию pdu.

QModbusRequest::QModbusRequest()

Конструирует недопустимый QModbusRequest.

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

Вычисляет ожидаемый размер данных для request на основе кода функции запроса и данных. Возвращает полный размер части данных запроса; -1 если размер не может быть правильно вычислен.

См. также minimumDataSize и registerDataSizeCalculator.

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

Возвращает ожидаемый минимальный размер данных для request на основе кода функции запроса; -1 если код функции неизвестен.

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

Эта функция регистрирует пользовательскую реализацию для вычисления размера данных запроса для кода функции fc. Она может быть использована для расширения или переопределения реализации внутри QModbusRequest::calculateDataSize().

CalcFuncPtr представляет собой тип-синоним для указателя на пользовательскую функцию calculator со следующей сигнатурой:

int myCalculateDataSize(const QModbusRequest &pdu);

Связанные нечлены

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

Читает pdu из stream и возвращает ссылку на поток.

Примечание: Функция может некорректно потоковой передавать PDU с кодом функции QModbusPdu::Diagnostics или QModbusPdu::EncapsulatedInterfaceTransport из-за отсутствия указателя размера внутри PDU. В частности, это может произойти, когда PDU встроена в поток, который не заканчивается самим диагностическим/инкапсулированным запросом.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qmodbusrequest.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API