文件下載地址:
也可以下載我上傳到網盤上的:
二、文件內容介紹
1.下載到的文件為qextserialport-1.2win-alpha ,解壓並打開後其內容如下。
(點擊圖片可以查看清晰大圖)
下面分別介紹:
(1)doc文件夾中的文件內容是QextSerialPort類和QextBaseType的簡單的說明,我們可以使用記事本程序將它們打開。
(2)examples文件夾中是幾個例子程序,可以看壹下它的源碼,不過想運行它們好像會出很多問題啊。
(3)html文件夾中是QextSerialPort類的使用文檔。
(4)然後就是剩下的幾個文件了。其中qextserialenumerator.cpp及qextserialenumerator.h文件中定
義的QextSerialEnumerator類是用來獲取平臺上可用的串口信息的。不過,這個類好像並不怎麽好用,而且它不是我們關註的重點,所以下面
就不再介紹它了。
(5)qextserialbase.cpp和qextserialbase.h文件定義了壹個QextSerialBase
類,win_qextserialport.cpp和win_qextserialport.h文件定義了壹個Win_QextSerialPort
類,posix_qextserialport.cpp和posix_qextserialport.h文件定義了壹個
Posix_QextSerialPort類,qextserialport.cpp和qextserialport.h文件定義了壹個
QextSerialPort類。這個QextSerialPort類就是我們上面所說的那個,它是所有這些類的子類,是最高的抽象,它屏蔽了平臺特征,
使得在任何平臺上都可以使用它。
2.幾個類的簡單介紹。
下面是這幾個類的關系圖。
可以看到它們都繼承自QIODevice類,所以該類的壹些函數我們也可以直接來使用。圖中還有壹個QextBaseType類,其實它只是壹個標
識,沒有具體的內容,它用來表示Win_QextSerialPort或Posix_QextSerialPort
中的壹個類,因為在QextSerialPort類中使用了條件編譯,所以QextSerialPort類既可以繼承自
Win_QextSerialPort類,也可以繼承自Posix_QextSerialPort類,所以使用了QextBaseType來表示。這壹點
我們可以在qextserialport.h文件中看到。再說QextSerialPort類,其實它只是為了方便程序的跨平臺編譯,使用它可以在不同的
平臺上,根據不同的條件編譯繼承不同的類。所以它只是壹個抽象,提供了幾個構造函數而已,並沒有具體的內容。在qextserialport.h文件中的
條件編譯內容如下:
#ifdef_TTY_POSIX_
#include“posix_qextserialport.h”
#define QextBaseTypePosix_QextSerialPort
#else
#include“win_qextserialport.h”
#define QextBaseTypeWin_QextSerialPort
#endif
所以,其實我們沒有必要使用這個類,直接使用Win_QextSerialPort或Posix_QextSerialPort就可以了。當然如果
妳想使用這個類,實現同樣的源程序可以直接在Windows和Linux下編譯運行,那麽壹定要註意在Linux下這裏需要添加
#define _TTY_POSIX_ 。而我們這裏為了使得程序更明了,所以沒有使用該類,下面也就不再介紹它了。
QextSerialBase類繼承自QIODevice類,它提供了操作串口所必需的壹些變量和函數等,而
Win_QextSerialPort和Posix_QextSerialPort均繼承自QextSerialBase
類,Win_QextSerialPort類添加了Windows平臺下操作串口的壹些功能,Posix_QextSerialPort類添加了
Linux平臺下操作串口的壹些功能。所以說,在Windows下我們使用Win_QextSerialPort類,在Linux下我們使用
Posix_QextSerialPort類。
3.在QextSerialBase類中還涉及到了壹個枚舉變量QueryMode。
它有兩個值Polling和EventDriven
。QueryMode指的是讀取串口的方式,下面我們稱為查詢模式,我們將Polling稱為查詢方式Polling,將EventDriven稱為事件驅動方式。
事件驅動方式EventDriven就是使用事件處理串口的讀取,壹旦有數據到來,就會發出readyRead()信號,我們可以關聯該信號來讀取串口的數據。在事件驅動的方式下,串口的讀寫是異步的,調用讀寫函數會立即返回,它們不會凍結調用線程。
而查詢方式Polling則不同,讀寫函數是同步執行的,信號不能工作在這種模式下,而且有些功能也無法實現。但是這種模式下的開銷較小。我們需要自己建立定時器來讀取串口的數據。
在Windows下支持以上兩種模式,而在Linux下只支持Polling模式。
三、小結。
這裏講了這麽多,最後要說的只是,我們在Qt中使用這個類編寫串口程序,根據平臺的不同只需要分別使用四個文件。