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