00. 目录
01. 概述
QModbusClient类是发送Modbus请求的接口。
QModbusClient API是围绕一个QModbusClient对象构造的,该对象保留其发送的请求的通用配置和设置。一个QModbusClient对于整个Qt应用程序应该足够了。
创建QModbusClient对象后,应用程序可以使用它发送请求。返回的对象用于获取响应于相应请求而返回的任何数据。
QModbusClient具有异步API。当调用完成时对应的槽函数将会被调用,它采用的参数是QModbusReply对象,该对象包含PDU以及元数据(寻址等)。
注意:QModbusClient将接收到的请求排入队列。并行执行的请求数取决于协议。例如,台式机平台上的HTTP协议针对一个主机/端口组合并行发出6个请求。
Header: #include <QModbusClient>
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/115174639
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容