QModbusRequest 类

QModbusRequest 是一个容器类,用于存储 Modbus ADU 内部的功能代码和负载。 更多...

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

公共类型

公共函数

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

静态公共成员

intcalculateDataSize(const QModbusRequest &request)
intminimumDataSize(const QModbusRequest &request)
voidregisterDataSizeCalculator(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。数据会被转换并存储为大端字节序。

注意:仅限于 quint8quint16 的使用。这是因为在处理复杂类型时,《QDataStream》流操作符不仅仅是追加原始数据,还会附加大小、计数等。

[静态] int QModbusRequest::calculateDataSize(const QModbusRequest &request)

根据请求的函数代码和数据计算其预期的数据大小。返回请求数据部分的全尺寸;如果大小无法正确计算,则返回 -1

另请参阅minimumDataSizeregisterDataSizeCalculator

[静态] 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公司有限公司的商标。《商标》链接商标。所有其他商标均为其各自所有者的财产。