QModbusDevice 类
QModbusDevice 类是 Modbus 类(包括 QModbusServer 和 QModbusClient)的基类。 更多...
头文件 | #include <QModbusDevice> |
CMake | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake | QT += serialbus |
继承 | QObject |
被继承的类 |
公共类型
枚举 | ConnectionParameter { SerialPortNameParameter, SerialParityParameter, SerialBaudRateParameter, SerialDataBitsParameter, SerialStopBitsParameter, …, NetworkAddressParameter } |
枚举 | Error { NoError, ReadError, WriteError, ConnectionError, ConfigurationError, …, InvalidResponseError } |
(since 6.0) 枚举 | IntermediateError { ResponseCrcError, ResponseRequestMismatch } |
枚举 | State { UnconnectedState, ConnectingState, ConnectedState, ClosingState } |
公共函数
QModbusDevice(QObject *parent = nullptr) | |
虚拟 | ~QModbusDevice() |
bool | connectDevice() |
QVariant | connectionParameter(QModbusDevice::ConnectionParameter parameter) const |
QIODevice * | device() const |
void | disconnectDevice() |
QModbusDevice::Error | error() const |
QString | errorString() const |
void | setConnectionParameter(QModbusDevice::ConnectionParameter parameter, const QVariant &value) |
QModbusDevice::State | state() const |
信号
void | errorOccurred(QModbusDevice::Error error) |
void | stateChanged(QModbusDevice::State state) |
保护函数
虚拟 void | close() = 0 |
虚拟 bool | open() = 0 |
void | setError(const QString &errorText, QModbusDevice::Error error) |
void | setState(QModbusDevice::State newState) |
成员类型文档
枚举 QModbusDevice::ConnectionParameter
本枚举描述了可以为Modbus设备连接设置的可能的值。
通用值(以及相关的类型)是
常量 | 值 | 描述 |
---|---|---|
QModbusDevice::SerialPortNameParameter | 0 | 此参数保存用于设备通信的串行端口,例如 COM1。 QString |
QModbusDevice::SerialParityParameter | 1 | 此参数保存校验模式。 QSerialPort::Parity |
QModbusDevice::SerialBaudRateParameter | 2 | 此参数保存通信的数据波特率。 QSerialPort::BaudRate |
QModbusDevice::SerialDataBitsParameter | 3 | 此参数保存一个帧中的数据位。 QSerialPort::DataBits |
QModbusDevice::SerialStopBitsParameter | 4 | 此参数保存一个帧中的停止位数。 QSerialPort::StopBits |
QModbusDevice::NetworkPortParameter | 5 | 此参数保存网络端口。 int |
QModbusDevice::NetworkAddressParameter | 6 | 此参数保存网络通信的主机地址。 QString |
枚举 QModbusDevice::Error
此枚举描述了所有可能的错误条件。
常量 | 值 | 描述 |
---|---|---|
QModbusDevice::NoError | 0 | 没有发生错误。 |
QModbusDevice::ReadError | 1 | 读操作期间发生错误。 |
QModbusDevice::WriteError | 2 | 写操作期间发生错误。 |
QModbusDevice::ConnectionError | 3 | 尝试打开后端时发生错误。 |
QModbusDevice::ConfigurationError | 4 | 尝试设置配置参数时发生错误。 |
QModbusDevice::TimeoutError | 5 | I/O操作期间发生超时。在给定时间范围内没有完成I/O操作。 |
QModbusDevice::ProtocolError | 6 | 发生特定于Modbus的协议错误。 |
QModbusDevice::ReplyAbortedError | 7 | 由于设备断开连接而导致回复被中断。 |
QModbusDevice::UnknownError | 8 | 发生未知错误。 |
QModbusDevice::InvalidResponseError (自Qt 6.4起) | 9 | 解析响应时发生错误,或者 FunctionCode 不被当前实现支持。在后一种情况下,可以覆盖自定义Modbus客户端实现的 processResponse() 和 processPrivateResponse() 方法来提供对所需功能的支持。 |
[自 6.0]
枚举 QModbusDevice::IntermediateError
此枚举描述了在Modbus回复的完整发送和接收周期中可能发生的错误。
常量 | 值 | 描述 |
---|---|---|
QModbusDevice::ResponseCrcError | 0 | 收到了具有错误CRC的Modbus响应。 |
QModbusDevice::ResponseRequestMismatch | 1 | 收到了Modbus响应,但与打开请求不匹配,很可能是由于PDU的功能码不匹配。 |
如果发生了上述任何中间错误,可能将帧重新发送直到达到重试次数的最大值。
可以通过QModbusReply中间错误功能检查中间错误列表。
此枚举自Qt 6.0引入。
另请参阅 QModbusClient::numberOfRetries() 和 QModbusReply::intermediateErrors().
枚举 QModbusDevice::State
此枚举描述了所有可能的设备状态。
常量 | 值 | 描述 |
---|---|---|
QModbusDevice::UnconnectedState | 0 | 设备已断开连接。 |
QModbusDevice::ConnectingState | 1 | 设备正在连接。 |
QModbusDevice::ConnectedState | 2 | 设备连接到了Modbus网络。 |
QModbusDevice::ClosingState | 3 | 设备正在关闭。 |
成员函数文档
[显式]
QModbusDevice::QModbusDevice(QObject *parent = nullptr)
使用指定的父元素构建Modbus设备。
[虚函数 noexcept]
QModbusDevice::~QModbusDevice()
销毁QModbusDevice实例。
[纯虚保护]
void QModbusDevice::close()
此函数负责关闭Modbus连接。实现必须确保实例的state
()设定为QModbusDevice::UnconnectedState。
另请参阅disconnectDevice().
bool QModbusDevice::connectDevice()
将设备连接到Modbus网络。如果连接过程成功启动,则返回 true;否则返回 false。最终连接成功确认需要将state
()变更至QModbusDevice::ConnectedState。
此函数在其实现中调用open()。
另请参阅open().
QVariant QModbusDevice::connectionParameter(QModbusDevice::ConnectionParameter parameter) const
返回与给定连接参数关联的值。返回的值可能是空的。
默认情况下,QModbusDevice
使用一些常见值初始化。串行端口设置为偶校验,波特率为每秒19200位,8个数据位和一个停止位。网络设置将主机地址设置为本地主机,端口号为502。
注意:要成功建立串行连接,必须将SerialPortNameParameter设置为有效的通信端口。有关有效串行端口的信息可以从QSerialPortInfo获取。
注意:如果设备已连接,则重新连接设备后才会考虑设置。
另请参阅setConnectionParameter()和ConnectionParameter。
QIODevice *QModbusDevice::device() const
返回用于ModBus通信的底层QIODevice或如果设备尚未完全初始化则返回 nullptr。
注意:不要存储底层设备的指针,因为它可能在任何时候被无效化。
void QModbusDevice::disconnectDevice()
断开设备。
此函数在其实现中调用close。
QModbusDevice::Error QModbusDevice::error() const
返回设备的错误状态。
另请参阅setError()和QModbusDevice::Error。
[信号]
void QModbusDevice::errorOccurred(QModbusDevice::Error error)
当类型为error的错误发生时,会发出此信号。
QString QModbusDevice::errorString() const
返回设备错误的描述性错误文本。
[纯虚保护]
bool QModbusDevice::open()
此函数由connectDevice()调用。子类必须提供一个实现,当Modbus连接或连接启动成功时返回 true
;否则返回 false
。
实现必须确保当成功时,实例的state()被设置为QModbusDevice::ConnectingState或QModbusDevice::ConnectedState;否则为QModbusDevice::UnconnectedState。通常情况下,QModbusDevice::ConnectingState用于异步连接过程报告,而QModbusDevice::ConnectedState用于同步连接行为。
void QModbusDevice::setConnectionParameter(QModbusDevice::ConnectionParameter parameter, const QVariant &value)
将parameter的值设置为value。如果parameter已存在,则覆盖先前的值。此类参数更改不会影响活动或正在运行的联系。
参阅ConnectionParameter和connectionParameter。
[保护]
void QModbusDevice::setError(const QString &errorText, QModbusDevice::Error error)
设置设备的错误状态。ModBus设备实现必须在出错情况下使用此函数来设置错误类型和描述性错误文本。
参阅error()和QModbusDevice::Error。
[保护]
void QModbusDevice::setState(QModbusDevice::State newState)
设置设备的状态为newState。Modbus设备实现必须使用此函数以更新设备状态。
参阅state()。
QModbusDevice::State QModbusDevice::state() const
返回设备的当前状态。
参阅setState()和stateChanged。
[信号]
void QModbusDevice::stateChanged(QModbusDevice::State state)
此信号会在设备状态改变时发出。新状态由 state 表示。
© 2024 The Qt Company Ltd. 本文件中包含的文档贡献者的版权。此处提供的文档是根据自由软件基金会所发布的版本 1.3 的 GNU 自由文档许可证 许可的。Qt 和相关的商标是芬兰的 The Qt Company Ltd. 以及/或其它国家的商标。所有其他商标归其各自所有者所有。