天天看點

【Qt】QModbusDevice類

00. 目錄

文章目錄

  • ​​00. 目錄​​
  • ​​01. 概述​​
  • ​​02. 開發環境​​
  • ​​03. 公有類型​​
  • ​​04. 成員方法​​
  • ​​05. 預留​​
  • ​​06. 附錄​​

01. 概述

QModbusDevice類是Modbus類​​QModbusServer​​​和​​QModbusClient​​的基類。

Header: #include

qmake: QT += serialbus

Since: Qt 5.8

Inherits: QObject

Inherited By: QModbusClient and QModbusServer

02. 開發環境

​Windows系統​:Windows10

​Qt版本​:Qt5.15或者Qt6

03. 公有類型

enum ConnectionParameter { SerialPortNameParameter, SerialParityParameter, SerialBaudRateParameter, SerialDataBitsParameter, SerialStopBitsParameter, …, UserParameter }

enum Error { NoError, ReadError, WriteError, ConnectionError, ConfigurationError, …, UnknownError }

enum State { UnconnectedState, ConnectingState, ConnectedState, ClosingState }      

​枚舉QModbusDevice :: ConnectionParameter​

該枚舉描述了可以為Modbus裝置連接配接設定的可能值。

通用值(和關聯的類型)為:

常量 描述

​QModbusDevice::SerialPortNameParameter​

​0​

此參數儲存用于裝置通信的串行端口,例如COM1。 ​

​QString​

​QModbusDevice::SerialParityParameter​

​1​

該參數保持奇偶校驗模式。 ​

​QSerialPort::Parity​

​QModbusDevice::SerialBaudRateParameter​

​2​

此參數儲存通信的資料波特率。 ​

​QSerialPort::BaudRate​

​QModbusDevice::SerialDataBitsParameter​

​3​

此參數将資料位儲存在一個幀中。 ​

​QSerialPort::DataBits​

​QModbusDevice::SerialStopBitsParameter​

​4​

此參數儲存一幀中停止位的數量。 ​

​QSerialPort::StopBits​

​QModbusDevice::NetworkPortParameter​

​5​

此參數儲存網絡端口。 ​

​int​

​QModbusDevice::NetworkAddressParameter​

​6​

此參數儲存用于網絡通信的主機位址。 ​

​QString​

​enum QModbusDevice::Error類型​

該枚舉描述了所有可能的錯誤情況。

常量 描述

​QModbusDevice::NoError​

​0​

沒有發生錯誤。

​QModbusDevice::ReadError​

​1​

讀取操作期間發生錯誤。

​QModbusDevice::WriteError​

​2​

寫操作期間發生錯誤。

​QModbusDevice::ConnectionError​

​3​

嘗試打開後端時發生錯誤。

​QModbusDevice::ConfigurationError​

​4​

嘗試設定配置參數時發生錯誤。

​QModbusDevice::TimeoutError​

​5​

I / O期間發生逾時。在給定的時間範圍内,I / O操作未完成。

​QModbusDevice::ProtocolError​

​6​

發生Modbus特定協定錯誤。

​QModbusDevice::ReplyAbortedError​

​7​

由于裝置斷開連接配接,回複被中止。

​QModbusDevice::UnknownError​

​8​

出現未知錯誤。

​enum QModbusDevice::State​

該枚舉描述了所有可能的裝置狀态。

常量 描述

​QModbusDevice::UnconnectedState​

​0​

裝置已斷開連接配接。

​QModbusDevice::ConnectingState​

​1​

裝置正在連接配接。

​QModbusDevice::ConnectedState​

​2​

裝置已連接配接到Modbus網絡。

​QModbusDevice::ClosingState​

​3​

裝置正在關閉。

04. 成員方法

QModbusDevice::QModbusDevice(QObject *parent = nullptr)
用指定的parent構造一個Modbus裝置。    

[signal] void QModbusDevice::errorOccurred(QModbusDevice::Error error)    
當錯誤發生,該信号被發送   

[signal] void QModbusDevice::stateChanged(QModbusDevice::State state)    
每次裝置狀态更改時都會發出此信号。新狀态由state表示。    

[virtual] QModbusDevice::~QModbusDevice()   
析構函數    

[pure virtual protected] void QModbusDevice::close()    
該函數負責關閉Modbus連接配接。實作必須確定執行個體的狀态()設定為QModbusDevice :: UnconnectedState。    

bool QModbusDevice::connectDevice()    
将裝置連接配接到Modbus網絡。傳回true是否成功啟動連接配接過程;否則傳回false。否則false。最終連接配接成功确認要求狀态()更改為QModbusDevice :: ConnectedState。      
QVariant QModbusDevice::connectionParameter(int parameter) const    
傳回與給定連接配接參數關聯的值。傳回的值可以為空。

預設情況下,QModbusDevice使用一些通用值初始化。串行端口設定為偶校驗,波特率為每秒19200位,八個資料位和一個停止位。主機位址的網絡設定設定為本地主機,端口設定為502。

注意:為了使串行連接配接成功,需要将SerialPortNameParameter設定為有效的通信端口。可以從QSerialPortInfo獲得有關有效串行端口的資訊。

注意:如果已經連接配接了裝置,則在重新連接配接裝置後會考慮設定。

QIODevice *QModbusDevice::device() const    
傳回用于ModBus通信或裝置尚未完全初始化時傳回nullptr


void QModbusDevice::disconnectDevice()    
斷開裝置連接配接。


QModbusDevice::Error QModbusDevice::error() const
傳回裝置的錯誤狀态。

QString QModbusDevice::errorString() const    
傳回裝置錯誤的描述性錯誤文本。

[pure virtual protected] bool QModbusDevice::open()    
該函數由connectDevice()調用。子類必須提供true在成功進行Modbus連接配接或連接配接初始化後傳回的實作;否則傳回false。

實作必須確定成功時将執行個體的狀态()設定為QModbusDevice :: ConnectingState或QModbusDevice :: ConnectedState;否則QModbusDevice :: UnconnectedState。通常,當連接配接過程異步向後報告時使用QModbusDevice :: ConnectingState,而在同步連接配接行為的情況下使用QModbusDevice :: ConnectedState。

 void QModbusDevice::setConnectionParameter(int parameter, const QVariant &value)
 将parameter的值設定為value。如果參數已經存在,則先前的值将被覆寫。活動或正在運作的連接配接不受此類參數更改的影響。

 [protected] void QModbusDevice::setError(const QString &errorText, QModbusDevice::Error error)       
 設定裝置的錯誤狀态。發生錯誤時,ModBus裝置實作必須使用此功能來設定錯誤類型和描述性errorText。       

 [protected] void QModbusDevice::setState(QModbusDevice::State newState)   
 将裝置的狀态設定為newState。Modbus裝置實作必須使用此功能來更新裝置狀态。

 QModbusDevice::State QModbusDevice::state() const  
 傳回裝置的目前狀态。      

05. 預留

06. 附錄

​6.1 Qt教程彙總​