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::DiscreteInputs 和QModbusDataUnit::Coils 仅接受单比特。因此,0 将被解释为0 ,其他情况均被解释为1 。
成员类型文档
enum QModbusDataUnit::RegisterType
此枚举描述了所有受支持的寄存器类型。
| 常量 | 值 | 描述 |
|---|---|---|
QModbusDataUnit::Invalid | 0 | 由默认构造函数设置,请勿使用。 |
QModbusDataUnit::DiscreteInputs | 1 | 此类数据可由 I/O 系统提供。 |
QModbusDataUnit::Coils | 2 | 此类数据可由应用程序更改。 |
QModbusDataUnit::InputRegisters | 3 | 此类数据可由 I/O 系统提供。 |
QModbusDataUnit::HoldingRegisters | 4 | 此类数据可由应用程序修改。 |
成员函数文档
[constexpr noexcept default] QModbusDataUnit::QModbusDataUnit()
构建一个空的、无效的 QModbusDataUnit。起始地址设置为-1 ,registerType 设置为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 ,单元大小设置为size 。values()中的条目初始化为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)
设置数据单元的values 。QModbusDataUnit::DiscreteInputs 和QModbusDataUnit::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::DiscreteInputs 和QModbusDataUnit::Coils 表仅接受单比特值,因此0 将被解释为0 ,而其他任何值都将被解释为1 。
另请参阅 setValues()。
© 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.