基于MiniGUI的機車(chē)顯示終端圖形用戶(hù)界面研究
摘要:為解決當前基于DOS的機車(chē)顯示終端圖形用戶(hù)界面開(kāi)發(fā)難度大和工作量大的問(wèn)題,本文研究了基于MiniGUI的機車(chē)顯示終端的整體設計,重點(diǎn)分析了MiniGUI的裁減、移植以及基于MiniGUI的顯示終端圖形用戶(hù)界面的開(kāi)發(fā)。
關(guān)鍵詞:MiniGUI;顯示終端;Linux;圖形用戶(hù)界面
機車(chē)顯示終端是機車(chē)乘務(wù)員與機車(chē)設備之間進(jìn)行人機信息交互的主要設備。在實(shí)際運用中,顯示終端將機車(chē)的行車(chē)安全信息、故障信息和設備狀態(tài)等反映給乘務(wù)員,以便有效地指導乘務(wù)員操作,確保機車(chē)安全,減小機車(chē)故障的影響。
機車(chē)顯示終端用戶(hù)界面是機車(chē)乘務(wù)員與機車(chē)顯示終端相互交流信息的主要方式。機車(chē)乘務(wù)員對機車(chē)顯示終端的關(guān)鍵技術(shù)并不熟悉,所以要求顯示終端用戶(hù)界面必須直觀(guān)、認讀性好,且與乘務(wù)員交互性好。目前我國的機車(chē)顯示終端大多采用DOS操作系統。為了使用圖形界面,開(kāi)發(fā)工作必須從底層開(kāi)始,難度和工作量都很大。
MiniGUI是一個(gè)自由軟件項目,其目標是為基于Linux的實(shí)時(shí)嵌入式系統提供一個(gè)輕量級的圖形用戶(hù)界面支持系統。免費的MiniGUI庫文件和資源文件等可以從因特網(wǎng)上下載。在本文中,作者下載到的是其1.3.3版本。利用MiniGUI技術(shù),本文研究并開(kāi)發(fā)出以嵌入式Linux為操作系統的機車(chē)顯示終端的圖形用戶(hù)界面。
系統整體設計方案
顯示終端硬件設計
機車(chē)車(chē)載顯示終端硬件主要由研華科技PCM-9372型號的PC/104主板作為硬件平臺核心,其CPU為VIA Eden系列的處理器,與x86體系完全兼容。機車(chē)顯示終端顯示器選用SHARP公司的10寸彩色TFT液晶顯示屏。
顯示終端軟件設計
機車(chē)顯示終端軟件主要由嵌入式Linux和MiniGUI構成,并需要對Linux進(jìn)行裁減并移植到機車(chē)顯示終端的硬件平臺上。機車(chē)顯示終端圖形用戶(hù)界面程序以及有關(guān)應用程序的開(kāi)發(fā)則基于MiniGUI完成。機車(chē)顯示終端軟件結構如圖1所示。
圖1 機車(chē)顯示終端軟件結構圖
MiniGUI的裁減與移植
在開(kāi)發(fā)主機上進(jìn)行MiniGUI的配置、編譯和安裝之后,MiniGUI的體積大小為10M左右,對于嵌入式系統來(lái)說(shuō),這個(gè)體積過(guò)于龐大,必須對其進(jìn)行裁減。MiniGUI的裁減工作可利用編譯選項和修改配置文件來(lái)完成。最終,其體積可裁減到2M,滿(mǎn)足機車(chē)顯示終端嵌入式系統的要求。裁減工作具體做法如下:
(1)在編譯libminigui時(shí),使用如下配置選項:
./configure
--disable-static ;不支持靜態(tài)鏈接庫
--disable-lite ;編譯成thread版本
--disable-debug ;在應用程序調試成功后,不支持調試信息
--disable-tracemsg ;不支持跟蹤信息
--enable -flatstyle;支持平面窗口,而不是3D窗口
--disable-svgalib
;不支持svgalib引擎
--disable-libggi
;不支持libggi引擎
--enable-fblin
;16支持16bpp的FrameBuffer引擎
--enable -nativeial
;支持本地ial
這樣,編譯Libminigui時(shí)僅僅生成動(dòng)態(tài)鏈接庫,MiniGUI體積也就大大減小。
(2)修改/usr/local/etc/MiniGUI.cfg配置文件
MiniGUI.cfg中可供裁減的內容包括systemfont、truetypefonts、cursorinfo、iconinfo、bitmapinfo以及imeinfo等選項。
在裁減完成后,需要將以下文件拷貝到目標機存儲器的相應位置:
①MiniGUI的函數庫,包括libminigui、libmywins和libmgext等,還包括其他的應用程序函數庫等。
②MiniCUI的配置文件,即/usr/local/etc/MiniGUI.cfg文件。
③MiniGUI所使用的資源文件,即usr/local/lib/minigui/res。
這樣,就將裁減后的文件移植到目標機上。
基于MiniGUI的圖形用戶(hù)界面設計與開(kāi)發(fā)
機車(chē)車(chē)載顯示終端的圖形用戶(hù)界面主要完成數據的顯示、查詢(xún)和用戶(hù)輸入等功能,在設計上要求簡(jiǎn)單實(shí)用、操作方便。
MiniGUI是一種基于線(xiàn)程的窗口系統,界面控制線(xiàn)程和應用邏輯可以用不同的線(xiàn)程來(lái)完成,且線(xiàn)程相互之間通過(guò)消息來(lái)完成數據傳遞。MiniGUI使用消息驅動(dòng)作為應用程序的創(chuàng )建架構,主窗口可以單獨屬于一個(gè)線(xiàn)程,也可以附屬于其它主窗口。
本文將機車(chē)車(chē)載顯示終端正常狀態(tài)下的顯示界面設定為主窗口,MiniGUI為每個(gè)主窗口建立單獨的消息隊列,在該主窗口基礎上派生出的其它主窗口、對話(huà)框及其控件均使用同一消息隊列。在主函數MiniGUIMain中創(chuàng )建并顯示主窗口,同時(shí)建立窗口結構與窗口過(guò)程的聯(lián)系,然后從窗口管理器中獲取、翻譯并分發(fā)消息,而窗口過(guò)程則負責處理各個(gè)窗口的消息。消息可以有許多種類(lèi)型,不同類(lèi)型的消息可以完成不同的處理,如MSG_PAINT消息的處理通常用來(lái)繪制窗口,而MSG_CLOSE消息的處理則用來(lái)完成應用的結束。需要說(shuō)明的是,也可以在MiniGUIMain函數中建立其它應用線(xiàn)程。綜合上述過(guò)程,得出主界面設計流程圖如圖2所示。
圖2 主界面設計流程圖
設計完成的顯示終端主界面如圖3所示?! ?/P>
圖3 機車(chē)車(chē)載顯示終端主界面
在主界面中可以實(shí)現的工作主要包括:
(1) 刷新數據顯示:需要刷新的數據包括速度、限速、信號機編號和類(lèi)型、距信號機距離、時(shí)間等;
(2) 刷新?tīng)顟B(tài)指示顯示:包括當前色燈以及屏幕右邊的各種狀態(tài)指示;
(3) 刷新圖形顯示:根據當前的數據,畫(huà)出前方4km和后方1km的速度、限速曲線(xiàn)以及平縱斷面和道橋隧等。
(4) 機車(chē)位置顯示:主界面左側約1/5處有一條垂直分割線(xiàn),表示此處為當前機車(chē)位置。機車(chē)由一個(gè)藍色圖標表示。
其它圖形用戶(hù)界面設計中,主要利用面向對象的方法,采用對話(huà)框模板來(lái)進(jìn)行界面編程。該模板中定義了對話(huà)框本身的一些屬性,比如位置和大小,同時(shí)還定義了對話(huà)框中所有控件的初始信息,包括位置、大小、風(fēng)格等。
結語(yǔ)
本文給出了機車(chē)顯示終端的總體設計方案,針對目前基于DOS的機車(chē)顯示終端圖形用戶(hù)界面開(kāi)發(fā)難度大的狀況,研究并開(kāi)發(fā)了基于MiniGUI的機車(chē)顯示終端圖形用戶(hù)界面,為新一代的機車(chē)顯示終端軟件開(kāi)發(fā)提供了一種新思路和技術(shù)嘗試?!?BR>
參考文獻
1. 劉剛.基于MiniGUI的嵌入式瀏覽器的研究與開(kāi)發(fā).華中科技大學(xué)碩士學(xué)位論文. 2005
2. http://www.minigui.com
3.谷豐.基于Linux的機車(chē)顯示系統平臺的設計.機車(chē)電傳動(dòng),2005,1
4.魏永明.MiniGUI編程手冊.北京飛漫軟件有限公司,2003
5.魏永明.面向實(shí)時(shí)嵌入式系統的圖形用戶(hù)界面支持系統----MiniGUI編譯、安裝和配置.http://www.cn.ibm.com/developerWorks/Linux/
評論