【Qt】QModbusResponse类

00. 目录

01. 概述

QModbusResponse是一个容器类,其中包含存储在Modbus ADU中的功能码和数据。

 Header:  #include <QModbusResponse>
 qmake: QT += serialbus 
 Since: Qt 5.8 
 Inherits: QModbusPdu 
 Inherited By: QModbusExceptionResponse

典型的Modbus响应如下所示:

 QModbusResponse response(QModbusResponse::ReadCoils, QByteArray::fromHex("02cd01"));

**注意:**使用带有的构造函数时QByteArray,请确保在创建请求之前将包含的数据转换为big-endian字节顺序。

如果在编译时知道值,则可以像这样创建相同的响应:

 quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;
 QModbusResponse response(QModbusResponse::ReadCoils, payloadInBytes, outputHigh, outputLow);

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 公有类型

[alias] QModbusResponse::CalcFuncPtr

这是decltype的类型别名。

Typedef指向与QModbusResponse :: calculateDataSize相同签名的自定义计算器函数的指针。

04. 公有成员方法

 QModbusResponse(QModbusPdu::FunctionCode code, Args... data)
 构造一个QModbusResponse,将功能代码设置为code,将数据设置为data。数据被转换并以大端字节顺序存储。
     
 注意:用法是有限的,quint8并且quint16仅限使用。这是因为QDataStream流运算符不仅会附加原始数据,还会附加复杂类型的大小,
 计数等。
     
 QModbusResponse(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())
 构造一个QModbusResponse,将功能码设置为code,将有数据设置为data。数据应该已经按大端字节顺序存储。
  
 QModbusResponse(const QModbusPdu &pdu)
 构造pdu的副本。
     
 QModbusResponse()
 构造一个无效的QModbusResponse。
     
 int calculateDataSize(const QModbusResponse &response)
 根据响应的功能码和数据计算响应的预期数据大小。返回响应的数据部分的完整大小;如果无法正确计算则返回-1int minimumDataSize(const QModbusResponse &response)
 根据响应的功能码返回响应的预期最小数据大小;如果功能代码未知则返回-1void registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusResponse::CalcFuncPtr calculator)
 该函数注册一个用户定义的实现,以计算功能码fc的响应数据大小。它可以用来扩展或覆盖QModbusResponse :: 
 calculateDataSize()中的实现。
 该CalcFuncPtr是一个指向自定义一个typedef计算器具有以下签名功能:
  
 int myCalculateDataSize(const QModbusResponse &pdu);

05. 关联非成员

QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu)
从流中读取一个pdu并返回对该流的引用。

注意:由于PDU内部缺少大小指示符,该功能可能无法正确地流式传输带有功能代码QModbusPdu :: Diagnostics或QModbusPdu 
:: EncapsulatedInterfaceTransport的PDU。特别是当PDU嵌入到不以诊断/封装请求本身结尾的流中时,可能会发生这种情况。    

06. 附录

6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639

© 版权声明
THE END
喜欢就支持一下吧
点赞369 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容