QModbusRtuSerialServer Class
QModbusRtuSerialServer 类表示一个 Modbus 服务器,该服务器通过串口与 Modbus 客户端进行通信。更多内容...
| 头文件: | #include <QModbusRtuSerialServer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| 自: | Qt 6.2 |
| 继承自: | QModbusServer |
公共函数
| QModbusRtuSerialServer(QObject *parent = nullptr) | |
| virtual | ~QModbusRtuSerialServer() |
(since 6.2) int | interFrameDelay() const |
(since 6.2) void | setInterFrameDelay(int microseconds) |
重新实现的公共函数
| virtual bool | processesBroadcast() const override |
重新实现的受保护函数
| virtual void | close() override |
| virtual bool | open() override |
| virtual QModbusResponse | processRequest(const QModbusPdu &request) override |
详细说明
通过 Modbus 进行通信需要单个 Modbus 客户端实例与多个 Modbus 服务器之间进行交互。该类通过串行端口提供 Modbus 服务器的实现。
由于多个Modbus服务器实例可以同时(通过串行总线)与一个Modbus客户端交互,因此服务器通过其serverAddress()进行标识。
成员函数文档
[explicit] QModbusRtuSerialServer::QModbusRtuSerialServer(QObject *parent = nullptr)
使用指定的parent 实例化一个QModbusRtuSerialServer。serverAddress 的预设值为1 。
[virtual noexcept] QModbusRtuSerialServer::~QModbusRtuSerialServer()
销毁该QModbusRtuSerialServer 实例。
[override virtual protected] void QModbusRtuSerialServer::close()
重写了:QModbusDevice::close()。
[since 6.2] int QModbusRtuSerialServer::interFrameDelay() const
返回两个连续 Modbus 消息之间静默间隔的微秒数。
该函数在 Qt 6.2 中引入。
另请参阅 setInterFrameDelay()。
[override virtual protected] bool QModbusRtuSerialServer::open()
重写了:QModbusDevice::open()。
注意: 调用此函数时, 串口中的现有缓冲数据将被清除。
[override virtual protected] QModbusResponse QModbusRtuSerialServer::processRequest(const QModbusPdu &request)
重写:QModbusServer::processRequest(const QModbusPdu &request)。
处理由request 指定的 Modbus 客户端请求,并返回一个 Modbus 响应。
具有 MEI 类型 13 (0x0D) CANopen 通用参考的 Modbus 函数QModbusRequest::EncapsulatedInterfaceTransport 被过滤掉,因为它通常仅支持 Modbus TCP 或 Modbus 串行 ASCII。
对 RTU 串行服务器的请求将收到一个 Modbus 异常响应,其异常代码为 QModbusExceptionResponse::IllegalFunction。
[override virtual] bool QModbusRtuSerialServer::processesBroadcast() const
重新实现了:QModbusServer::processesBroadcast() const。
[since 6.2] void QModbusRtuSerialServer::setInterFrameDelay(int microseconds)
设置两个连续 Modbus 消息之间静默间隔的microseconds 值。默认情况下,类实现将根据 Modbus 规范使用预先计算的值。已建立或正在运行的连接不受此类延迟变化的影响。
注意:如果 microseconds 设置为-1,或者microseconds 小于预先计算出的延迟值,则将使用该预先计算出的值作为帧延迟。
该函数于 Qt 6.2 中引入。
另请参阅 interFrameDelay()。
© 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.