嵌入式Linux的圖形使用者界面(GUI)設(shè)計(jì)
作業(yè)系統(tǒng)從純文字界面一路進(jìn)展到光鮮亮麗得圖形外表,其中包含了無(wú)數(shù)的設(shè)計(jì)師的創(chuàng)意,當(dāng)然,也有許多截他人之長(zhǎng)補(bǔ)自己之短得案例出現(xiàn)。在嵌入式系統(tǒng)方面,由于Linux已經(jīng)是主流嵌入式架構(gòu)之一,針對(duì)這個(gè)架構(gòu)所開(kāi)發(fā)出來(lái)的嵌入式產(chǎn)品自然也要在圖形使用者界面花費(fèi)相當(dāng)大的心力。
兼顧硬體的特殊性、功能的易用性、視覺(jué)美感等要素,這些皆是嵌入式系統(tǒng)GUI設(shè)計(jì)的重點(diǎn),但是過(guò)去的圖形介面設(shè)計(jì)並沒(méi)有專(zhuān)門(mén)的設(shè)計(jì)人員來(lái)負(fù)責(zé),而多由程式設(shè)計(jì)人員或者是美工人員兼差扛起,這些人沒(méi)有接受過(guò)專(zhuān)業(yè)的人機(jī)介面設(shè)計(jì),或者是想法太過(guò)一廂情願(yuàn),無(wú)法真正切合使用者需求。甚至,部分廠商乾脆就直接抄襲國(guó)外大廠的介面設(shè)計(jì),如此不尊重專(zhuān)業(yè)的結(jié)果,就是導(dǎo)致臺(tái)灣在圖形介面設(shè)計(jì)的經(jīng)驗(yàn)累積與發(fā)展遠(yuǎn)遠(yuǎn)不及國(guó)外大廠。大陸方面其實(shí)也在走過(guò)去臺(tái)灣走過(guò)的老路, 從抄襲,轉(zhuǎn)而代工,自有設(shè)計(jì)少之又少。
設(shè)計(jì)圖形使用者介面的必要概念
在PC上的各類(lèi)圖形使用者界面的共同特點(diǎn)是以視窗管理系統(tǒng)為核心,使用鍵盤(pán)和滑鼠作為輸入設(shè)備。視窗管理系統(tǒng)除基於可重疊多視窗管理技術(shù)外,廣泛採(cǎi)用的另一核心技術(shù)是事件驅(qū)動(dòng)(Event-Driven)技術(shù)。圖形使用者界面和人機(jī)交互過(guò)程極端依賴(lài)視覺(jué)和手動(dòng)控制的參與,因此具有強(qiáng)烈的直接操作特點(diǎn)。而在嵌入式系統(tǒng)上,不同規(guī)模的硬體架構(gòu)對(duì)於圖形介面的需求也各有不同,但基本理念仍然一致,那就是作為使用者與機(jī)器的有效溝通管道。
由於目前多媒體的概念正風(fēng)行,作業(yè)系統(tǒng)與使用者溝通的方式從過(guò)去的純文字、圖形、到了現(xiàn)代,已經(jīng)轉(zhuǎn)變成動(dòng)畫(huà)、聲音甚至3D影像的結(jié)合產(chǎn)物。這些結(jié)合多媒體概念的人機(jī)介面設(shè)計(jì),在現(xiàn)代資訊產(chǎn)品中扮演著極為重要的角色,由於人類(lèi)對(duì)於訊息的感受最直接的就是視覺(jué)與聽(tīng)覺(jué),結(jié)合了兩大感官能力,可以進(jìn)一步豐富資訊內(nèi)容與使用者進(jìn)行的交互作用。至於在操作應(yīng)用方面,電視遊樂(lè)器Wii所帶來(lái)的嶄新操作方式,也可以提供我們對(duì)將來(lái)下一代作業(yè)系統(tǒng)使用者介面操作方式的另1層省思,擺脫過(guò)去滑鼠與螢?zāi)辉诓僮魃舷鄬?duì)缺乏直覺(jué)的印象,可以利用動(dòng)作感應(yīng)與螢?zāi)贿M(jìn)行最直接的互動(dòng),將來(lái)甚至也可能透過(guò)腦波控制,直接利用腦波對(duì)作業(yè)系統(tǒng)進(jìn)行操控。
使用者與機(jī)器溝通的管道與方式隨著科技的進(jìn)步而增加,但基本上,人類(lèi)在使用系統(tǒng)所提供的操作介面時(shí),大多依靠的事日常生活所提供的經(jīng)驗(yàn)來(lái)做判斷,操作介面符合人性,越能達(dá)到直覺(jué)的目標(biāo),使用者花在與機(jī)器溝通的訓(xùn)練時(shí)間就可以相對(duì)縮短,但是親易近人之後,也要注意依照此方式所設(shè)計(jì)出來(lái)的操作介面是否擁有足夠的深度,能夠充分發(fā)揮硬體設(shè)備本身的能力,因?yàn)橐恢滦允欠浅V匾脑O(shè)計(jì)原則,為了要使用到更進(jìn)階的硬體機(jī)能就必須呼叫出不同的使用者介面的話,那麼這樣的設(shè)計(jì)就無(wú)法維持其一致性,雖然可以應(yīng)用到更完整的系統(tǒng)能力,但基本上並不能稱(chēng)為1款成功的使用者圖形介面。
作業(yè)系統(tǒng)的使用者介面發(fā)展
嚴(yán)格來(lái)說(shuō),真正將圖形化使用者介面帶入一般資訊應(yīng)用的,乃是Apple公司,諸如收拉式選單、圖示、拖拉操作以及點(diǎn)擊執(zhí)行等概念,都是早在1980年代時(shí)就由該公司所開(kāi)發(fā)構(gòu)思出來(lái)的,其後Apple公司也持續(xù)在圖形操作領(lǐng)域有非常多的進(jìn)展,諸如微軟、Linux等都只不過(guò)是這股風(fēng)潮之下的追隨者,其中微軟算是在作業(yè)系統(tǒng)操作介面中,參考Apple公司最徹底的1家,從早先的Windows 3.x,到目前最新的Vista,處處都可以看到Apple公司作業(yè)系統(tǒng)的影子在。
隨著嵌入式系統(tǒng)的發(fā)展,使用者也越來(lái)越注重裝置上的操作簡(jiǎn)易性,在消費(fèi)型行動(dòng)設(shè)備上,美觀更是成為視覺(jué)操作介面的設(shè)計(jì)要點(diǎn)之一,各家行動(dòng)設(shè)備廠商在美感的發(fā)揮程度上各有不同,但是基本上都還是依循的既有的模式,比如說(shuō)在手機(jī)介面設(shè)計(jì)上,常見(jiàn)的9宮格甚至12宮格操作模式就成為各主流手機(jī)介面的標(biāo)準(zhǔn)樣版,收放式選單、圖示以及超連結(jié)的概念也被徹底的實(shí)行。
臺(tái)灣的代工思維 無(wú)法創(chuàng)造出像Apple公司產(chǎn)品的使用者介面
要在嵌入式系統(tǒng)的有限資源中做繁複的圖形介面設(shè)計(jì)是一件非常不容易的事情,有時(shí)開(kāi)發(fā)者為了省時(shí)省事,就只能建議專(zhuān)案領(lǐng)導(dǎo)者以實(shí)用為主,避免太多花俏的設(shè)計(jì)。不過(guò)創(chuàng)意依然是使用者介面設(shè)計(jì)上的最重要元素之一,就以Apple公司的iPhone及過(guò)去的iPod為例,其實(shí)在技術(shù)層面上非常的簡(jiǎn)易,都只是現(xiàn)有技術(shù)的整合而已,但是為何臺(tái)灣設(shè)計(jì)者辦不到?為何臺(tái)灣著名的手機(jī)產(chǎn)業(yè)及相關(guān)手持式裝置也都只能沿用公版介面或只能沿襲舊有操作習(xí)慣?教育是問(wèn)題之一,但主事者的態(tài)度也是關(guān)鍵,臺(tái)灣並不缺乏這方面的設(shè)計(jì)人才,缺乏的只是宏觀的態(tài)度以及長(zhǎng)久的遠(yuǎn)見(jiàn)。
由於硬體不斷的發(fā)展與更新,因此未來(lái)的嵌入式系統(tǒng)在使用者介面的設(shè)計(jì)上還是有非常大的發(fā)展空間,國(guó)內(nèi)廠商若能好好的把握這塊市場(chǎng)機(jī)會(huì),積極培養(yǎng)人才,並且尊重專(zhuān)業(yè),臺(tái)灣便有機(jī)會(huì)可以脫離代工產(chǎn)業(yè)流血砍價(jià)拼規(guī)模的惡性循環(huán),衝出紅海的陰影,另闢一番藍(lán)海新天地。
嵌入式Linux的應(yīng)用方興未艾
嵌入式系統(tǒng)正以它體積小、專(zhuān)用性等特點(diǎn)深入社會(huì)應(yīng)用的各個(gè)層次。在此領(lǐng)域中,嵌入式Linux在開(kāi)發(fā)活力上,以及技術(shù)深度,可以說(shuō)是目前嵌入式技術(shù)領(lǐng)域的領(lǐng)導(dǎo)者之一,除了有各大半導(dǎo)體、伺服器端、終端硬體設(shè)備廠商的支援以外,在開(kāi)發(fā)難易度上,也因?yàn)榫邆淞朔浅XS富的支援文件及社團(tuán)資源,且作業(yè)系統(tǒng)本身不需授權(quán)費(fèi)用,或授權(quán)費(fèi)用相對(duì)低廉(端視不同廠商的授權(quán)方式),成本更顯低廉,因此被嵌入式硬體廠商廣泛採(cǎi)用。
在特定嵌入式應(yīng)用領(lǐng)域中,比如PDA、智慧型手機(jī)、UMPC、工控電腦等嵌入式架構(gòu)中,嵌入式Linux的圖形使用者界面的性能將直接影響整個(gè)系統(tǒng)的操作感受與流暢度,因此產(chǎn)品製造商和最終使用者。如何針對(duì)使用者的需求,在已有的圖形使用者界面上,訂製和改進(jìn)出具有特定功能的圖形使用者界面,是嵌入式系統(tǒng)開(kāi)發(fā)者共同關(guān)注的問(wèn)題。
嵌入式Linux圖形使用者界面的分類(lèi)
嵌入式系統(tǒng)往往是非常特化的硬體設(shè)備,針對(duì)不同的應(yīng)用,因此對(duì)圖形使用者界面的需求也會(huì)有所不同。有的系統(tǒng)只要求簡(jiǎn)單的圖形功能,而有些系統(tǒng)要求完備的GUI能力支援。因此很多嵌入式系統(tǒng)需要自行定製的嵌入式圖形使用者界面。以下是幾種常用的嵌入式圖形使用者界面及技術(shù)特性:
■MiniGUI
圖說(shuō):利用MiniGUI所設(shè)計(jì)出來(lái)的手機(jī)操作介面。(資料來(lái)源:www.linuxdevices.com)
MiniGUI是在Linux控制臺(tái)上執(zhí)行基於SVGALib和LinuxThread6函式庫(kù)的多視窗圖形使用者界面支援系統(tǒng)。MiniGUI 採(cǎi)用了類(lèi)似Win32的API,實(shí)現(xiàn)了簡(jiǎn)化的類(lèi)似微軟視窗風(fēng)格的圖形使用者界面。 MiniGUI也是1個(gè)視窗系統(tǒng),它的主要組成元素是視窗,在這個(gè)基礎(chǔ)上MiniGUI中的視窗可以基本分四類(lèi),分別為主視窗、對(duì)話框、控制元件和主視窗中的片段。
MiniGUI中的主視窗和Windows應(yīng)用程式的主視窗概念類(lèi)似,MiniGUI中的每個(gè)主視窗對(duì)應(yīng)於一個(gè)單獨(dú)的執(zhí)行緒,通過(guò)函式庫(kù)存取可建立主視窗以及對(duì)應(yīng)的執(zhí)行緒。每個(gè)執(zhí)行緒有一個(gè)訊息佇列,主視窗從這一訊息佇列中獲取消息並由視窗過(guò)程(回調(diào)函數(shù))進(jìn)行處理。MiniGUI的目標(biāo)是保持現(xiàn)有體積小巧的前提下,在Linux控制臺(tái)上提供1個(gè)迷你視窗系統(tǒng)支援。〝輕薄短小〞是MiniGUI的最大特色。同時(shí)MiniGUI又將盡力與微軟的 MSWindows API保持相容。這麼定位是希望MiniGUI可以在未來(lái)以Linux 為基礎(chǔ)的應(yīng)用平臺(tái)上,提供一個(gè)簡(jiǎn)單可行的 GUI 支援系統(tǒng),讓MiniGUI 可以應(yīng)用在Windows CE系統(tǒng)可以應(yīng)用的任何場(chǎng)合。
■Microwindows/Nano-X Windows System
圖說(shuō):利用Microwindows所設(shè)計(jì)出來(lái)的GUI介面。(資料來(lái)源:www.devdrv.co.jp)
Microwindows (已改名為Nano-X Windows System)是1個(gè)開(kāi)放原始碼的自由軟體項(xiàng)目,最初是由臺(tái)灣人所發(fā)展,支援多種平臺(tái)。該項(xiàng)目的開(kāi)發(fā)相當(dāng)活躍,大陸也有人參與了其中的開(kāi)發(fā),並增加了GB2312等字元編碼的支援。Microwindows的主要特色在於提供了相當(dāng)完善的圖形功能,包括如 Alpha 混合,3D支援,TrueType 字體支援等高級(jí)的功能。使得那些只有在具有大容量硬碟和記憶體配置的高階Windows系統(tǒng)才能實(shí)現(xiàn)的視窗環(huán)境,如Microsoft Windows和X2Windows,可以在嵌入式設(shè)備上順利運(yùn)作。
Microwindows從原理上採(cǎi)用分層設(shè)計(jì)的方法,每層次完成特定的功能,並且能夠在不影響其它層次的基礎(chǔ)上針對(duì)不同的應(yīng)用進(jìn)行改編或者重寫(xiě)。在最底層方面,顯示螢?zāi)?、滑鼠、觸控螢?zāi)坏鹊尿?qū)動(dòng)程式提供了與交互相關(guān)的硬體設(shè)備的存?。恢虚g層是1個(gè)精簡(jiǎn)的圖形引擎,提供了劃線、區(qū)塊填充、多邊形等多種基本的圖形功能;最上層為圖形應(yīng)用程式提供了豐富的介面函式庫(kù)(API),透過(guò)這些函式庫(kù)可以自訂桌面和視窗的外觀。目前Microwindows提供2套API,以便能夠更好地適應(yīng)不同平臺(tái)應(yīng)用程序的移植,即 與Win32/Win CE基本兼容的API以及採(cǎi)用X體系的Nano-X API。
設(shè)備驅(qū)動(dòng)程序的介面定義在device.h文件中。中間層所提供與設(shè)備無(wú)關(guān)的圖形引擎就是透過(guò)存取設(shè)備驅(qū)動(dòng)程式跟硬體設(shè)備進(jìn)行溝通。這就保證了當(dāng)平臺(tái)硬體設(shè)備發(fā)生變化的時(shí)候,只需要改寫(xiě)相對(duì)應(yīng)的驅(qū)動(dòng)程式,而無(wú)需修改上層程式碼,簡(jiǎn)化了開(kāi)發(fā)的流程。icrowindows提供基於Linux2.4.X內(nèi)核的 FrameBuffer設(shè)備驅(qū)動(dòng)程式。FrameBuffer在Linux系統(tǒng)中透過(guò)/dev/fb0設(shè)備檔案進(jìn)行工作,利用mmap()系統(tǒng)函式將顯示換衝記憶體映射至系統(tǒng)記憶體中。
Microwindows 能夠在沒(méi)有任何作業(yè)系統(tǒng)或其他圖形系統(tǒng)的支援下運(yùn)行,並且具有對(duì)無(wú)顯示設(shè)備進(jìn)行直接操作的能力。雖然擁有WIN32相容API,便於熟悉Windows開(kāi)發(fā)的使用者進(jìn)行開(kāi)發(fā),不過(guò)介面仍不夠完善。
■OpenGUI
圖說(shuō):OpenGUI的系統(tǒng)架構(gòu)。(資料來(lái)源:www.tutok.sk)
OpenGUI基於使用組合語(yǔ)言實(shí)現(xiàn)的x86圖形核心,提供了一個(gè)高階的C/C++圖形/視窗介面。它和MiniGUI一樣,也是使用LGPL授權(quán)方式。OpenGUI提供了2D繪圖架構(gòu),訊息驅(qū)動(dòng)的API、BMP檔案格式支援。OpenGUI功能強(qiáng)大、使用方便。使用者甚至可以實(shí)現(xiàn)Borland BGI風(fēng)格的應(yīng)用程式,或者是QT風(fēng)格的視窗。OpenGUI支援滑鼠和鍵盤(pán)的事件。在Linux上基於Framebuffer3或者SVGALib4實(shí) 現(xiàn)繪圖。Linux下OpenGUI也支援Mesa3D,支援真實(shí)的3D成像效果。在顏色數(shù)量方面,OpenGUI已經(jīng)支援8、16、32位元色深。
由於其基於組合語(yǔ)言實(shí)現(xiàn)的核心架構(gòu),並利用多媒體加速指令集進(jìn)行最佳化,因此OpenGUI運(yùn)行速度非???,除了可以支援32位元的機(jī)器,能夠在MS- DOS,QNX5和Linux下執(zhí)行,目前OpenGUI主要用來(lái)在這些系統(tǒng)中開(kāi)發(fā)圖形應(yīng)用程式和遊戲。雖然OpenGUI非常穩(wěn)定,但可移植性因?yàn)槠浜诵哪耸鞘褂媒M合語(yǔ)言實(shí)作的關(guān)係,而會(huì)受到影響。
■QT/Embedded(已改名為Qtopia Core)
圖說(shuō):QT/Embedded的系統(tǒng)架構(gòu)。(資料來(lái)源:www.tutok.sk)
Qt/Embedded是Trolltech公司的另一個(gè)產(chǎn)品,Qt也是流行的Linux桌面環(huán)境KDE 的基礎(chǔ),KDE是所有主要的Linux發(fā)行版的一個(gè)標(biāo)準(zhǔn)組件。自從1996年起,Qt開(kāi)始進(jìn)入商業(yè)應(yīng)用領(lǐng)域,並且成為全世界數(shù)千種成功的應(yīng)用程式的視覺(jué)外觀基礎(chǔ)。雖然走Open Source開(kāi)發(fā)路線,採(cǎi)用GPL授權(quán),但商業(yè)應(yīng)用的話就必需要支付授權(quán)費(fèi)。2005年年初,Trolltech 在大陸北京成立研發(fā)據(jù)點(diǎn),在亞洲語(yǔ)系方面的支援會(huì)有相當(dāng)大的突破,Trolltech 還是秉持雙授權(quán)(dual-licensing)與社團(tuán)推廣(community-promoting) 的機(jī)制,持續(xù)以 GPL/QPL 釋出最新的Qt技術(shù),並且累積加值服務(wù),算是業(yè)界相當(dāng)優(yōu)秀的長(zhǎng)久經(jīng)營(yíng)典範(fàn)。Qt/Embedded是Qt的嵌入式Linux介面,是完整內(nèi)建C++GUI和基於 Linux的嵌入式平臺(tái)開(kāi)發(fā)工具。
由於Qt/Embedded 並不是只針對(duì)嵌入式裝置而設(shè)計(jì)的,Qt/Embedded是來(lái)自桌上版本 (UNIX/X11、Windows,與 MacOS X 等平臺(tái))Qt圖形介面的簡(jiǎn)化與移植。因此,開(kāi)發(fā)者可以持續(xù)利用開(kāi)發(fā)桌面應(yīng)用程式的經(jīng)驗(yàn),來(lái)進(jìn)行嵌入式應(yīng)用程式開(kāi)發(fā),開(kāi)發(fā)者不必重新學(xué)習(xí)一套新的 API,也不需要適應(yīng)新的程式設(shè)計(jì)技巧。不過(guò)這並不是說(shuō)原本桌面應(yīng)用程式可以直接套用到到相對(duì)精簡(jiǎn)的嵌入式裝置上。事實(shí)上,手持式裝置對(duì)於螢?zāi)怀叽?、圖示的拖放執(zhí)行,與記憶體資源都與桌上行系統(tǒng)有著相當(dāng)程度的需求差異。不過(guò),Qt 與Qt/Embedded 在基本的 API 上都是一致的。
由於針對(duì)大範(fàn)圍的應(yīng)用,Qt/Embedded API的設(shè)備開(kāi)發(fā)非常廣泛。Qt/Embedded可以開(kāi)發(fā)市場(chǎng)上多種類(lèi)型的產(chǎn)品和設(shè)備,從消費(fèi)性電子(智慧型手機(jī)、網(wǎng)路終端和set-top box)到工業(yè)控制設(shè)備(如醫(yī)學(xué)成像設(shè)備、行動(dòng)訊息系統(tǒng)等)等等,都在其支援之列。這套環(huán)境提供的API和Qt/Windows與Qt/X11相同,但不需要使用到X11,取而代之的提供從硬體介面、繪圖函式庫(kù)以及完整的GUI工具。Qt/Embedded對(duì)儲(chǔ)存記憶體的需求約在800kB到3MB(x86處理器環(huán)境下)左右。其另一個(gè)特點(diǎn)就是跨平臺(tái),用Qt API開(kāi)發(fā)出來(lái)的應(yīng)用程式,可以在不同的作業(yè)系統(tǒng)和視窗系統(tǒng)上執(zhí)行。
隨著嵌入式處理器運(yùn)算能力的不斷提高,對(duì)外接設(shè)備的支援的不斷發(fā)展,嵌入式Linux系統(tǒng)的應(yīng)用也逐漸增多。Qt/Embedded延續(xù)了Qt在桌面系統(tǒng)的所有功能以外,豐富的API函式庫(kù)支援以及完整的程式編譯模型使得嵌入式Linux系統(tǒng)中的應(yīng)用程序開(kāi)發(fā)更加便捷。不過(guò)由於Qt/Embedded過(guò)於完整,在記憶體佔(zhàn)用空間方面就很難下降,因此對(duì)於嵌入式裝置的硬體要求也會(huì)更高。
作者:林宗輝/DIGITIMES linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論