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

基于Qtopia的數(shù)碼相框軟件開發(fā)

2012-07-05 07:25:44周潔
關(guān)鍵詞:嵌入式界面設(shè)置

周潔

(華東交通大學(xué)信息工程學(xué)院,江西 南昌330013)

數(shù)碼相框作為數(shù)碼相機(jī)的衍生品,近年來(lái)備受市場(chǎng)青睞。但由于一直以來(lái)在嵌入式Linux上開發(fā)系統(tǒng)軟件和應(yīng)用程序缺乏強(qiáng)大的開發(fā)環(huán)境,中低端的數(shù)碼相框產(chǎn)品無(wú)論是在支持媒體播放格式種類、功能還是圖形環(huán)境方面都有很大可改進(jìn)的空間。Qtopia的出現(xiàn)為使用嵌入式Linux作為操作系統(tǒng)的消費(fèi)電子產(chǎn)品提供了開發(fā)圖形應(yīng)用程序的便捷手段,很大程度上解決了移動(dòng)設(shè)備上開發(fā)應(yīng)用軟件的難題。研究在mini2440開發(fā)板上,通過(guò)基于Qtopia的嵌入式軟件開發(fā),實(shí)現(xiàn)了一款能使用戶有較好使用體驗(yàn)的數(shù)碼相框產(chǎn)品。

1 系統(tǒng)平臺(tái)介紹

數(shù)碼相框的硬件平臺(tái)采用友善之臂mini2440開發(fā)板。板上集成了三星主頻為400 MHz的高端微處理器S3C2440,64MB的SDRAM,128 MB的Nand Flash,2 MB的Nor Flash,以及一些常用的外設(shè)接口[1]。其中S3C2440采用ARM920T內(nèi)核,其低功耗、簡(jiǎn)單、優(yōu)雅且全靜態(tài)設(shè)計(jì)非常適用于對(duì)成本和功耗敏感型的應(yīng)用。在軟件方面,使用Linux-2.6.32.2內(nèi)核,運(yùn)行環(huán)境Fedora9,根文件系統(tǒng)為缺省安裝的文件系統(tǒng)。

整個(gè)系統(tǒng)軟件由引導(dǎo)裝載程序(U-Boot)、設(shè)備驅(qū)動(dòng)(包括幀緩沖frame buffer)、嵌入式Linux內(nèi)核、文件系統(tǒng)(YAFFS)以及基于QT/Embedded和Qtopia的應(yīng)用程序組成[2],系統(tǒng)平臺(tái)軟件結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)平臺(tái)軟件框架Fig.1 Software framework of system platform

2 Qt/Embedded和Qtopia體系結(jié)構(gòu)

目前基于嵌入式Linux的主流GUI系統(tǒng)主要包括MiniGUI、Microwindows、OpenGUI、Qt/Embedded,這些GUI在接口定義、體系結(jié)構(gòu)、功能特性存在很大差別,采取的技術(shù)路線也有所不同。MiniGUI是國(guó)內(nèi)研發(fā)的一款性能優(yōu)良、輕量級(jí)跨操作系統(tǒng)的嵌入式圖形用戶界面支持系統(tǒng),采用了可伸縮的系統(tǒng)架構(gòu),其建立在比較成熟的圖形引擎之上,如SVGALib和LibGGI,開發(fā)的重點(diǎn)在于窗口系統(tǒng)、圖形接口之上,但由于支持力量薄弱,其維護(hù)和再開發(fā)成本不可預(yù)計(jì)。MicroWindows與MiniGUI均為自由軟件,目前開發(fā)的重點(diǎn)在底層的圖形引擎之上,主要特色在于提供了類似X的客戶/服務(wù)器體系結(jié)構(gòu),它以較小的資源消耗、通用的幀緩沖技術(shù)、靈活的分層設(shè)計(jì)模式和豐富的API等特點(diǎn)獲得了廣泛的關(guān)注。由于其底層圖形引擎存在無(wú)任何硬件加速能力、算法低效、代碼質(zhì)量較差的問(wèn)題,因此在窗口系統(tǒng)和圖形接口方面的功能還比較欠缺。OpenGUI性能穩(wěn)定,最底層是用匯編實(shí)現(xiàn)的快速圖形引擎,非常適合于基于X86平臺(tái)的實(shí)時(shí)系統(tǒng)。但由于其內(nèi)部使用私有API,因此在可移植性和可配置性的表現(xiàn)較差,并且不支持多進(jìn)程[3-5]。

Qt/Embedded是Trolltech公司開發(fā)的GUI開發(fā)工具Qt的嵌入式版本。Qt/Embedded類庫(kù)完全采用C++封裝,控件資源豐富,可移植性好。由于Qt/Embedded不依賴于XServer或者Xlib,直接調(diào)用幀緩沖進(jìn)行圖形繪制,節(jié)省了大量的系統(tǒng)資源,提高了效率。

Qtopia是一個(gè)基于Qt/Embedded的類似桌面系統(tǒng)的應(yīng)用環(huán)境。作為一款面向嵌入式Linux的全方位應(yīng)用程序開發(fā)平臺(tái),Qtopia不僅提供了用于個(gè)人信息管理、辦公、娛樂(lè)、Internet網(wǎng)絡(luò)交流的應(yīng)用程序,還為嵌入式應(yīng)用程序提供了開發(fā)庫(kù)[4]。從圖2所示的Qt/Embedded體系結(jié)構(gòu)可以看出GUI系統(tǒng)的圖形庫(kù)窗口組建都是由Qt/Embedded實(shí)現(xiàn)的。Qt/Embedded作為Qtopia的基礎(chǔ)類庫(kù),為其提供了底層支持。Qtopia包含PDA和Phone兩個(gè)版本。本文所述的數(shù)碼相框應(yīng)用程序使用PDA這個(gè)版本進(jìn)行開發(fā)。

圖2 Qt/Embedded體系結(jié)構(gòu)Fig.2 Structure of Qt/Embedded system

3 Qtopia開發(fā)環(huán)境的搭建及其移植[7-9]

3.1 建立Qtopia開發(fā)環(huán)境

搭建編譯平臺(tái)是嵌入式GUI開發(fā)的必要工作。Qtopia的軟件開發(fā)環(huán)境主要包含嵌入式Linux操作系統(tǒng)、軟件開發(fā)工具鏈以及相關(guān)源碼包。本文的開發(fā)環(huán)境是在PC上安裝VMware Workstation 6.5.1和Fedora9,內(nèi)核版本為L(zhǎng)inux-2.6.32.2,采用arm-linux-gcc-4.4.3交叉編譯器,源碼包為Qtopia-free-src-2.2.0。

由于Qtopia-2.2.0已經(jīng)包含了Qt/Embedded,tmake以及QtX11,因此只要把Qtopia-2.2.0源碼包安裝好,就不需要再單獨(dú)安裝這三個(gè)包了。其中tmake為跨平臺(tái)makefile生成器,QtX11為Qt開發(fā)工具包,包括:qvfb(虛擬幀緩沖)、moc(用于Qt C++擴(kuò)展的metra-object編譯器)、uic(用戶界面編譯器)、Qt designer(圖形設(shè)計(jì)器)等。

為了對(duì)Qtopia進(jìn)行交叉編譯,需要準(zhǔn)備如下的源碼包:

e2fsprogs-1.41.6.tar.gz:提供uuid支持,文件系統(tǒng)相關(guān)的庫(kù)。

jpegsrc.v6b.tar.gz:jpeg圖形編碼解碼程序庫(kù)。

libpng-1.2.16.tar.gz:png圖形編碼解碼程序庫(kù)。

tslib-1.4.tar.gz:觸摸屏中間件,提供濾波、去抖、校準(zhǔn)等功能。

zlib-1.2.3.tar.bz2:壓縮解壓程序庫(kù)。

3.2 Qtopia-2.2.0在S3C2440上的移植

移植步驟可分為:

1)Qtopia相關(guān)庫(kù)文件的編譯安裝

建立兩個(gè)目錄分別存放交叉編譯生成的動(dòng)態(tài)鏈接庫(kù)文件和必要的頭文件。

mkdir/home/arm/lib

mkdir/home/arm/include

vim/etc/profile ;修改后需重啟才能生效

在pathmunge下一行添加

pathmunge/usr/local/arm/4.4.3/bin;交叉編譯器路徑

完成e2fsprogs、jpeg、png、tslib、zlib庫(kù)文件的交叉編譯安裝。特別要注意的是觸摸屏中間件tslib編譯時(shí)可能因?yàn)榘姹镜牟煌休^大差別,對(duì)于tslib-1.3.tar.bz2,在編譯前要根據(jù)本身觸摸屏程序的數(shù)據(jù)結(jié)構(gòu)修改defaulttseventtype變量的值,默認(rèn)為UCB1X00,使用該版本的tslib庫(kù)必須更改為H3600。而對(duì)于tslib-1.4.tar.gz版本,則不需修改,可直接在生成的配置文件ts.conf中選擇不同的數(shù)據(jù)結(jié)構(gòu)類型。

2)使用下面的configure參數(shù)配置編譯安裝Qtopia。

./configure-qte'-embedded-no-xft-qconfig qpe-depths 16,32-system-jpeg-qt-zlib-qt-libpng-gif-no-g-exceptions-no-qvfb-xplatform linux-arm-g++-tslib’-qpe‘edition pda-displaysize 240x320-fontfamilies“helvetica fixed micro smallsmooth smoothtimes unifont”-xplatform linux-arm-g++-luuid’-qt2‘-no-opengl-no-xft’-dqt‘-no-xft-thread’

設(shè)置開發(fā)板環(huán)境變量:

export QPEDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/qtopia

export QTDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/qt2

export DQTDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/dqt

export TMAKEDIR=/home/qtopia-home/nfs/arm-qtopia/qtopia-2.2.0/tmake

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$TMAKEDIR/lib:$LD_LIBRARY_PATH

3)編譯安裝成功之后,必須將所有需要的庫(kù)文件拷貝到動(dòng)態(tài)鏈接庫(kù)目錄(一般是安裝位置下面的lib目錄)。庫(kù)文件包括交叉編譯器中關(guān)于arm平臺(tái)的庫(kù)文件,之前交叉編譯安裝準(zhǔn)備的庫(kù)文件,支持Qtopia運(yùn)行的庫(kù)文件。

4)將編譯生成的Qtopia安裝文件添加到根文件系統(tǒng)中,并燒寫至mini2440開發(fā)板上即完成了Qtopia到S3C2440上的移植。

4 數(shù)碼相框應(yīng)用程序開發(fā)

4.1 Qtopia功能裁剪

當(dāng)安裝完成Qtopi-2.2.0后,已經(jīng)具備了數(shù)碼相框基本的功能,包括:圖片的瀏覽、簡(jiǎn)單的編輯、幻燈片播放圖片;音樂(lè)播放;視頻播放功能;各種界面設(shè)置功能,包括上網(wǎng)協(xié)議設(shè)置、網(wǎng)絡(luò)參數(shù)設(shè)置、數(shù)碼相框界面設(shè)置(字體、背景、主題);安全功能;音量調(diào)節(jié);屏幕亮度調(diào)節(jié);輸入方式設(shè)置。其余功能均為冗余,可以根據(jù)源碼目錄src中的general.pri進(jìn)行整體上的裁剪。方法如下:

接下來(lái)可以按自己的方式組織界面。找到源碼目錄或Qtopia安裝目錄下的apps文件夾,里面的每個(gè)文件夾對(duì)應(yīng)一個(gè)選項(xiàng)卡。在其中既可以通過(guò)建立目錄來(lái)增加選項(xiàng)卡,也可以通過(guò)刪除目錄來(lái)刪除選項(xiàng)卡。每個(gè)目錄下面的desktop文件對(duì)應(yīng)于某個(gè)選項(xiàng)卡下顯示的一個(gè)程序圖標(biāo),文件內(nèi)容為程序圖標(biāo)的設(shè)置,而隱藏文件。directory用于設(shè)置選項(xiàng)卡屬性。

數(shù)碼相框軟件系統(tǒng)包括文件列表主界面、應(yīng)用程序主界面以及各功能界面。這些功能界面包括圖片瀏覽、文件管理、音樂(lè)、視頻、網(wǎng)絡(luò)等。各界面之間的切換和按鈕關(guān)系如圖3所示。

圖3 界面切換和按鈕的關(guān)系Fig.3 Relationship between interface switching and button

4.2 支持讀取SD卡的實(shí)現(xiàn)

數(shù)碼相框作為數(shù)碼相機(jī)的衍生品,必須要支持主流的半導(dǎo)體存儲(chǔ)卡,并能從中讀取圖像文件。以SD卡作為外部存儲(chǔ)介質(zhì)。由于Linux-2.6.32.2已經(jīng)自帶了S3C2440的SD卡驅(qū)動(dòng),因此只需在初始化代碼中加入SD平臺(tái)設(shè)備結(jié)構(gòu)就可以實(shí)現(xiàn)SD卡自動(dòng)掛載。在實(shí)現(xiàn)過(guò)程,SD卡曾一度不能正確識(shí)別,啟動(dòng)時(shí)一直出現(xiàn)failed to get write protect的錯(cuò)誤。由于SD卡側(cè)面移動(dòng)的開關(guān)連接到了控制寫保護(hù)的引腳,因此有無(wú)寫保護(hù)其實(shí)就是檢查有無(wú)移動(dòng)開關(guān)。在linux-2.6.32.2/drivers/mmc/host/s3cmci.c中應(yīng)添加如下代碼:

disable_irq(host->irq); //在SDI未準(zhǔn)備好之前先屏蔽SDI的中斷功能

host->irq_state=false;

host->pdata->gpio_detect=S3C2410_GPG(8);//設(shè)置GPG8為SD卡插入拔出的檢測(cè)

host->pdata->gpio_wprotect=S3C2410_GPH(8);//設(shè)置GPH8為有無(wú)寫保護(hù)的檢測(cè)

4.3 文件管理器的實(shí)現(xiàn)

由于數(shù)碼相框的存儲(chǔ)介質(zhì)容量越來(lái)越大,必須通過(guò)有效的文件管理功能才能管理大量的文件。Qtopia-2.2.0本身不具有文件管理功能,但可以將Qtopia-1.7.0的文件管理器復(fù)制到目錄qtopia/src/applications/,在編譯工程文件qtopia/src/general.pri中添加filebrowser模塊,修改源碼使其具有搜索文件和文件夾的功能。添加搜索按鈕,并通過(guò)信號(hào)與槽函數(shù)顯示搜索界面。完成后設(shè)置好環(huán)境變量(source setQpeEnv),重新編譯安裝Qtopia即可。遞歸搜索文件及文件夾的部分關(guān)鍵代碼如下:

4.4 背景音樂(lè)的實(shí)現(xiàn)

背景音樂(lè)是通過(guò)移植madplay播放器以及相關(guān)庫(kù)文件,然后在源碼中添加相關(guān)調(diào)用和控制實(shí)現(xiàn)的。準(zhǔn)備的文件如下:

libid3tag-0.15.1b.tar.gz:MPEG音頻解碼器MAD中所捆綁的ID3標(biāo)簽操控庫(kù)

madplay-0.15.2b.tar.gz:音樂(lè)播放器主程序

libmad-0.15.1b.tar.gz:高精度MPEG音頻解碼庫(kù)

將上述文件放到madplay文件夾,并創(chuàng)建源碼目錄src-arm和安裝目錄target-arm,文件解壓至src-arm目錄,運(yùn)行安裝腳本mymadplay.sh后,通過(guò)ls命令查看到target-arm目錄下包含bin.include.lib.man.share子目錄,其中l(wèi)ib中的文件就是madplay要調(diào)用的庫(kù)。將編譯生成的庫(kù)和bin目錄下的可執(zhí)行文件復(fù)制到安裝好的Qtopia中對(duì)應(yīng)的lib、bin目錄下,然后調(diào)用可執(zhí)行程序madplay即可實(shí)現(xiàn)背景音樂(lè)的設(shè)置。

4.5 支持漢字功能的實(shí)現(xiàn)[10]

具體實(shí)現(xiàn)步驟為:

1)進(jìn)入Qtopia源碼目錄,設(shè)置好環(huán)境變量source setQpeEnv。

2)增加編譯參數(shù)/configure-languages“zh_CN”,告知系統(tǒng)增加簡(jiǎn)體中文支持。

3)make lupdate確保翻譯所必須的文件都存在而且是最新的,針對(duì)每種語(yǔ)言通過(guò)調(diào)整Qtopia的語(yǔ)言配置選項(xiàng)產(chǎn)生翻譯文件。

4)bin/nct_lupdate產(chǎn)生源代碼中無(wú)法找到的字符串的翻譯文件。

5)vim i18n/zh_CN/.directory

[Translation]

File=QtopiaI18N

Context=Chinese(MainLand)

[Desktop Entry]

Name[]=Chinese(MainLand)

make lupdate;再一次更新

cd i18n/zh_CN

6)打開翻譯窗體界面Linguist,將zh_CN目錄下所有ts文件全部翻譯并保存。在文件QtopiaDefaults.ts中,修改處,使其支持utf-8的字體格式。

7)在zh_CN目錄下執(zhí)行l(wèi)release*.ts,使每個(gè)ts文件生成對(duì)應(yīng)的qm文件供Qtopia調(diào)用,make lupdate再次更新。

8)在zh_CN目錄下面建立兩個(gè)空文件:QtopiaRingTones.ts,QtopiaThemes.ts,然后在Qtopia目錄下執(zhí)行make install,啟動(dòng)時(shí)選擇支持中文。圖4,圖5為中英文界面對(duì)照。

圖4 英文界面Fig.4 English interface

圖5 中文界面Fig.5 Chinese interface

5 結(jié)語(yǔ)

消費(fèi)電子類等嵌入式產(chǎn)品是否能讓用戶有更好的使用體驗(yàn)關(guān)鍵在于人機(jī)交互技術(shù)的體現(xiàn)。Qtopia為基于嵌入式Linux的移動(dòng)設(shè)備提供了一個(gè)很好的應(yīng)用程序開發(fā)平臺(tái),本文通過(guò)Qtopia在mini2440開發(fā)板上的移植與應(yīng)用程序設(shè)計(jì),快速開發(fā)出了一款高品質(zhì)的數(shù)碼相框圖形系統(tǒng)。

[1]廣州友善之臂計(jì)算機(jī)科技有限公司.Mini2440用戶手冊(cè)[EB/OL].(2011-04-21)[2012-01-09].http://www.arm9.net/download.asp.

[2]趙拯宇,張雪英,金剛.Qt/Embedded和 Qtopia在 OMAP5912平臺(tái)上的移植及應(yīng)用[J].儀器儀表用戶,2009,16(2):108-110.

[3]唐浩,代少升.Qt/Embedded在S3C2440平臺(tái)上的移植與開發(fā)[J].電視技術(shù),2010,34(10):32-35.

[4]周恕義,徐曉亮,李曉勇.新型嵌入式多媒體系統(tǒng)架構(gòu)[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(1):64-66.

[5]涂春萍,甘嵐,張旭.基于Linux下MiniGUI的圖像處理GUI平臺(tái)設(shè)計(jì)[J].華東交通大學(xué)學(xué)報(bào),2011,28(2):55-59.

[6]解超,李善平.基于Linux 的嵌入式GUI[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(9):135-137.

[7]孫瓊.嵌入式Linux應(yīng)用程序開發(fā)詳解[M].北京:人民郵電出版社,2006:12-20.

[8]吳嫻.基于Qtopia的嵌入式軟件開發(fā)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,28(21):5190-5192.

[9]任善全,呂強(qiáng),錢培德,等.一個(gè)基于Qt/Embedded的嵌入式Linux應(yīng)用程序的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2006,23(2):105-107.

[10]劉匯丹,芮建武,姚延棟,等.基于Qt的國(guó)際化圖形用戶界面設(shè)計(jì)與實(shí)現(xiàn)[J].中文信息學(xué)報(bào),2006,20(4):94-99.

猜你喜歡
嵌入式界面設(shè)置
中隊(duì)崗位該如何設(shè)置
國(guó)企黨委前置研究的“四個(gè)界面”
搭建基于Qt的嵌入式開發(fā)平臺(tái)
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
人機(jī)交互界面發(fā)展趨勢(shì)研究
本刊欄目設(shè)置說(shuō)明
中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
手機(jī)界面中圖形符號(hào)的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
Altera加入嵌入式視覺(jué)聯(lián)盟
主站蜘蛛池模板: 好吊日免费视频| 国产精品免费p区| 国产在线观看99| 亚洲国产日韩欧美在线| 欧美午夜网| 亚洲综合欧美在线一区在线播放| 午夜精品福利影院| 亚洲一级毛片免费看| 五月天天天色| 欧美天堂久久| 欧美特黄一级大黄录像| 国产精品手机在线观看你懂的 | 怡红院美国分院一区二区| 99re视频在线| 国产精品流白浆在线观看| 欧美国产精品不卡在线观看 | 国产一区二区三区精品久久呦| 国产区福利小视频在线观看尤物| 91色爱欧美精品www| 在线观看精品国产入口| 欧美无遮挡国产欧美另类| 99久久性生片| 中国一级特黄视频| 婷婷色狠狠干| 婷婷色婷婷| 国产农村妇女精品一二区| 一级成人a毛片免费播放| 国产精品成| 乱色熟女综合一区二区| 老熟妇喷水一区二区三区| 亚洲AV无码久久精品色欲| 亚洲天堂成人在线观看| 日本在线免费网站| 日韩在线成年视频人网站观看| 99九九成人免费视频精品| 亚洲丝袜中文字幕| 国产一级裸网站| 日韩福利在线观看| 日本精品中文字幕在线不卡| 亚洲国产综合自在线另类| 欧美国产中文| 午夜精品国产自在| h网站在线播放| 欧美激情,国产精品| 亚洲av无码人妻| 高清无码手机在线观看| 日韩欧美亚洲国产成人综合| 亚洲黄色成人| 亚洲国产中文欧美在线人成大黄瓜| 欧美曰批视频免费播放免费| 中文字幕日韩欧美| 尤物成AV人片在线观看| 99草精品视频| 国产精品尤物在线| 综合色88| 久久亚洲美女精品国产精品| 国产在线视频福利资源站| 啦啦啦网站在线观看a毛片| 午夜日本永久乱码免费播放片| 国产日韩精品一区在线不卡| 欧美一区二区三区国产精品| 国产特级毛片| 欧美综合区自拍亚洲综合天堂 | 精品国产福利在线| 中国精品久久| 亚洲一区二区三区在线视频| 欧美亚洲一二三区| 国产一区二区三区免费| 四虎影视无码永久免费观看| 亚洲欧洲日本在线| 精品国产成人三级在线观看| 色综合日本| 麻豆精选在线| 国产日产欧美精品| 99精品在线看| 亚洲福利片无码最新在线播放| 日韩天堂视频| 欧美午夜小视频| 日韩毛片免费观看| 无码专区国产精品第一页| 久久精品丝袜| 老司机午夜精品视频你懂的|