【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: #includeqmake: 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月08日 19时13分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP Windows环境安装Solr扩展
2019-04-30
Paypal Express Checkout快速结账API心得--Star.Hou
2019-04-30
支付网关设计感悟(一)Star.Hou
2019-04-30
支付网关设计感悟(二)Star.Hou
2019-04-30
laravel文件上传excel - star.Hou
2019-04-30
Mysql复制数据库--star.Hou
2019-04-30
Js关于光标对象与定位插入图片
2019-04-30
redis队列处理在PHP里的使用 star.Hou的红楼一梦
2019-04-30
elasticsearch搜索之范围维度 Star.hou原创
2019-04-30
facebook市场营销SDK之个人理解 Star.hou原创
2019-04-30
Redis AOF之重写 Star.hou原创
2019-04-30
Redis之主从配置的心跳 Star.hou原创
2019-04-30
vim or sed字符串批量替换
2019-04-30
redis之队列处理回滚记录 star.Hou
2019-04-30
Laravel repository数据仓库使用 Star.hou红楼一梦
2019-04-30
Laravel之文件上传
2019-04-30
Redis 3.2.3 源码安装(centos6.8)
2019-04-30
全站翻译分享---Localize平台的使用方式整理--Star.hou
2019-04-30