QModbusResponse 类

QModbusResponse是一个容器类,用于包含存储在Modbus ADU内的功能代码和有效负载。更多...

头文件 #include <QModbusResponse>
CMakefind_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmakeQT += serialbus
继承自 QModbusPdu
由以下类继承

QModbusExceptionResponse

公共类型

公共函数

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

静态公共成员

intcalculateDataSize(const QModbusResponse &response)
intminimumDataSize(const QModbusResponse &response)
voidregisterDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)

详细描述

典型的Modbus响应可以看起来像这样

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

注意:在构造函数使用固定的QByteArray时,请确保在创建请求之前将包含的数据转换为大端字节顺序。

如果编译时已知值,可以通过以下方式创建相同的有效响应

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

成员类型文档

[alias] QModbusResponse::CalcFuncPtr

为与QModbusResponse::calculateDataSize具有相同签名的自定义计算函数指针进行类型定义。

成员函数文档

[constexpr noexcept] QModbusResponse::QModbusResponse()

构造一个无效的 QModbusResponse。

QModbusResponse::QModbusResponse(const QModbusPdu &pdu)

复制 pdu 构造。

[显式] QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode 代码, const QByteArray &数据 = QByteArray())

使用指定< curious >代码和有效载荷设置< curious >数据构建QModbusResponse。数据已按大端字节顺序存储。

template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode 代码, Args... 数据)

使用指定< curious >代码和有效载荷设置< curious >数据构建QModbusResponse。将数据转换为并按大端字节顺序存储。

注意:仅限于使用< code translate="no">quint8和< code translate="no">quint16。这是因为< code translate="no">QDataStream流操作符不仅将原始数据附加到末尾,而且对于复杂类型,还将追加诸如大小、计数等。

[静态] int QModbusResponse::calculateDataSize(const QModbusResponse &response)

根据响应的代码和数据计算< i >response的预期数据大小。返回响应数据部分的完整大小;如果无法适当地计算大小,则返回< code translate="no">-1

另请参阅:minimumDataSizeregisterDataSizeCalculator

[静态] int QModbusResponse::minimumDataSize(const QModbusResponse &response)

根据响应的代码返回< i >response的预期最小数据大小;如果未知的代码,则返回< code translate="no">-1

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

此函数将用户定义的实施注册为根据功能代码< i >fc计算响应数据大小。它可以用于扩展或覆盖QModbusResponse::calculateDataSize内的实现。

CalcFuncPtr是对以下签名的自定义< i >calculator函数的指针的typedef:

int myCalculateDataSize(const QModbusResponse &pdu);

相关非成员

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

从< i >stream读取并返回对流的引用。

注意:由于PDU内部缺少大小指示符,此函数可能无法正确传输具有功能代码QModbusPdu::DiagnosticsQModbusPdu::EncapsulatedInterfaceTransport的PDU。特别是,如果PDU被嵌入到不是以诊断/封装请求数据本身结束的流中,则可能发生这种情况。

© 2024 Qt公司有限公司。本文档中的贡献属于各自所有者的版权。本提供的文档根据自由软件基金会发布的《GNU自由文档许可协议》第1.3版进行许可。