999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式中文GUI控制平臺的設計與實現

2009-01-01 00:00:00師曉敏朱名日葛清志
計算機應用研究 2009年4期

(桂林電子科技大學 計算機與控制學院,廣西 桂林 541004)

摘 要:以自動煮糖控制系統的中文GUI控制平臺的設計與實現為例,討論了嵌入式系統中文環境的現狀,闡述了如何在嵌入式Linux系統平臺上利用QTE(QT/embedded)實現GUI控制平臺,并構建出符合應用要求的中文環境,從而大大拓寬了嵌入式系統在煮糖工業中的應用。

關鍵詞:嵌入式Linux;圖形用戶界面;QTE(QT/embedded);控制平臺;中文環境;煮糖控制

中圖分類號:TP368.1文獻標志碼:A

文章編號:1001-3695(2009)04-1435-03

Design and implementation of embedded Chinese GUI for control platform

SHI Xiao-min,ZHU Ming-ri,GE Qing-zhi

(School of Computer Control, Guilin University of Electronic Technology, Guilin Guangxi 541004, China)

Abstract:Taking the design and implementation of Chinese GUI for control platform in control system of automatic boiling sugar as an example, this paper discussed the current situation of Chinese environment for embedded system, described how to implement GUI for control platform Chinese based on QTE to set up a Chinese environment for embedded Linux platform. This would greatly broaden the embedded system applications in the boiling sugar industry.

Key words:embedded Linux; GUI; QTE(QT/embedded); control platform; Chinese environment; control of sugar boiling

0 引言 

隨著嵌入式系統在信息家電、移動通信、手持信息設備以及工業控制等眾多領域的廣泛應用,用戶對于嵌入式系統的輕量級GUI的支持以及中文環境的需求日益迫切。而嵌入式圖形用戶界面(GUI)是嵌入式實時操作系統的一個重要組成部分,作為人機交互技術的重要內容,以其豐富的圖形圖像信息、直觀的表達方式與用戶交互,被越來越多的嵌入式系統所采用,現已成為當今嵌入式領域的發展熱點之一。尤其在中國煮糖工業中,中文GUI控制平臺的設計與實現對把嵌入式設備引入煮糖控制,從而改變煮糖工業自動化程度不高的現狀,起著極為重要的意義。本文以自動煮糖控制系統的中文GUI控制平臺在嵌入式Linux和QTE下的設計與實現為例,闡述了控制平臺的設計與實現過程,并給出GUI控制平臺的中文實現。

1 系統平臺介紹

根據系統設計需求,本文的目的是實現一個嵌入式的中文GUI控制平臺。該系統使用嵌入式系統設計技術。硬件上,使用基于Samsung S3C2410A CPU的目標板,該CPU使用ARM920T內核,其主頻可達200 MHz;在軟件上,選擇嵌入式Linux為操作系統,因為它源碼開放,且穩定性與安全性較高。

整個系統軟件由引導裝載程序(vivibootloader)、設備驅動(包括幀緩存framebuffer)、嵌入式Linux內核、文件系統(yaffs)、基于QT/embedded和Qtopia的用戶圖形界面以及應用程序組成。系統平臺結構如圖1所示。

2 嵌入式Linux下GUI現狀分析及其開發環境選擇依據

2.1 嵌入Linux下GUI現狀分析

嵌入式Linux是一種流行的嵌入式系統平臺。進行嵌入式Linux開發一般有以下幾種GUI系統可供選擇:緊縮的X Window系統、MiniGUI、MicroWindows、OpenGUI、QTE(QT/embedded)等。當前嵌入式Linux的GUI正日益完善,但作為嵌入式GUI的一個重要組成部分——中文環境的支持,卻一直進展緩慢[1],重要原因之一是在Linux設計之初,并未考慮到雙字節編碼的語言環境,雖然現在國內學者進行了大量的中文平臺的研究,但這些都未能從根本上解決問題,歸根到底Linux應該像UNIX一樣向國際化與本地化標準邁進。而具體到嵌入式Linux,由于資源有限,不可能搭建傳統的如基于X Window的中文平臺。因此,利用嵌入式系統中有限的系統資源實現中文GUI平臺成為嵌入式應用中亟待解決的問題。本文選用QTE,針對如何在嵌入式Linux上實現中文GUI控制平臺進行了闡述。

2.2 選擇QT/embedded和Qtopia的依據

1)QT/embedded

QT/embedded是QT產品家族中專門面向嵌入式應用開發平臺的版本[2],是一個多平臺的C++圖形用戶界面應用程序框架。其對象容易擴展,可移植性好,支持多個GUI平臺的交互開發。QT/embedded支持任何可以運行framebuffer的嵌入式設備。而Linux內核2.2以上的版本均提供了對framebuffer的支持。通過支持framebuffer,QT/embedded降低了對運行環境資源的要求,這為它在嵌入式系統中的廣泛應用提供了良好的保障。同時,它支持Unicode編碼,支持任何語言和字符集,遵循i18n(internationalization)和l10n(localization)標準的發展路線,這都有利于國際化,從而有利于應用的中文化。因此,本設計選擇QT/embedded來開發嵌入式中文GUI控制平臺。

2)Qtopia

Qtopia是Trolltech公司為采用嵌入式Linux操作系統的設備開發的應用平臺。它提供給開發者一個面向對象的API(application programming interface)來給嵌入式設備編寫應用程序。這些API與QT/X11下API一致,因而所開發的QT應用程序可以在Qtopia平臺上運行。Qtopia平臺包括運行的嵌入設備和PC機上的軟件。可以把在PC上開發出來的軟件經過新的交叉編譯后下到嵌入式設備上運行。Qtopia平臺由Qtopia 庫(QT/E、libqpe、libqtopia1、qtopiapim)和Qtopia launcher/server組成。Qtopia launcher/server是控制窗口系統、進程間通信、發起所有應用和其他核心任務的主要服務程序。

3 GUI控制平臺的設計與實現

3.1 GUI開發過程

利用QT/embedded進行應用程序的界面開發,開發過程如圖2所示。

3.2 控制平臺功能的設計與實現

基于自動煮糖控制系統開發的GUI控制平臺界面是基于QT/embedded的用戶進程,它以窗口的形式提供給用戶一個可視化的操控平臺,從功能上主要分為三個模塊,即用戶管理界面、系統參數設置界面和波形顯示界面。控制平臺的實現過程如圖3所示。

管理員可通過用戶管理界面設定用戶名、密碼及操作權限等內容。參數設置界面提供了參數量程、通信端口設置等功能。波形顯示界面利用GUI界面的參數回放功能為用戶提供參數的可視化界面,實現了煮糖監控的圖形化顯示。系統參數設置界面提供了參數量程、通信端口設置等功能。

波形顯示界面模塊是系統控制平臺GUI的核心部分之一。顯示模塊主要針對煮糖自動控制進程中粗漿濃度、母液濃度、綜合檢測值的文件曲線顯示。所謂的文件曲線是指將系統運行參數預先保存到指定文件中,根據用戶需求隨時調用,并能以曲線形式直觀地顯示出來,從而通過與標準曲線對比或觀察圖像趨勢,確定某些性能參數,以便進行必要的校正工作。波形顯示相對GUI實現也類似于一個記錄回放進程,回放的形式由直接的數字形式轉換為曲線坐標形式。曲線坐標如圖4所示。

該部分界面設計采用雙緩沖技術,避免繪制不同顏色曲線時發生閃爍現象。實現原理是通過把整個窗口部件繪制到一個屏幕外的像素映射中,然后把這個像素映射復制到它應該在的那個窗口部件中。該部分界面設計主要包括QPainter、Qpixmap、Qrect、Qarray、Qsize等類。系統首先將需要回放的數據填滿采集緩存(MBUFF);然后當數據被DMA傳送完成后,再次讀取flash陣列中數據,將空出的采集緩存(MBUFF)填滿,當回放停止后,該進程自動結束。用戶只需選擇存有數據的文本文件,GUI后臺運作便會讀取相應數據,并將其變化趨勢顯示在圖4中。

用戶設置完各種參數后,應用程序中的GUI進程會把參數以隊列的方式通知進程接收;進程接收到消息后,一方面會把接收到的參數保存到flash中,同時也把這些參數傳給ARM控制器;控制器根據命令去做相應的算法和執行相應的動作。利用signal-slots機制實現對象間的信息傳遞。

4 中文顯示

中文顯示是設計嵌入式QT中文GUI平臺最重要的部分之一。最常用的一種是通過QT的國際化來實現中文顯示,盡量不要在程序中直接使用特殊編碼的文本。例如,要編寫中文界面的QT程序,應在程序中使用英文,程序編寫完成后,把文本提取出來翻譯。這樣,程序還可以根據Locale的不同,支持多種語言。

4.1 環境設置

在嵌入式QT下解決中文顯示問題。環境設置可以分兩步完成:

a)解決中文字體(字型)的問題。嵌入式QT可以支持TTF、PFA/PFB、BDF、QPF四種格式。其中常用的是TTF和QPF。QPF是QT/embedded專用的一種適合嵌入式應用的字體。QPF是一種相當經濟的字體存儲格式,如果把BDF轉換成QPF格式,可以節省一半以上的空間。它屬于位圖字體,不可以縮放。默認情況下QT/embedded在lib/fonts目錄下提供了一種可以顯示中文的字體庫UniFont,為QPF字體。

b)正確設置處理語系的codec引擎(編碼譯碼成Unicode)。由于嵌入式QT完整地支持Unicode編碼,處理語系的codec引擎就變得相當重要。如果缺少處理GBK的codec引擎,即便有中文字體也無能為力。同樣,中文字體的顯示也必須依靠Unicode編碼。此步的實現依靠QTE的庫編譯進對中文textcodec的支持,可通過修改qconfig-qpe.h,去掉CODEC有關的宏, 重新configure和make來實現。

由于嵌入式QT使用的字體全部使用Unicode字符編碼(現在使用的字體大多數也使用這種編碼,但是它們通常并不包括全部的Unicode字符),在進行字體轉換時還要注意一點:如果要轉換的字體不是Unicode編碼,要先將它轉換成Unicode為基礎的字體。

QTE對字體的管理是通過一個配置文件“fontdir”進行的。該文件位于$QTDIR/lib/fonts目錄下。定義了應用程序可用的字體,可通過修改fontdir文件使添加到QTE的新字體生效。當添加的字體為QPF字體時,則無須更改fontdir文件,只需把該QPF字體放在$QTDIR/lib/fonts目錄下即可被使用。

4.2 中文顯示的實現

解決中文顯示問題是一個軟件的本地化過程,是在國際化編程基礎上的一個提取翻譯信息、翻譯軟件所使用界面的語言數據的過程。標準的國際化編程分為兩個過程:

a)在程序中標注待翻譯的字符串。QT使用了類似GNU gettext的函數 QObject::tr(),它用于從QT的翻譯信息文件 *.qm中取出信息。所有在程序中用tr標注的字符串,程序在運行時都會動態提取翻譯信息進行翻譯,如在系統參數設置界面中用到的TextLabel1->setText(tr(\"setting system parameters\"))。對于絕大多數情況,可以用上述方法標注待翻譯字符串。對于一些特殊情況,方法上會有所不同,可以參考QT參考文檔中的QT國際化編程一文,這里不再贅述。

b)為程序建立翻譯信息文件,翻譯和動態加載的過程。

下面以自動煮糖控制系統中的系統參數設置界面的設計為例,說明該步實現的過程。

(a)在design.pro文件中加入TRANSLATIONS=design.ts。

(b)用lupdate 操作.pro,以提取出.ts文件供下面的lingusit工具翻譯成漢化所需要的.qm文件。命令是#lupdate design.pro。*.ts文件是翻譯源文件,它是基于XML語言描述的。通過編輯*.ts文件,已經指定了對應的翻譯信息。這一步是翻譯的過程。所謂翻譯就是把tr(\"english\")中的english提取出來,以翻譯成相應的語言,供程序加載使用。

(c)用 linguist打開design.ts文件。linguist是在QT的bin目錄下的一個界面工具。如果使用QT/E 2.3.7的版本,沒有自帶這個工具,可以在Windows下單獨下載linguist工具進行這一步。在linguist中用菜單欄file→open 打開相應的.ts文件。打開后會看到左邊是相應的類,右邊的上半部是相應的類中提取出來供翻譯的內容,下半部是要翻譯的語言的相應內容,即需要輸入中文的地方。在翻譯中,標點符號的翻譯用英文輸入狀態下的標點符號。

(d)用linguist 菜單保存翻譯好的.ts文件。用linguist界面工具中菜單file的release…,點擊彈出對話框,提示輸入.qm文件的默認文件名。按確定后在.ts文件所在的目錄下會有一個.qm后綴名的文件,這就是程序翻譯器要用到的文件。

(e)把design.qm文件copy到design目錄下。在main.cpp程序中使用剛才得到的.qm文件,方法如下:

QTranslator translator( 0 );//生成翻譯器

translator.load( \"design.qm\", \".\" );

//載入qm文件,與剛才得到的qm的文件名對應

app.installTranslator( translator );//安裝翻譯器

MyWidget m;

m.setFont(QFont(\"unifont\", 16));//設置中文字體 

app.setMainWidget( m );//將m設為當前窗口

m.show(); //將當前窗口顯示出來

程序在運行時是動態提取與源語言對應的本地語言信息并顯示在用戶界面上。設計中要在界面出來之前安裝翻譯器,否則就不能在界面中顯示翻譯后的界面。

在自動煮糖控制系統的參數設置界面設計中,使用了QT-embedded-2.3.7中的QT designer完成其GUI圖形界面的設計,選用了系統自帶的unifont字體。參數設置界面如圖5所示。

5 結束語

嵌入式產品的廣泛應用帶動了圖形用戶界面(GUI)的迅速發展。嵌入式系統需要一個高性能、高可靠的GUI的支持。基于QT/embedded的Qtopia桌面系統,為系統用戶提供了良好的使用和交互環境。該設計選擇嵌入式QT作為研究對象,以自動煮糖控制系統的中文GUI控制平臺實現為例,討論了嵌入式系統中文環境的現狀,對嵌入式QT上如何實現中文GUI控制平臺,以及相應界面的中文化進行了深入研究,從而構建了符合應用要求的中文環境,為嵌入式產品用于自動煮糖控制系統提供了有力的支持,提高了煮糖控制系統的自動化程度。筆者在基于ARMS3C2410芯片的嵌入式Linux平臺上已經成功實現了基于QTE2.3.7的中文平臺搭建。該平臺初步解決了嵌入式QT上的中文顯示問題,但是如何移植在QT4版本中新加入的漂亮的wenquanyi的unicode字體還有待進一步研究。

參考文獻:

[1]吳偉清,王磊,吳朝暉.基于QTE的嵌入式Linux中文環境解決方案[J].計算機工程,2005,31(2):31-32.

[2]倪繼利.QT及Linux操作系統窗口設計[M].北京:電子工業出版社,2006:212-220.

[3]BLANCHETTE G,SUMMERFIELD M.C++ GUI programming with QT3[M].北京:北京航空航天大學出版社,2002:177-211.

[4]李寶林,李志蜀,陳良銀,等.基于測試用例的軟件可靠性分析[J].計算機應用,2007,27(5):1254-1256.

[5]GUO Lei,HE Bo,YU Qing,et al.Visualization and printing based on QTE and embedded Linux[J].Microcomputer Information,2007,23(8):15-16.

[6]張海鵬,楊汝清,楊明.智能交通系統中的人機界面設計[J].計算機應用研究,2007,24(12):246-248.

[7]ZHAO Hong-bin,YU Dong,L I Yi-xia,et al.Design and implementation of a soft PLC system based on RTLinux[J].Mini-Micro Systems,2007,3(3): 470-473.

[8]王興杰,李允,江浩,等.基于Linux的嵌入式交叉開發技術[J].計算機應用研究,2008,25(1):206-208.

[9]麥向習,裴海龍.基于Linux及Tcl/Tk的數控系統人機界面的實現[J].計算機應用研究,2006,23(2):122-124.

主站蜘蛛池模板: 国产极品嫩模在线观看91| 国产高清免费午夜在线视频| 国产麻豆精品手机在线观看| 中文字幕乱码中文乱码51精品| 国产AV毛片| 欧洲日本亚洲中文字幕| 欧美在线一二区| 在线不卡免费视频| 亚洲,国产,日韩,综合一区| 一级看片免费视频| 国产麻豆精品久久一二三| 精品国产香蕉伊思人在线| 99久久精品美女高潮喷水| 精品国产香蕉伊思人在线| 欧美日韩北条麻妃一区二区| 亚洲色精品国产一区二区三区| 国产一区二区三区在线观看免费| 中文字幕无码电影| 女人18毛片一级毛片在线 | 国产黄色片在线看| 国产噜噜噜视频在线观看 | 丁香六月激情综合| 亚洲第一区精品日韩在线播放| 成人综合久久综合| 亚洲男人在线天堂| 试看120秒男女啪啪免费| 欧美亚洲日韩中文| 日韩在线中文| 综合五月天网| 欧美日韩免费观看| 欧美在线视频a| 久久人妻xunleige无码| 国内精品自在自线视频香蕉| 亚洲天堂视频在线播放| 精品国产免费观看| 国产农村妇女精品一二区| 九色综合视频网| 4虎影视国产在线观看精品| 亚洲美女操| 亚洲第一国产综合| 丰满人妻久久中文字幕| 97久久精品人人做人人爽| 欧美中文字幕在线视频| a天堂视频| 久久伊伊香蕉综合精品| 在线网站18禁| 国产成人精品免费视频大全五级| 久久9966精品国产免费| 一本色道久久88亚洲综合| 99人体免费视频| 国产精品视频观看裸模| 国产中文一区a级毛片视频| 欧美精品一区在线看| 国产精品99一区不卡| 97se亚洲综合| 久久免费精品琪琪| 欧美视频在线不卡| 精品无码国产一区二区三区AV| 亚洲视频欧美不卡| 91成人免费观看在线观看| 91福利在线观看视频| 18黑白丝水手服自慰喷水网站| 99热这里只有精品免费| 亚洲精品无码高潮喷水A| 国产91特黄特色A级毛片| 999国产精品永久免费视频精品久久 | 欧美伦理一区| 日韩高清欧美| 免费va国产在线观看| 日本亚洲最大的色成网站www| 国产日韩欧美视频| 日本国产在线| 激情爆乳一区二区| 久久久久九九精品影院| 特级毛片8级毛片免费观看| 婷婷色丁香综合激情| 97国产精品视频人人做人人爱| 无码网站免费观看| 热久久这里是精品6免费观看| 色婷婷天天综合在线| 国产区在线观看视频| 一区二区三区四区在线|