基于MiniGUI的數(shù)字加密電話系統(tǒng)GUI設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
在需要豐富人機(jī)交互信息的嵌入式系統(tǒng)應(yīng)用中,高精度的動(dòng)態(tài)圖像顯示非常重要。因此,嵌入式系統(tǒng)對(duì)GUI的實(shí)時(shí)性和穩(wěn)定性的要求也越來(lái)越明顯。但是,動(dòng)態(tài)圖像的抖動(dòng)和刷新延遲的問(wèn)題在嵌入式系統(tǒng)中經(jīng)常出現(xiàn),影響系統(tǒng)的顯示效果
國(guó)產(chǎn)圖形用戶(hù)界面系統(tǒng)MiniGUI提供完備的多窗口機(jī)制和類(lèi)Win32消息傳遞機(jī)制,便于實(shí)現(xiàn)多個(gè)進(jìn)程間的消息傳遞。而且具有占用內(nèi)存少、可移植性好等特點(diǎn),因此在嵌入式領(lǐng)域中被廣泛應(yīng)用。但在實(shí)際應(yīng)用中,筆者發(fā)現(xiàn)了兩個(gè)問(wèn)題:一是用MiniGUI的animation控件實(shí)現(xiàn)時(shí)出現(xiàn)動(dòng)畫(huà)抖動(dòng),二是顯示較多圖片的窗口刷新時(shí)屏幕閃爍,嚴(yán)重影響屏幕的顯示效果。為解決以上兩個(gè)問(wèn)題,本系統(tǒng)采用MiniGUI的雙緩沖技術(shù)和多張圖片交替顯示的方法,并通過(guò)實(shí)際應(yīng)用證明了該方法的有效性
1 數(shù)字加密電話系統(tǒng)架構(gòu)
1.1 硬件系統(tǒng)
數(shù)字加密電話硬件系統(tǒng)的芯片采用ATMEL公司的AT91SAM9263處理器。主頻為200 MHz,2 MB高速Data Flash、64 MB NAND Flash和64 MB SDRAM。核心板的對(duì)外接口包括鍵盤(pán)接口、LCD接口、LED接口、MODEM模塊、電話機(jī)模塊和接口、SD卡接口和USB主從接口等。如圖1所示。
1.2 軟件系統(tǒng)
操作系統(tǒng):開(kāi)放源碼的Linux操作系統(tǒng)是開(kāi)發(fā)嵌入式產(chǎn)品的首選。本系統(tǒng)采用開(kāi)放源碼的嵌入式Linux系統(tǒng)。它的內(nèi)核版本為2.6.22,是基于default_at91sam9263_config配置的
交叉編譯工具鏈:采用arm-linux-XXX。arm-linux-gcc用于交叉編譯源程序,生成執(zhí)行文件;arm-linux-strip用于去掉執(zhí)行文件中的調(diào)試信息,起到減小執(zhí)行文件大小的作用
GUI系統(tǒng):MiniGUI是國(guó)產(chǎn)的一款面向嵌入式系統(tǒng)、跨操作系統(tǒng)的輕量級(jí)國(guó)產(chǎn)高級(jí)窗口系統(tǒng)(Windowing System)和圖形用戶(hù)界面(Graphi-cal User Interface,GUI)支持系統(tǒng)。經(jīng)過(guò)10余年的發(fā)展,MiniGUI已經(jīng)發(fā)展成為比較成熟、性能優(yōu)良且功能豐富的跨操作系統(tǒng)的嵌入式圖形界面支持系統(tǒng)。MiniGUI可在Linux/μClinux、eCos、μC/OS-II、VxWorks、pSOS、ThreadX等操作系統(tǒng)以及Win32平臺(tái)上運(yùn)行,已廣泛應(yīng)用于手持信息終端、機(jī)頂盒、工業(yè)控制系統(tǒng)、便攜式多媒體播放器等產(chǎn)品中
MiniGUI支持BMP、GIF、PNG、JPEG、PCX、TGA等常見(jiàn)圖像文件和位圖、圖標(biāo)、光標(biāo)等Windows資源文件,支持多字符集和多種字體,庫(kù)文件較小且可配置。MiniGUI3.0比其之前的版本,在以下幾方面有新的發(fā)展:
①主窗口雙緩沖技術(shù),可以在自定義緩沖區(qū)中獲得整個(gè)窗口的渲染結(jié)果
②外觀渲染器技術(shù),外觀渲染器提供了多種風(fēng)格的主窗口和控件界面外觀,并且應(yīng)用程序可在幾種風(fēng)格之間動(dòng)態(tài)切換
③雙向文本顯示與輸入,增加了對(duì)阿拉伯文和希伯來(lái)文語(yǔ)言的支持,實(shí)現(xiàn)了文本的變形和重排,并提供了阿拉伯文和希伯來(lái)文鍵盤(pán)的支持
④支持不規(guī)則窗口,如圓角矩形、非矩形窗口等
⑤增加了組件mGUtilis,該組件為用戶(hù)提供了一些常用的對(duì)話框模板,便于代碼復(fù)用
⑥增加了組件msgplus,該組件是對(duì)MiniGUI圖形繪制接口的一個(gè)擴(kuò)充和增強(qiáng),主要提供對(duì)二維矢量圖形和高級(jí)圖形算法的支持
因此,MiniGUI非常適合編寫(xiě)嵌入式圖形用戶(hù)界面應(yīng)用程序。
1.3 用戶(hù)界面設(shè)計(jì)
數(shù)字加密電話系統(tǒng)需要顯示當(dāng)前的系統(tǒng)狀態(tài)和具體內(nèi)容,以此進(jìn)行系統(tǒng)與用戶(hù)之間的信息交流,因此對(duì)界面的穩(wěn)定性和實(shí)時(shí)性要求較高。本系統(tǒng)將整個(gè)屏幕分為3個(gè)區(qū)域,即狀態(tài)區(qū)域、Logo與時(shí)間顯示區(qū)域和主顯示區(qū)域,如圖2所示。狀態(tài)顯示區(qū)主要表示當(dāng)前系統(tǒng)的工作狀態(tài)和設(shè)備的狀態(tài)。比如是掛機(jī)態(tài)還是摘機(jī)態(tài),是加密還是非加密態(tài),是否插入U(xiǎn)盤(pán),當(dāng)前的數(shù)據(jù)傳輸率為多少等。不同的狀態(tài)需要用不同的圖片來(lái)顯示。從一個(gè)狀態(tài)過(guò)渡到另一個(gè)狀態(tài),需要用一個(gè)動(dòng)畫(huà)來(lái)表示。主顯示區(qū)域主要顯示表示當(dāng)前系統(tǒng)的工作情況的動(dòng)畫(huà)或文字提示。比如表示普通語(yǔ)音電話的動(dòng)畫(huà)、表示正在加密傳輸?shù)膭?dòng)畫(huà),也可以顯示其他信息,如系統(tǒng)功能選擇界面、選文件界面、日志管理界面等。Logo及時(shí)間顯示區(qū)顯示公司的Logo與當(dāng)前系統(tǒng)時(shí)間。對(duì)于本系統(tǒng)的界面設(shè)計(jì)來(lái)說(shuō),最重要的是各種動(dòng)畫(huà)的顯示要流暢。
加密電話系統(tǒng)GUI設(shè)計(jì)1' style="display: block; margin-left: auto; margin-right: auto;" />
2 實(shí)現(xiàn)GUI時(shí)存在的兩個(gè)問(wèn)題
本系統(tǒng)GUI的實(shí)現(xiàn)問(wèn)題主要是各種圖片的顯示、動(dòng)畫(huà)和選擇功能界面的實(shí)現(xiàn)。圖片的顯示方法很簡(jiǎn)單,因此,在下面只介紹動(dòng)畫(huà)和選擇功能界面的實(shí)現(xiàn)方法及存在的問(wèn)題。