【Qt】QModbusRequest类
生活随笔
收集整理的這篇文章主要介紹了
【Qt】QModbusRequest类
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 開(kāi)發(fā)環(huán)境
- 03. 公有類型
- 04. 公有成員方法
- 05. 關(guān)聯(lián)非成員
- 06. 附錄
01. 概述
QModbusRequest是一個(gè)容器類,其中包含存儲(chǔ)在Modbus ADU中的功能碼和數(shù)據(jù)。
Header: #include <QModbusRequest>qmake: QT += serialbus Since: Qt 5.8 Inherits: QModbusPduModbus請(qǐng)求通常由一個(gè)字節(jié)功能碼和一個(gè)N個(gè)字節(jié)的數(shù)據(jù)組成。
典型的Modbus請(qǐng)求如下所示:
QModbusRequest request(QModbusRequest::WriteMultipleCoils,QByteArray::fromHex("0013000a02cd01"));**注意:**使用帶有的構(gòu)造函數(shù)時(shí)QByteArray,請(qǐng)確保在創(chuàng)建請(qǐng)求之前將包含的數(shù)據(jù)轉(zhuǎn)換為big-endian字節(jié)順序。
如果在編譯時(shí)知道值,則可以這樣創(chuàng)建相同的請(qǐng)求:
quint16 startAddress = 19, numberOfCoils = 10;quint8 payloadInBytes = 2, outputHigh = 0xcd, outputLow = 0x01;QModbusRequest request(QModbusRequest::WriteMultipleCoils, startAddress, numberOfCoils,payloadInBytes, outputHigh, outputLow);02. 開(kāi)發(fā)環(huán)境
Windows系統(tǒng):Windows10
Qt版本:Qt5.15或者Qt6
03. 公有類型
[alias] QModbusRequest::CalcFuncPtr
這是decltype的類型別名。
Typedef指向與QModbusRequest :: calculateDataSize相同簽名的自定義計(jì)算器函數(shù)的指針。
04. 公有成員方法
公有成員方法
QModbusRequest(QModbusPdu::FunctionCode code, Args... data)構(gòu)造一個(gè)QModbusRequest,其功能代碼設(shè)置為code,有效載荷設(shè)置為data。數(shù)據(jù)被轉(zhuǎn)換并以大端字節(jié)順序存儲(chǔ)。注意:用法是有限的,quint8并且quint16僅限使用。這是因?yàn)镼DataStream流運(yùn)算符不僅會(huì)附加原始數(shù)據(jù),還會(huì)附加復(fù)雜類型的大小,計(jì)數(shù)等。 QModbusRequest(QModbusPdu::FunctionCode code, const QByteArray &data = QByteArray())構(gòu)造一個(gè)QModbusResponse,將功能代碼設(shè)置為code,將有效載荷設(shè)置為data。數(shù)據(jù)應(yīng)該已經(jīng)按大端字節(jié)順序存儲(chǔ)。 QModbusRequest(const QModbusPdu &pdu)構(gòu)造pdu的副本。 QModbusRequest()構(gòu)造一個(gè)無(wú)效的QModbusRequest。靜態(tài)公有成員方法
int calculateDataSize(const QModbusRequest &request)根據(jù)請(qǐng)求的功能碼和數(shù)據(jù)計(jì)算請(qǐng)求的預(yù)期數(shù)據(jù)大小。返回請(qǐng)求數(shù)據(jù)部分的完整大小;如果無(wú)法正確計(jì)算則返回-1。 int minimumDataSize(const QModbusRequest &request)根據(jù)請(qǐng)求的功能碼返回預(yù)期的最小數(shù)據(jù)大小的請(qǐng)求; 如果功能碼未知?jiǎng)t返回-1。 void registerDataSizeCalculator(QModbusPdu::FunctionCode fc, QModbusRequest::CalcFuncPtr calculator)該函數(shù)注冊(cè)一個(gè)用戶定義的實(shí)現(xiàn),以計(jì)算功能碼fc的請(qǐng)求數(shù)據(jù)大小。它可以用來(lái)擴(kuò)展或覆蓋QModbusRequest :: calculateDataSize()中的實(shí)現(xiàn)。該CalcFuncPtr是一個(gè)指向自定義一個(gè)typedef計(jì)算器具有以下簽名功能:int myCalculateDataSize(const QModbusRequest &pdu);05. 關(guān)聯(lián)非成員
QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu) 從流中讀取一個(gè)pdu并返回對(duì)該流的引用。注意:由于PDU內(nèi)部缺少大小指示符,該功能可能無(wú)法正確地流式傳輸帶有功能代碼QModbusPdu :: Diagnostics或QModbusPdu :: EncapsulatedInterfaceTransport的PDU。特別是當(dāng)PDU嵌入到不以診斷/封裝請(qǐng)求本身結(jié)尾的流中時(shí),可能會(huì)發(fā)生這種情況。06. 附錄
6.1 Qt教程匯總
網(wǎng)址:https://dengjin.blog.csdn.net/article/details/115174639
總結(jié)
以上是生活随笔為你收集整理的【Qt】QModbusRequest类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Qt】QModbusReply类
- 下一篇: 【Qt】QModbusResponse类