QModbusResponse 类
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, const QByteArray &data = QByteArray()) | |
QModbusResponse(QModbusPdu::FunctionCode code, Args... data) |
静态公共成员
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 构造。
[显式]
QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode 代码, const QByteArray &数据 = QByteArray())
使用指定< curious >代码 curious>和有效载荷设置< curious >数据 curious>构建QModbusResponse。数据已按大端字节顺序存储。
template <typename... Args> QModbusResponse::QModbusResponse(QModbusPdu::FunctionCode 代码, Args... 数据)
使用指定< curious >代码 curious>和有效载荷设置< curious >数据 curious>构建QModbusResponse。将数据转换为并按大端字节顺序存储。
注意:仅限于使用< code translate="no">quint8 code >和< code translate="no">quint16 code >。这是因为< code translate="no">QDataStream code>流操作符不仅将原始数据附加到末尾,而且对于复杂类型,还将追加诸如大小、计数等。
[静态]
int QModbusResponse::calculateDataSize(const QModbusResponse &response)
根据响应的代码和数据计算< i >response i>的预期数据大小。返回响应数据部分的完整大小;如果无法适当地计算大小,则返回< code translate="no">-1 code>。
另请参阅:minimumDataSize和registerDataSizeCalculator。
[静态]
int QModbusResponse::minimumDataSize(const QModbusResponse &response)
根据响应的代码返回< i >response i>的预期最小数据大小;如果未知的代码,则返回< code translate="no">-1 code>。
[静态]
void QModbusResponse::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)
此函数将用户定义的实施注册为根据功能代码< i >fc i>计算响应数据大小。它可以用于扩展或覆盖QModbusResponse::calculateDataSize内的实现。
CalcFuncPtr是对以下签名的自定义< i >calculator i>函数的指针的typedef:
int myCalculateDataSize(const QModbusResponse &pdu);
相关非成员
QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)
从< i >stream i>读取
注意:由于PDU内部缺少大小指示符,此函数可能无法正确传输具有功能代码QModbusPdu::Diagnostics或QModbusPdu::EncapsulatedInterfaceTransport的PDU。特别是,如果PDU被嵌入到不是以诊断/封装请求数据本身结束的流中,则可能发生这种情况。
© 2024 Qt公司有限公司。本文档中的贡献属于各自所有者的版权。本提供的文档根据自由软件基金会发布的《GNU自由文档许可协议》第1.3版进行许可。