QModbusClient 类
QModbusClient 类是发送 Modbus 请求的接口。更多信息...
头文件 | #include <QModbusClient> |
CMake | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake | QT += serialbus |
继承自 | QModbusDevice |
继承 |
公共函数
QModbusClient(QObject *parent = nullptr) | |
int | numberOfRetries() const |
QModbusReply * | sendRawRequest(const QModbusRequest &request, int serverAddress) |
QModbusReply * | sendReadRequest(const QModbusDataUnit &read, int serverAddress) |
QModbusReply * | sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress) |
QModbusReply * | sendWriteRequest(const QModbusDataUnit &write, int serverAddress) |
void | setNumberOfRetries(int number) |
void | setTimeout(int newTimeout) |
int | timeout() const |
信号
void | timeoutChanged(int newTimeout) |
保护函数
virtual bool | processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data) |
virtual bool | processResponse(const QModbusResponse &response, QModbusDataUnit *data) |
详细描述
QModbusClient API是以一个 QModbusClient 对象为基础构建的,该对象存储了它发送的请求的通用配置和设置。对于整个 Qt 应用程序,一个 QModbusClient 就足够了。
一旦创建了 QModbusClient 对象,应用程序就可以使用它来发送请求。返回的对象用于获取对相应请求的任何响应数据。
QModbusClient 有一个异步 API。当调用 finished 插槽时,它接受的参数是包含 PDU 以及元数据(寻址等)的 QModbusReply 对象。
注意:QModbusClient 按队列排队它接收到的请求。并行执行的请求数量取决于协议。例如,桌面平台上的 HTTP 协议对一个主机/端口组合同时发出 6 个请求。
成员函数文档
[显式]
QModbusClient::QModbusClient(QObject *parent = nullptr)
使用指定的 parent 构造一个 Modbus 客户端设备。
int QModbusClient::numberOfRetries() const
返回客户端在请求失败前将执行的重试次数。默认值设置为3
。
另请参阅 setNumberOfRetries()。
[虚保护]
bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
由自定义Modbus客户端实现。默认实现忽略了response和data。它始终返回false以指示错误。
[虚保护]
bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
处理Modbus服务器的response并将解码信息存储在data中。成功时返回true
;否则返回false
。
注意: 默认实现不支持所有FunctionCode。在自定义Modbus客户端实现中重写此方法以处理所需的功能。
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
发送原始Modbus request。原始请求可以在Modbus PDU数据部分包含任何内容,只要具有有效的功能码。因此,发送之前进行的唯一检查是有效性检查,请参阅QModbusPdu::isValid。如果没有发生错误,该函数返回一个新的有效QModbusReply;否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有一个唯一的serverAddress。
另请参阅 QModbusReply::rawResult()。
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
发送请求以读取read指向的数据内容。如果没有错误发生,返回一个新的有效QModbusReply对象;否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有一个唯一的serverAddress。
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
发送请求以读取read指向的数据内容,并使用Modbus功能码QModbusPdu::ReadWriteMultipleRegisters修改write指向的数据内容。如果没有错误发生,返回一个新的有效QModbusReply对象;否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有一个唯一的serverAddress。
注意:只有当 read 和 write 都为 QModbusDataUnit::HoldingRegisters 类型时,发送此类请求才有效。
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
向数据指向的内容发送修改请求。如果没有错误发生,则返回新的有效 QModbusReply 对象,否则为 nullptr。Modbus 网络可能有多个服务器,每个服务器都有一个唯一的 serverAddress。
void QModbusClient::setNumberOfRetries(int number)
设置客户端在请求失败之前将执行的 number 次重试。默认值为 3
。
注意:新值必须大于或等于 0
。更改此属性只会影响新的请求,不会影响已经安排的请求。
参阅:numberOfRetries。
void QModbusClient::setTimeout(int newTimeout)
为此 QModbusClient 实例设置 newTimeout。最小超时时间为 10 毫秒。
超时用于客户端确定等待服务器响应的时间长度。如果未在要求的时间内收到响应,将设置 TimeoutError。
已激活/正在运行的超时不会受到此类超时持续时间更改的影响。
参阅:timeout 和 timeoutChanged。
int QModbusClient::timeout() const
返回 此 QModbusClient 实例使用的超时值(以毫秒为单位)。超时由 TimeoutError 表示。默认值为 1000 毫秒。
参阅:setTimeout 和 timeoutChanged。
[信号]
void QModbusClient::timeoutChanged(int newTimeout)
当此 QModbusClient 实例使用的超时更改时,发出此信号。将设备的新响应超时作为 newTimeout 传递。
参阅:setTimeout。
© 2024 The Qt Company Ltd. 本文档中的文档贡献是由各自的拥有者拥有的版权。本提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其各自的标志是芬兰及其它国家/地区的 The Qt Company Ltd. 的 商标。所有其他商标均为其各自所有者的财产。