Spec-Zone.ru › Qt

Класс QModbusResponse

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

Заголовок: #include <QModbusResponse>
qmake: QT += serialbus
С момента: Qt 5.8
Наследует: QModbusPdu
Наследуется от:

QModbusExceptionResponse

  • Список всех членов, включая унаследованные

Открытые типы

CalcFuncPtr

Открытые функции

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

Статические открытые члены

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

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

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

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

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

QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));

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

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

quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);

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

[alias] QModbusResponse::CalcFuncPtr

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

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

template <typename Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)

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

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

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

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

QModbusResponse::QModbusResponse(const QModbusPdu &pdu)

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

QModbusResponse::QModbusResponse()

Создаёт недопустимый QModbusResponse.

[static] int QModbusResponse::calculateDataSize(const QModbusResponse &response)

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

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

[static] int QModbusResponse::minimumDataSize(const QModbusResponse &response)

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

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

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

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

int myCalculateDataSize(const QModbusResponse &pdu);

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

QDataStream &operator>>(QDataStream &stream, QModbusResponse &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/qmodbusresponse.html

Spec-Zone.ru

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