QModbusResponse Class
QModbusResponse 是一个容器类,其中包含存储在 Modbus ADU 中的功能代码和有效载荷。更多
头文件: | #include <QModbusResponse> |
CMake.QModbusResponse | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
继承: | QModbusPdu |
继承于: |
公共类型
公共函数
QModbusResponse() | |
QModbusResponse(const QModbusPdu &pdu) | |
QModbusResponse(QModbusPdu::FunctionCode code, Args... data) | |
QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray()) |
静态公共成员
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
的构造函数时,请确保在创建请求之前将包含的数据转换为大位字节序。
如果在编译时已知值,也可以创建类似的响应:
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 的副本。
template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, Args... data)
构造一个 QModbusResponse,其功能代码设置为code ,有效载荷设置为data 。数据按大字节顺序转换和存储。
注: 使用范围仅限于quint8
和quint16
。这是因为QDataStream
流运算符不仅会追加原始数据,还会追加复杂类型的数据,如大小、计数等。
[explicit]
QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
构造一个 QModbusResponse,其功能代码设置为code ,有效载荷设置为data 。预计数据已按大二进制字节顺序存储。
[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
是指向自定义calculator 函数指针的类型定义,其签名如下:
int myCalculateDataSize(const QModbusResponse &pdu);
相关非成员
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)
从stream 读取pdu ,并返回流引用。
注意: 由于 PDU 内缺少大小指示符,该函数可能无法正确流式处理具有函数代码QModbusPdu::Diagnostics 或QModbusPdu::EncapsulatedInterfaceTransport 的 PDU。尤其是当 PDU 嵌入到流中时,流本身并不以诊断/封装请求结束,可能会出现这种情况。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.