施 菊, 張 慶, 趙 冰
(上海無線電設備研究所,上海200090)
Qt是一個跨平臺的C++應用構架,擁有直觀、強大的API(應用程序編程接口),在通信控制器、自動化電路設計系統、金融服務等方面應用廣泛。Qt支持以下平臺:MS/Widows、UNIX/X11-Linux、HP-UX、Digital Unix 等。目前在商業領域,Qt是目前最通用流行的Gui,與其它Gui相比,具有良好的封裝機制,結構小巧,模塊化程度高,可重用性較好,無論在移植性、應用程序,還是技術支持等方面都略勝一籌。
Qt在工業領域控制界面方面占有越來越重要的地位。本文結合深圳華天正公司Real6410的ARM11開發套件,詳細介紹了Linux環境為前提的Qt Gui開發環境的搭建,軟件開發過程及其如何移植等問題。與傳統控制界面設計方式相比,Qt Gui還具有系統可靠性增強、開發時間縮短、系統升級維護方便等優勢,具有強大的發展潛力。
本文介紹的Qt 開發硬件環境包括了ARM11開發套件、PC機一臺。選擇在Windows操作系統下通過VMware虛擬機安裝Linux操作系統,并配置NFS等服務功能。目前Linux操作系統版本較多,主要有Ubuntu和RedHat等,相比較而言,Ubuntu操作界面更為人性化、庫升級方便,因此采用Ubuntu 10版本。
進行Qt應用程序的開發,首先需要準備好arm-none-linux-gnueabi交叉編譯器、QtCreator和最新的Qt源碼包。在Linux 平臺下,安裝交叉編譯器為開發板編譯內核。Qt應用程序也需要交叉編譯后,才能移植到ARM 平臺上。
Qt Creator是NOKIA 公司最新推出的Qt開發工具,與Qt Desiger等相比,它功能集成度更高,無須再單獨安裝qvfb、zlib等配套軟件,程序開發和交叉編譯功能自成一體,交叉編譯完成后可直接下載到ARM。Qt針對不同的開發對象提供很多種源碼包,如Qtopia、Qt/Embedded等,本文并不需要開發圖形系統,只是針對特定工業控制要求開發相應的控制界面,因此采用Qt/everywhere源碼包,對源碼包進行交叉編譯后即可進行使用。
ARM 開發套件主要準備工作流程如圖1所示,可以根據需要對內核進行定制,對文件系統進行裁減。

圖1 準備工作流程圖
平臺搭建完成后,就可以根據需要開發嵌入式GUI程序,使用Qt Creator開發流程簡單高效,具體流程圖如圖2所示。

圖2 Qt程序開發流程
在開發過程中,設置Qt Creator交叉編譯工具,將gcc改為arm-linux-gcc,選擇交叉編譯后的qmake,將交叉編譯后生成文件的地址選擇為ARM 可直接掛載地址。于是開發中可以省略在PC機上交叉編譯運行這一流程,直接對編寫的代碼進行交叉編譯。裁減掉ARM 文件系統中不需要的部分內容,同時使其不要上電加載Qtopia等應用程序。這樣便可以將交叉編譯后的應用程序下載到ARM 實時調試,不用在本機編譯與交叉編譯中不斷切換,也不用手動編寫Makefile文件,縮短開發流程。
Qt提供了一款專門用于用戶圖形界面設計的工具Qt Creator,具有強大的布局功能,既可以專門設計GUI,又可以利用它提供的集成功能,用于整個程序的開發。Qt的界面既可以通過GUI窗口中現有部件的選擇排列而成,也可以通過C++編寫完成。按照Qt開發流程,設計了一款用于實時監控的GUI界面,界面框架如圖3所示。

圖3 界面程序框架圖
串口1為調試串口,串口2為RS232,串口3為GPS串口,串口4待用;另外還在本界面上開通了網絡模塊、鍵盤模塊、定時器、音頻和影像播放模塊等。
信號和槽機制是Qt的核心機制,是一種功能強大的對象間通信機制,極為靈活,完全面向對象,為對象之間的通信提供了便利條件。槽用于接收信號,一個槽并不知道是否有信號與自己相連。可以將任意一個信號與任意一個槽相連接,甚至于將一個信號與另一個信號相連。信號與槽構造了一個強大的部件編程機制,取代了以往老舊的、缺乏安全性的回調技術。通過信號與槽,實現了各個模塊之間的有效通信。
將開發完成的程序交叉編譯后下載至ARM開發板,運行程序,如圖4所示。
圖4界面為串口接收數據頁面,當open按鈕按下時,ARM 上所有端口被打開??山尤腈I盤對ARM 進行操作,也可以通過觸摸屏對ARM進行控制,此界面同時具有實時存儲數據功能,把數據存儲到文件系統根目錄下,為以后進行數據分析提供依據。界面右側為端口數據顯示界面,主要用于實時監測各個端口數據,點擊Net按鈕進入網絡數據接收頁面,點擊GPS按鈕進入GPS數據接收頁面,點擊Local按鈕進入本地數據頁面,點擊Help 進入本界面使用說明頁面。左側為圖形數據界面,根據接收數據實時繪制圖形,并將某些數據在圖形上滾動顯示。如果端口數據出現錯誤,此Qt GUI還可根據錯誤的種類給ARM發出不同的警告信息,ARM 發出相應的報警聲。

圖4 QT 界面圖
本文講述了Qt開發環境的搭建和應用。使用Qt開發GUI,能快速的開發應用程序,連接數據庫也非常方便快捷,界面控件元素十分豐富,能滿足各種應用需求。Qt一直以來為開發人員提供完整的文檔和工具,提供最為完整的平臺支持。因此,Qt在GUI程序開發領域有著良好的應用前景。
[1] Jasmin Blanchette,Mark Summerfield.C++ GUI Programming with Qt4,Second Edition[M].2008.
[2] 李朱峰.Linux2.6 嵌入式系統開發與實踐[M].北京:北京航空航天大學出版社,2010.
[3] 劉淼.嵌入式系統接口設計與Linux驅動程序開發[M].北京:北京航空航天大學出版社,2006.
[4] 穆煜.嵌入式應用程序設計[M].北京:人民郵電出版社,2009.