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)
根据响应的功能码和数据计算响应的预期数据大小。返回响应的数据部分的完整大小;如果无法正确计算则返回-1。
int minimumDataSize(const QModbusResponse &response)
根据响应的功能码返回响应的预期最小数据大小;如果功能代码未知则返回-1。
void 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
暂无评论内容