Ⅰ 如何在QT中讀取串口數據
一、文件下載
文件下載地址:
也可以下載我上傳到網盤上的:
二、文件內容介紹
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中使用這個類編寫串口程序,根據平台的不同只需要分別使用四個文件。
Ⅱ 如何在LINUX下編寫一個C語言的串口程序
1、參考這個:POSIX操作系統串口編程指南和 UNIX環境高級編程。
2、簡單介紹一下:
《POSIX操作系統的串口編程指南》是在UNIX環境或PC上對串口進行編程的教程,每一章提供的常式都使用POSIX(Portable Standard for UNIX)終端控制函數,只需極少的修改就可運行在IRIX 、HP-UX、 SunOS、 Solaris、 Digital UNIX、 Linux等大多數類UNIX操作系統。
Ⅲ linux下怎樣對串口編程
使用串口協議登錄Linux終端控制台,通過Zmodem文件傳輸協議接收一個外部文件。 命令:rz -y 會彈出文件瀏覽窗口,選擇要上傳的文件即可。 -y 表示若文件已存在,則覆蓋。
Ⅳ linux下如何進行Qt編程
Linux下Qt編程入門:
http://wenku..com/view/6b0fd37ca26925c52cc5bfb4.html
linux下用Qt編程:
目的:如何編寫有圖形的應用程序
操作:用Qt編寫。
先創建一個目錄,比如chapter_1,然後在這個目錄里編寫一個
main.cpp 程序。接下來在這個目錄里依次執行下列命令就會生成可
執行文件,注意可執行文件的文件名就是目錄的名字,即
chapter_1。
$qmake -project
$qmake
$make
如果源代碼中有錯誤,就不會生成可執行文件。這要要修改源程序,然後再執行上面的命令。
提示:qmake是用來生成makefile文件的,只要執行過就生成了
makefile文件。在大多數情況下,修改源代碼後並不需要再次生成
makefile文件,而只執行make進行編譯就可以了。
更多資料和信息你可以去看看>Linux學習網
Ⅳ 求怎麼實現在Linux操作系統下的Qt界面程序通過串口與STM32通信
1、可以
2、qt Creator只是一個集成開發工具,這個版本隨意,網上下就可以,qte不是用最新,而是最好用跟你在Linux開台開發一樣的。首先要在Linux下交叉編譯qte的庫,然後再將Lib這些文件移植在板子上,最後通過交叉編譯好的庫去編譯你在pc上編寫的程序,放到板子上運行!關於交叉編譯qt的文章,網上可以搜到很多。
3、WIN7平台的交叉編譯工具安裝比較麻煩,不推薦使用,直接在Linux去下一個別人交叉工具包,直接解壓就好。。去友善的官網,或其他網站下這類的工具
Ⅵ 怎樣用Qt編寫arm與linuxTCP通信程序,arm做伺服器,linux做客戶端,獲取arm上AD轉換器的值
1、可採用Linux下的socket編程技術,跟QT或ARM的關聯性不大。
2、ARM開發板上運行多線程的伺服器端程序,主線程Listen,子線程採集AD轉換器的值。
3、LinuxPC上運行tcp的客戶端程序,connect到ARM開發板上的伺服器進行數據獲取和展現。