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裝置連接配接設定的可能值。
通用值(和關聯的類型)為:
常量 | 值 | 描述 |
| | 此參數儲存用于裝置通信的串行端口,例如COM1。 |
| | 該參數保持奇偶校驗模式。 |
| | 此參數儲存通信的資料波特率。 |
| | 此參數将資料位儲存在一個幀中。 |
| | 此參數儲存一幀中停止位的數量。 |
| | 此參數儲存網絡端口。 |
| | 此參數儲存用于網絡通信的主機位址。 |
enum QModbusDevice::Error類型
該枚舉描述了所有可能的錯誤情況。
常量 | 值 | 描述 |
| | 沒有發生錯誤。 |
| | 讀取操作期間發生錯誤。 |
| | 寫操作期間發生錯誤。 |
| | 嘗試打開後端時發生錯誤。 |
| | 嘗試設定配置參數時發生錯誤。 |
| | I / O期間發生逾時。在給定的時間範圍内,I / O操作未完成。 |
| | 發生Modbus特定協定錯誤。 |
| | 由于裝置斷開連接配接,回複被中止。 |
| | 出現未知錯誤。 |
enum QModbusDevice::State
該枚舉描述了所有可能的裝置狀态。
常量 | 值 | 描述 |
| | 裝置已斷開連接配接。 |
| | 裝置正在連接配接。 |
| | 裝置已連接配接到Modbus網絡。 |
| | 裝置正在關閉。 |
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教程彙總