QModbusRequest 类
QModbusRequest 是一个容器类,用于存储 Modbus ADU 内部的功能代码和负载。 更多...
头文件 | #include <QModbusRequest> |
CMake | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake | QT += serialbus |
继承自 | QModbusPdu |
公共类型
公共函数
QModbusRequest() | |
QModbusRequest(const QModbusPdu &pdu) | |
QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray()) | |
QModbusRequest(QModbusPdu::FunctionCode code, Args... data) |
静态公共成员
int | calculateDataSize(const QModbusRequest &request) |
int | minimumDataSize(const QModbusRequest &request) |
void | registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator) |
相关非成员
QDataStream & | operator>>(QDataStream &stream, QModbusRequest &pdu) |
详细描述
Modbus 请求通常由一个字节的功能码和 N 字节的负载组成
典型的 Modbus 请求可能如下所示
QModbusRequest request(QModbusRequest::WriteMultipleCoils, QByteArray::fromHex("0013000a02cd01"));
注意:当使用接收 QByteArray 的构造函数时,请确保在创建请求之前将包含的数据转换为大端字节顺序。
如果编译时已知值,可以使用这种方式创建相同的请求
quint16 startAddress = 19, numberOfCoils = 10; quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01; QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils, payloadInBytes, outputHigh, outputLow);
成员类型文档
[alias]
QModbusRequest::CalcFuncPtr
用于具有与 QModbusRequest::calculateDataSize 签名相同的自定义计算器函数的指针的别名。
成员函数文档
[constexpr noexcept]
QModbusRequest::QModbusRequest()
构建一个无效的 QModbusRequest。
QModbusRequest::QModbusRequest(const QModbusPdu &pdu)
构建 pdu 的副本。
[显式]
QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
使用函数代码设为 code 及有效负载设为 data 创建一个 QModbusResponse。数据期望存储在已为大端字节序的格式。
template <typename... Args> QModbusRequest::QModbusRequest(QModbusPdu::FunctionCode code, Args... data)
使用函数代码设为 code 及有效负载设为 data 创建一个 QModbusRequest。数据会被转换并存储为大端字节序。
注意:仅限于 quint8
和 quint16
的使用。这是因为在处理复杂类型时,《QDataStream》流操作符不仅仅是追加原始数据,还会附加大小、计数等。
[静态]
int QModbusRequest::calculateDataSize(const QModbusRequest &request)
根据请求的函数代码和数据计算其预期的数据大小。返回请求数据部分的全尺寸;如果大小无法正确计算,则返回 -1
。
另请参阅minimumDataSize 和 registerDataSizeCalculator。
[静态]
int QModbusRequest::minimumDataSize(const QModbusRequest &request)
基于请求的函数代码返回其预期的最小数据大小;如果函数代码未知,则返回 -1
。
[静态]
void QModbusRequest::registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)
此函数注册一个用户定义的实现来计算函数代码 fc 的请求数据大小。它可以用于扩展或覆盖《QModbusRequest::calculateDataSize》内的实现。
CalcFuncPtr
是一个自定义 calculator 函数指针的 typedef,以下是其签名
int myCalculateDataSize(const QModbusRequest &pdu);
相关非成员函数
QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu)
从 stream 中读取一个 pdu 并返回对流的引用。
注意:由于 PDU 中缺少大小指示符,此函数可能无法正确流化具有函数代码《QModbusPdu::Diagnostics》或《QModbusPdu::EncapsulatedInterfaceTransport》的 PDU。特别是,当 PDU 嵌入到一个不以诊断/封装请求本身结束的流中时,这种情况可能会发生。
© 2024 Qt公司有限公司。本文件中包含的文档贡献归属各自的版权所有者。本提供的文档根据由自由软件基金会发布的GNU自由文档许可协议第1.3版的条款授权。Qt及其相关标志是芬兰以及全球其他国家的Qt公司有限公司的商标。《商标》链接商标。所有其他商标均为其各自所有者的财产。