QModbusResponse Class
QModbusResponse 是一个容器类,其中包含存储在 Modbus ADU 中的功能码和有效载荷。更多内容...
| 头文件: | #include <QModbusResponse> |
| CMake: | 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
用于自定义计算器函数指针的typedef,该函数的签名与QModbusResponse::calculateDataSize 相同。
成员函数文档
[constexpr noexcept default] 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 函数指针的 typedef,该函数具有以下签名:
int myCalculateDataSize(const QModbusResponse &pdu);相关非成员
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)
从stream 读取pdu ,并返回该流的引用。
注意: 由于 PDU 内部缺少大小指示符,该函数 可能无法正确流式传输函数代码为QModbusPdu::Diagnostics 或QModbusPdu::EncapsulatedInterfaceTransport 的 PDU。特别是当 PDU 嵌入到一个未以诊断/封装请求本身结尾的流中时,可能会发生这种情况。
© 2026 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.