QtQModbusRequest类
Posted 沧海一笑-dj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QtQModbusRequest类相关的知识,希望对你有一定的参考价值。
00. 目录
01. 概述
QModbusRequest是一个容器类,其中包含存储在Modbus ADU中的功能码和数据。
Header: #include <QModbusRequest>
qmake: QT += serialbus
Since: Qt 5.8
Inherits: QModbusPdu
Modbus请求通常由一个字节功能码和一个N个字节的数据组成。
典型的Modbus请求如下所示:
QModbusRequest request(QModbusRequest::WriteMultipleCoils,
QByteArray::fromHex("0013000a02cd01"));
**注意:**使用带有的构造函数时QByteArray
,请确保在创建请求之前将包含的数据转换为big-endian字节顺序。
如果在编译时知道值,则可以这样创建相同的请求:
quint16 startAddress = 19, numberOfCoils = 10;
quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils,
payloadInBytes, outputHigh, outputLow);
02. 开发环境
Windows系统:Windows10
Qt版本:Qt5.15或者Qt6
03. 公有类型
[alias] QModbusRequest::CalcFuncPtr
这是decltype的类型别名。
Typedef指向与QModbusRequest :: calculateDataSize相同签名的自定义计算器函数的指针。
04. 公有成员方法
公有成员方法
QModbusRequest(QModbusPdu::FunctionCode code, Args... data)
构造一个QModbusRequest,其功能代码设置为code,有效载荷设置为data。数据被转换并以大端字节顺序存储。
注意:用法是有限的,quint8并且quint16仅限使用。这是因为QDataStream流运算符不仅会附加原始数据,还会附加复杂类型的大小,
计数等。
QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
构造一个QModbusResponse,将功能代码设置为code,将有效载荷设置为data。数据应该已经按大端字节顺序存储。
QModbusRequest(const QModbusPdu &pdu)
构造pdu的副本。
QModbusRequest()
构造一个无效的QModbusRequest。
静态公有成员方法
int calculateDataSize(const QModbusRequest &request)
根据请求的功能码和数据计算请求的预期数据大小。返回请求数据部分的完整大小;如果无法正确计算则返回-1。
int minimumDataSize(const QModbusRequest &request)
根据请求的功能码返回预期的最小数据大小的请求; 如果功能码未知则返回-1。
void registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)
该函数注册一个用户定义的实现,以计算功能码fc的请求数据大小。它可以用来扩展或覆盖
QModbusRequest :: calculateDataSize()中的实现。
该CalcFuncPtr是一个指向自定义一个typedef计算器具有以下签名功能:
int myCalculateDataSize(const QModbusRequest &pdu);
05. 关联非成员
QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu)
从流中读取一个pdu并返回对该流的引用。
注意:由于PDU内部缺少大小指示符,该功能可能无法正确地流式传输带有功能代码QModbusPdu :: Diagnostics或QModbusPdu ::
EncapsulatedInterfaceTransport的PDU。特别是当PDU嵌入到不以诊断/封装请求本身结尾的流中时,可能会发生这种情况。
06. 附录
6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639
以上是关于QtQModbusRequest类的主要内容,如果未能解决你的问题,请参考以下文章
elasticsearch代码片段,及工具类SearchEsUtil.java
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段