【Qt】QModbusClient类
发布日期:2021-06-29 20:52:10 浏览次数:3 分类:技术文章

本文共 2670 字,大约阅读时间需要 8 分钟。

00. 目录

文章目录

01. 概述

QModbusClient类是发送Modbus请求的接口。

QModbusClient API是围绕一个QModbusClient对象构造的,该对象保留其发送的请求的通用配置和设置。一个QModbusClient对于整个Qt应用程序应该足够了。

创建QModbusClient对象后,应用程序可以使用它发送请求。返回的对象用于获取响应于相应请求而返回的任何数据。

QModbusClient具有异步API。当调用完成时对应的槽函数将会被调用,它采用的参数是QModbusReply对象,该对象包含PDU以及元数据(寻址等)。

注意:QModbusClient将接收到的请求排入队列。并行执行的请求数取决于协议。例如,台式机平台上的HTTP协议针对一个主机/端口组合并行发出6个请求。

Header:  #include 
qmake: QT += serialbus Since: Qt 5.8 Inherits: QModbusDevice Inherited By: QModbusRtuSerialMaster and QModbusTcpClient

Modbus相关的类

在这里插入图片描述

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 常用属性

timeout:此属性保存此客户端使用的超时值

返回此QModbusClient实例使用的超时值(以毫秒为单位)。超时由TimeoutError指示。默认值为1000毫秒。

访问函数

int timeout() const void setTimeout(int newTimeout)

通知信号

void timeoutChanged(int newTimeout)

04. 常用成员方法

QModbusClient :: QModbusClient(QObject * parent = nullptr)构造函数      [signal] void QModbusClient::timeoutChanged(int newTimeout)当此QModbusClient实例超时时,将发出此信号。设备的新响应超时将作为newTimeout传递。       int QModbusClient::numberOfRetries() const返回客户端在请求失败之前将执行的重试次数。默认值设置为3。    [virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)将通过自定义Modbus客户端实现来实现。默认实现忽略响应和数据。它始终返回false表示错误。    [virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)处理Modbus服务器响应并将解码后的信息存储在data中。成功返回true;否则为假。    QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)发送原始Modbus请求。原始请求可以包含适合Modbus PDU数据部分且具有有效功能代码的任何内容。因此,在发送之前执行的唯一检查就是有效性检查,请参见QModbusPdu :: isValid。如果没有错误发生,该函数将返回一个新的有效QModbusReply ; 否则为nullptr。Modbus网络可能有多个服务器,每个服务器都有一个唯一的serverAddress。    QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)发送到读取由指向的数据的内容的请求的读取。如果没有发生错误,则返回一个新的有效QModbusReply对象,否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有唯一的serverAddress。    QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)发送请求以使用Modbus功能代码QModbusPdu :: ReadWriteMultipleRegisters读取read指向的数据的内容并修改write指向的数据的内容。如果没有发生错误,则返回一个新的有效QModbusReply对象,否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有唯一的serverAddress。    QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)发送请求以修改write指向的数据内容。如果没有发生错误,则返回一个新的有效QModbusReply对象,否则返回nullptr。Modbus网络可能有多个服务器,每个服务器都有唯一的serverAddress。    void QModbusClient::setNumberOfRetries(int number)设置重试请求失败之前,客户端将执行的次数。默认值设置为3。注意:新值必须大于或等于0。更改此属性将仅影响新请求,而不影响已计划的请求。    void QModbusClient::setTimeout(int newTimeout)设置超时时间为newTimeout。最小超时为10毫秒。客户端使用超时来确定它等待服务器响应的时间。如果在要求的超时时间内未收到响应,则设置TimeoutError。这样的超时持续时间更改不会影响已经激活/正在运行的超时。

05. 预留

06. 附录

6.1 Qt教程汇总

网址:

转载地址:https://dengjin.blog.csdn.net/article/details/116915719 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Qt】QModbusDataUnit类
下一篇:【Qt】Qt6调用Visual Studio2019生成的动态库详解

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月08日 19时13分35秒