Класс QModbusResponse
QModbusResponse — это контейнерный класс, содержащий код функции и полезную нагрузку, хранящиеся внутри Modbus ADU. Подробнее...
| Заголовок: | #include <QModbusResponse> |
| qmake: | QT += serialbus |
| С момента: | Qt 5.8 |
| Наследует: | QModbusPdu |
| Наследует от: |
Открытые функции
| QModbusResponse() = default | |
| QModbusResponse(const QModbusPdu &pdu) | |
| QModbusResponse(FunctionCode code, const QByteArray &data = QByteArray()) | |
| QModbusResponse(FunctionCode code, Args... data) |
- 11 открытых функций, унаследованных от QModbusPdu
Статические открытые члены
| int | calculateDataSize(const QModbusResponse &response) |
| int | minimumDataSize(const QModbusResponse &response) |
| void | registerDataSizeCalculator(FunctionCode fc, CalcFuncPtr calculator) |
- 1 статический открытый член, унаследованный от QModbusPdu
Связанные нечлены
| QDataStream & | operator>>(QDataStream &stream, QModbusResponse &pdu) |
Дополнительные наследуемые члены
- 1 защищенная функция, унаследованная от QModbusPdu
Подробное описание
QModbusResponse — это контейнерный класс, содержащий код функции и полезную нагрузку, хранящиеся внутри Modbus ADU.
Типичный ответ 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);
Документация функций-членов
[default] QModbusResponse::QModbusResponse()
Создает недействительный QModbusResponse.
QModbusResponse::QModbusResponse(const QModbusPdu &pdu)
Создает копию pdu.
QModbusResponse::QModbusResponse(FunctionCode code, const QByteArray &data = QByteArray())
Создает QModbusResponse с кодом функции, установленным в code, и полезной нагрузкой, установленной в data. Ожидается, что данные уже хранятся в порядке байтов big-endian.
QModbusResponse::QModbusResponse(FunctionCode code, Args... data)
Создает QModbusResponse с кодом функции, установленным в code, и полезной нагрузкой, установленной в data. Данные преобразуются и хранятся в порядке байтов big-endian.
Примечание: Использование ограничено quint8 и quint16 только. Это связано с тем, что QDataStream операторы потока не только будут добавлять сырые данные, но и, например, размер, счет и т. д. для сложных типов.
[static] int QModbusResponse::calculateDataSize(const QModbusResponse &response)
Вычисляет ожидаемый размер данных для response, на основе кода функции ответа и данных. Возвращает полный размер части данных ответа; -1 если размер не может быть должным образом рассчитан.
См. также minimumDataSize и registerDataSizeCalculator.
[static] int QModbusResponse::minimumDataSize(const QModbusResponse &response)
Возвращает ожидаемый минимальный размер данных для response, на основе кода функции ответа; -1 если код функции неизвестен.
[static] void QModbusResponse::registerDataSizeCalculator(FunctionCode fc, CalcFuncPtr calculator)
Эта функция регистрирует пользовательское реализацию для вычисления размера данных ответа для кода функции fc. Она может использоваться для расширения или переопределения реализации внутри QModbusResponse::calculateDataSize().
Тип CalcFuncPtr - псевдоним для указателя на пользовательскую функцию calculator со следующей сигнатурой:
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-5.9/qmodbusresponse.html