嵌入式Linux系統的圖形化使用者介面__Linux

來源:互聯網
上載者:User

作者:穆煜,華清遠見嵌入式學院講師。

當今,在設計嵌入式產品的圖形化使用者介面時,用到的工具主要有以下幾種:

1. Qt/Embedded

Qt是Trolltech公司發布的一個跨平台的C++圖形介面應用程式架構。它實際上是一個類庫,裡麵包括了大量的可重用的類,其中既有按鈕、視窗等這些可見類,也有定時器這樣的不可見類和一些抽象類別。Qt是完全物件導向,擁有良好的擴充性與穩定性,並支援模組化編程。我們可以充分利用Qt高度物件導向和模組化的特徵,從繁瑣的X編程中解脫出來,專註於程式本身的內容,使Linux下視窗程序設計成為一件非常輕鬆的事情。

在Qt中,對象之間進行通訊採用了一種被稱作訊號與槽(Signal-Slot)的方式,這是Qt的重要特徵之一。在MS-Windows中,程式通過訊息佇列和訊息迴圈的方式進行訊息的傳遞與事件的觸發,而Qt的訊號與槽機制採取了這樣的方式:一個類可以定義多個訊號和多個槽,訊號就好像是事件,而槽則是響應事件的方法,並且和一般的成員函數沒有太大的區別。如果需要實現它們之間的通訊時,就將某個類的槽與某個類的訊號串連起來,從而實現事件驅動。

Qt/Embedded是Qt的嵌入式版本。因為Qt是KDE等項目使用的GUI庫,所以有許多基於Qt的X Window程式可以非常方便地移植到Qt/Embedded版本上。因此,自從Qt/Embedded以GPL條款形式發布以來,就有大量的嵌入式Linux開發商轉到了Qt/Embedded系統上。但是Qt/Embedded的問題是過於龐大,儘管Qt/Embedded聲稱可以裁剪到最少630K,但這時的Qt/Embedded庫已經基本上失去了使用價值。Qt/Embedded庫目前主要針對手持式資訊終端。因為對硬體加速支援匱乏,很難應用到對圖形速度、功能和效率要求較高的嵌入式系統中,比如機頂盒、遊戲終端等。

2. MicroWindows/NanoX

MicroWindows是一個開源的項目,由美國Century Software公司主持開發。MicroWindows能夠在沒有任何作業系統或其他圖形系統支援的情況下運行,它能對裸裝置進行直接操作。這樣MicroWindows就顯得十分小巧,便於移植到各種硬體和軟體系統上。MicroWindows是分層設計的,這樣便於使用者按照自己的需求進行修改、刪減和增加。它分為三層:最底層是screen、mouse/touchpad和keyboard驅動程式,它們直接與顯示和輸入硬體打交道;中介層是一個可移植的圖形引擎層,它使用最底層提供的功能完成對畫線、地區填充、文本、多邊形、地區裁剪、色彩等的支援;最上層是API,提供給圖形化程式調用。目前,這些API支援Win32和NanoX介面。這樣一來,它們就與Win32和X Window視窗系統保持了相容,在這些系統間移植應用軟體就要容易得多。

該項目的主要特色在於提供了類似X的客戶/伺服器體繫結構,並提供了相對完善的圖形功能。

3. MiniGUI

MiniGui是國內的一個自由軟體項目,目前,MiniGui由北京飛漫軟體公司負責開發。MiniGui有兩個不同架構的版本。最初的MiniGui運行在PThread庫之上,這個版本適合於功能單一的嵌入式系統,但存在系統健壯性不夠的缺點。在0.9.98版本中,引入了MiniGui-Lite版本,這個版本允許在不同的進程中建立應用程式,但同時只能有一個進程運行。

MiniGui具有如下特點:

(1)微客戶/伺服器結構:因為MiniGui客戶/伺服器體系在一個進程中實現,所以稱之為微客戶/伺服器結構。在MiniGui中,有一個線程,即伺服器線程負責維護全域的視窗列表,而其他線程不能直接修改這些全域的資料結構。而是通過請求服務的模式來完成。例如,當一個線程要求案頭線程建立一個視窗時,該線程通過向案頭線程發送訊息,然後等待案頭線程的相應,由案頭線程完成請求的任務後再通知請求線程這樣一種方式來實現。

(2)多線程多視窗:MiniGui的視窗包括:主視窗、子視窗、對話方塊、控制項。MiniGui的主視窗與附屬主視窗對應於一個單獨的線程,通過函數調用可建立主視窗以及對應的線程,每個線程都有一個訊息佇列,屬於同一線程的所有主視窗從這一訊息佇列中擷取訊息並由註冊的視窗過程進行處理。

(3)訊息與訊息迴圈:MiniGui是典型的訊息驅動的系統。擁有單獨線程與訊息佇列的視窗自建立後就處於訊息迴圈中,讀取訊息佇列中的訊息並處理訊息,直到接收到特定的訊息為止。

4. OpenGUI

OpenGui在Linux系統上已經存在了很長的時間了。最初的名字叫FastGL,支援多種作業系統平台,比如MS-DOS、QNX和Linux等,不過目前只支援x86硬體平台。OpenGui也分為三層。最底層是由彙編編寫的快速圖形引擎;中介層提供了圖形繪製API,包括線條、矩形、圓弧等;第三層用C++編寫,提供了完整的GUI對象集。OpenGui比較適合於基於x86平台的即時系統,可移植性稍差,目前的發展也基本停滯。

綜上所述,面向嵌入式Linux的GUI系統已經發展了很長時間,有些已經是比較成熟的產品了,同時也得到了較為廣泛的利用,例如Qt/Embedded目前已使用到了PDA和手機產品中,Motorola公司於2003年推出的手機產品中就使用了Qt/Embedded。而MicorWindows等輕量級的GUI系統在工控機、機頂盒等產品中也得以發揮其價值。

嵌入式及3G相關資源及學習請點擊:嵌入式開發視頻 android開發視頻 android培訓 3G培訓 QT培訓 QT開發視頻 物聯網培訓 物聯網技術視頻 嵌入式學習  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.