QModbusDataUnit Class

QModbusDataUnit 是一个容器类,代表 Modbus 寄存器中的单位和16 位字条目。更多

头文件: #include <QModbusDataUnit>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus

公共类型

enum RegisterType { Invalid, DiscreteInputs, Coils, InputRegisters, HoldingRegisters }

公共函数

QModbusDataUnit()
QModbusDataUnit(QModbusDataUnit::RegisterType type)
QModbusDataUnit(QModbusDataUnit::RegisterType type, int address, const QList<quint16> &data)
QModbusDataUnit(QModbusDataUnit::RegisterType type, int address, quint16 size)
bool isValid() const
QModbusDataUnit::RegisterType registerType() const
void setRegisterType(QModbusDataUnit::RegisterType type)
void setStartAddress(int address)
void setValue(qsizetype index, quint16 value)
void setValueCount(qsizetype newCount)
void setValues(const QList<quint16> &values)
int startAddress() const
quint16 value(qsizetype index) const
qsizetype valueCount() const
QList<quint16> values() const

详细说明

QModbusDataUnit 可用于读写操作。条目通过 () 和 () 连续条目数寻址。() 决定操作使用哪个寄存器。请注意,有些寄存器是只读寄存器。startAddress valueCount registerType

实际的values() 是基于单位或16 位的。QModbusDataUnit::DiscreteInputsQModbusDataUnit::Coils 只接受单位。因此,0 被解释为0 ,而其他任何内容都被解释为1

成员类型文档

enum QModbusDataUnit::RegisterType

该枚举描述了所有支持的寄存器类型。

常量描述
QModbusDataUnit::Invalid0由默认构造函数设置,请勿使用。
QModbusDataUnit::DiscreteInputs1此类数据可由 I/O 系统提供。
QModbusDataUnit::Coils2此类数据可由应用程序更改。
QModbusDataUnit::InputRegisters3此类数据可由 I/O 系统提供。
QModbusDataUnit::HoldingRegisters4此类数据可由应用程序更改。

成员函数文档

[constexpr noexcept] QModbusDataUnit::QModbusDataUnit()

构造一个空的、无效的 QModbusDataUnit。起始地址被设为-1registerType 被设为QModbusDataUnit::Invalid

[explicit constexpr noexcept] QModbusDataUnit::QModbusDataUnit(QModbusDataUnit::RegisterType type)

为寄存器type 构建一个数据单元。起始地址设置为0 ,数据范围和数据值为空。

QModbusDataUnit::QModbusDataUnit(QModbusDataUnit::RegisterType type, int address, const QList<quint16> &data)

为寄存器type 构建一个数据单元。数据的起始地址设置为address ,单元值设置为data 。值计数由data 的大小暗示。

QModbusDataUnit::QModbusDataUnit(QModbusDataUnit::RegisterType type, int address, quint16 size)

为寄存器type 构建数据单元。数据起始地址设为address ,单元大小设为sizevalues() 的条目用0 初始化。

bool QModbusDataUnit::isValid() const

如果QModbusDataUnit 有效,则返回true ;否则返回false 。如果registerType() 不是QModbusDataUnit::Invalid ,且startAddress() 大于或等于0 ,则认为QModbusDataUnit 有效。

QModbusDataUnit::RegisterType QModbusDataUnit::registerType() const

返回寄存器的类型。

另请参阅 setRegisterType() 和QModbusDataUnit::RegisterType

void QModbusDataUnit::setRegisterType(QModbusDataUnit::RegisterType type)

设置寄存器type

另请参阅 registerType() 和QModbusDataUnit::RegisterType

void QModbusDataUnit::setStartAddress(int address)

设置数据单位的起始address

另请参阅 startAddress().

void QModbusDataUnit::setValue(qsizetype index, quint16 value)

将位置index 的寄存器设置为value

另请参见 value().

void QModbusDataUnit::setValueCount(qsizetype newCount)

将所请求寄存器数据块的大小设置为newCount

这可能与values() 的大小不同,因为该函数用于指示数据请求的大小。只有在处理完数据请求后,valueCount() 才等于values() 的大小。

另请参阅 valueCount()。

void QModbusDataUnit::setValues(const QList<quint16> &values)

设置数据单元的valuesQModbusDataUnit::DiscreteInputsQModbusDataUnit::Coils 表只接受单比特值,因此0 将被解释为0 ,而其他值将被解释为1

另请参见 values()。

int QModbusDataUnit::startAddress() const

返回寄存器中数据单元的起始地址。

另请参见 setStartAddress().

quint16 QModbusDataUnit::value(qsizetype index) const

返回位置index 的值。

另请参见 setValue() 。

qsizetype QModbusDataUnit::valueCount() const

返回所请求寄存器数据块的大小或从设备读取数据的大小。

该函数不一定总是返回与values() 大小相等的计数。由于该类用于向远程数据寄存器请求数据,valueCount() 可用来表示所请求寄存器数据块的大小。请求处理完毕后,valueCount() 等于values() 的大小。

另请参见 setValueCount()。

QList<quint16> QModbusDataUnit::values() const

返回数据单位中的数据。QModbusDataUnit::DiscreteInputsQModbusDataUnit::Coils 表只接受单比特值,因此0 被解释为0 ,其他则被解释为1

另请参阅 setValues()。

相关非会员

QModbusDataUnitMap

QMap<QModbusDataUnit::RegisterType,QModbusDataUnit> 的同义词。

© 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.