亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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ù)碼
        基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
        基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
        相框
        幼兒100(2021年15期)2021-05-26 06:21:54
        企業(yè)如何保護(hù)源碼
        Naim Audio Uniti Nova數(shù)碼播放/放大器一體機(jī)
        相框
        小狐貍相框
        沙灘相框
        童話世界(2018年23期)2018-08-23 09:13:12
        數(shù)碼暗房
        基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
        97久久综合精品国产丝袜长腿| 亚洲av中文无码字幕色本草| 色呦呦九九七七国产精品| 国产性自爱拍偷在在线播放| 欧美综合天天夜夜久久| 一夲道无码人妻精品一区二区| 免费看泡妞视频app| 国产精品乱一区二区三区| 最新国产成人综合在线观看 | 日本刺激视频一区二区| 男女交射视频免费观看网站| 少妇无码太爽了在线播放| 少妇被粗大的猛烈进出69影院一 | 精品无码久久久久成人漫画| 日本在线观看| 成人免费无码视频在线网站| 亚洲精品中文字幕乱码人妻| 久久精品国产亚洲av麻豆四虎| 性色av一区二区三区四区久久| 中文字幕乱码日本亚洲一区二区| av无码精品一区二区三区| 999国内精品永久免费观看| 亚洲欧洲巨乳清纯| 国产日b视频| 免费在线av一区二区| 国产精品国产三级国产av品爱 | 国产私人尤物无码不卡| 亚洲а∨精品天堂在线| 久久青草免费视频| 精品午夜中文字幕熟女| 亚洲av迷人一区二区三区| 国产精品无码av无码| 国产麻无矿码直接观看| 亚洲青青草视频在线播放| 中文字幕久久久人妻人区| 国产a√无码专区亚洲av| 极品粉嫩小泬无遮挡20p| 亚洲av不卡电影在线网址最新 | 伊人久久一区二区三区无码| 日本午夜理伦三级好看| 人妻一区二区三区av|