![基于嵌入式系統(tǒng)的數(shù)字相框設(shè)計大學(xué)課程設(shè)計說明書_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/504a6a09-f18b-4cee-b006-036b77415e92/504a6a09-f18b-4cee-b006-036b77415e921.gif)
![基于嵌入式系統(tǒng)的數(shù)字相框設(shè)計大學(xué)課程設(shè)計說明書_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/504a6a09-f18b-4cee-b006-036b77415e92/504a6a09-f18b-4cee-b006-036b77415e922.gif)
![基于嵌入式系統(tǒng)的數(shù)字相框設(shè)計大學(xué)課程設(shè)計說明書_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/504a6a09-f18b-4cee-b006-036b77415e92/504a6a09-f18b-4cee-b006-036b77415e923.gif)
![基于嵌入式系統(tǒng)的數(shù)字相框設(shè)計大學(xué)課程設(shè)計說明書_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/504a6a09-f18b-4cee-b006-036b77415e92/504a6a09-f18b-4cee-b006-036b77415e924.gif)
![基于嵌入式系統(tǒng)的數(shù)字相框設(shè)計大學(xué)課程設(shè)計說明書_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/8/504a6a09-f18b-4cee-b006-036b77415e92/504a6a09-f18b-4cee-b006-036b77415e925.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、長 春 大 學(xué)課 程 設(shè) 計 說 明 書題目名稱 基于嵌入式系統(tǒng)的數(shù)字相框設(shè)計 院(系) 計算機(jī)科學(xué)技術(shù)學(xué)院 專業(yè)(班級) 軟件 10407 學(xué)生姓名 王雅楠(03) 劉陽(19) 廖泉亮(15) 李凱(25) 王志廷(28) 劉福強(29) 尹雙霞(02) 李鐵成(23) 指導(dǎo)教師 李 念 峰 起止日期 2013-6-24至2013-7-14 裝訂線長 春 大 學(xué) 課程設(shè)計紙目錄目 錄錯誤!未定義書簽。一 設(shè)計目的錯誤!未定義書簽。二 設(shè)計內(nèi)容錯誤!未定義書簽。三 設(shè)計要求錯誤!未定義書簽。四 設(shè)計過程錯誤!未定義書簽。1 設(shè)計原理錯誤!未定義書簽。2 程序結(jié)構(gòu)分析錯誤!未定義書簽。3 功能
2、實現(xiàn)錯誤!未定義書簽。五 系統(tǒng)測試錯誤!未定義書簽。1 測試目的錯誤!未定義書簽。2 測試條件錯誤!未定義書簽。3 測試方法 錯誤!未定義書簽。六 設(shè)計心得錯誤!未定義書簽。參考文獻(xiàn)錯誤!未定義書簽。附錄錯誤!未定義書簽。一、設(shè)計題目 基于嵌入式系統(tǒng)的數(shù)字相框設(shè)計二、設(shè)計目的開設(shè)本課程設(shè)計的目的是,通過本課程設(shè)計,提高學(xué)生的分析問題、解決問題的能力,鞏固嵌入式系統(tǒng)的基本理論知識,進(jìn)一步了解和掌握課程中所講授的概念,方法。同時通過本課程設(shè)計,全面綜合應(yīng)用所學(xué)過的基礎(chǔ)知識,建立一個完整的嵌入式系統(tǒng)的開發(fā)過程的概念,并掌握其中的主要原理和方法,對已學(xué)過的嵌入式開發(fā)知識進(jìn)行綜合運用。本課程設(shè)計的目的是
3、通過開發(fā)一個消費類電子產(chǎn)品數(shù)字相框,了解嵌入式產(chǎn)品開發(fā)的主要步驟,包括需求分析、系統(tǒng)結(jié)構(gòu)設(shè)計、圖形界面設(shè)計、驅(qū)動程序、功能優(yōu)化、系統(tǒng)測試等,從而培養(yǎng)學(xué)生獨立完成比較復(fù)雜的實際系統(tǒng)設(shè)計的能力。三、設(shè)計任務(wù)作為一個消費類電子產(chǎn)品,數(shù)碼相框整個系統(tǒng)要完成的基本功能大致如下:1、用戶界面友好,操作簡便。由于該產(chǎn)品的使用者大多是非專業(yè)人士,用戶界面是否清晰明了、操作是否簡捷方便成為用戶是否能迅速接受此產(chǎn)品的重要因素。2、數(shù)字相框的功能應(yīng)包括以下方面:(1)在lcd屏上全屏循環(huán)顯示多幅圖像文件;(2)人機(jī)交互界面設(shè)定各個模式的播放形式、輸入信息(2)支持觸摸屏換頁功能;(3)支持在瀏覽圖片的同時播放背景音
4、樂 (4)支持jpeg格式的圖片及wav格式的音樂 (5)支持圖片特效切換功能四、設(shè)計過程1、設(shè)計原理數(shù)字相框,也稱為數(shù)碼相框,其基本原理:外觀采用普通相框的造型,把原來相框中間的照片部分換成液晶顯示屏,配上電源,存儲介質(zhì)等,可以直接播放數(shù)碼照片,使得一個相框內(nèi)可以循環(huán)播放照片,比普通相框的單一功能更有優(yōu)勢。性能方面,由于數(shù)字圖像的解碼算法比較復(fù)雜,而且大量圖片需要從外部flash存儲器中讀取,所以對嵌入式微處理器的性能要求比較高。外部接口方面,該芯片最好能在外圍直接支持cf卡的compact flash接口,還應(yīng)提供按鈕、lcd顯示屏、觸摸屏、聲音輸出通道等。在本課程設(shè)計中,采用了intel
5、的pxa270作為微處理器,完全能滿足上述硬件平臺的要求。數(shù)字相框軟件系統(tǒng)功能可以劃分為五個模塊:(1)圖片瀏覽模塊,可以通過按鍵控制選定某個圖像或更新圖像頁(上一頁、下一頁)。單擊按鈕時,主線程接收信號并傳遞給次線程,次線程根據(jù)信號給出相應(yīng)的動作:顯示上一頁或下一頁的內(nèi)容。每一頁中放置圖片。當(dāng)?shù)竭_(dá)最后一頁以后,不能立即返回到首頁,在首頁中,也不能立即到達(dá)最后一頁。(2)播放模塊,對瀏覽界面選定的圖片進(jìn)行循環(huán)播放。按鈕區(qū)域創(chuàng)建進(jìn)程運行預(yù)覽模塊,右擊退出返回到主菜單,退出時將進(jìn)程殺死,釋放內(nèi)存空間。(3)系統(tǒng)設(shè)置模塊,可設(shè)置循環(huán)播放更換頻率等。(4)音樂模塊,播放,關(guān)閉,音量大小。右擊并不退出音
6、樂,只有單擊關(guān)閉按鈕才會關(guān)閉音樂。2程序結(jié)構(gòu)分析(1)整體結(jié)構(gòu)設(shè)計:根據(jù)以上的功能要求,程序的模塊劃分和功能分析如下圖所示:開始開機(jī)界面主菜單圖片瀏覽擴(kuò)展功能退出模塊音樂模塊主題更改顯示時間 圖1總體功能模塊圖(2) 圖片瀏覽模塊:主要有四個部分組成的,瀏覽上一張圖片,下一張圖片,擴(kuò)放圖片,以及縮小圖片。此模塊的功能是圖片的顯示。在此模塊中建立顯卡與內(nèi)存的映射,實現(xiàn)圖片顯示,在顯示的過程中還需要實現(xiàn)圖片的預(yù)覽,這就需要擁有圖片的縮放功能。為了加強圖片顯示的美感,在此模塊中,我們還設(shè)計了多種圖片顯示的特效。還要實現(xiàn)進(jìn)程間的通信,獲取其他進(jìn)程發(fā)送來的信號,并執(zhí)行相應(yīng)操作。圖片瀏覽模塊擴(kuò)放圖片縮小圖
7、片下一張圖片上一張圖片 圖2圖片瀏覽模塊(3)音樂模塊:在瀏覽優(yōu)美的圖片時,還可以聽到動聽的音樂。播放,暫停。這個模塊的主要功能就是在整個程序運行的過程中進(jìn)行音樂的播放。此模塊對于我們來說比較陌生,具有一定的難度,不過我們會盡最大努力將它設(shè)計成功,讓數(shù)碼相框在圖片顯示的同時配上優(yōu)美的音樂。音樂模塊返回主界面播放列表右擊播放所選歌曲選擇下一首選擇上一首 圖3音樂播放流程圖3功能實現(xiàn)(1)開發(fā)工具的選擇:本課程設(shè)計采用嵌入式linux作為軟件開發(fā)平臺。在linux操作系統(tǒng)平臺上有多種嵌入式圖形界面開發(fā)工具可供使用,主要包括microwindows、munigui、tinyx和qt/embedded
8、等幾種。本課程設(shè)計將集中討論在qt/embedded系統(tǒng)上數(shù)字相框的實現(xiàn)技術(shù)。操作系統(tǒng):ubuntu9.10 qt creator.qt/embeded界面介紹: 當(dāng)前嵌入式linux在手機(jī)、pad等手持信息設(shè)備領(lǐng)域的應(yīng)用十分廣泛。各種手持設(shè)備是否擁有圖形用戶辦(gui)已經(jīng)成為其人機(jī)交互技術(shù)的關(guān)鍵體現(xiàn),所以一個十分友好的圖形用戶界面(gui)是必不可少的。由于嵌入式系統(tǒng)硬件本身的多樣性,嵌入式gui應(yīng)具備高度可移植性與可裁減性。(2)文件管理 共使用四個文件夾 image:用于存放所有要演示的圖片 freetype-2.3.11:用于存放處理文字所需的工具 jpeg-8:用于存放處理圖片所需
9、的工具 src:用于存放我們編寫的各種函數(shù)。如:特效函數(shù),主函數(shù),makefile函數(shù)等。(3)圖片顯示:設(shè)置圖片不透明:effect.cppeffect:effect() seteffecttype("opacity"); setstartvalue(1.0); setendvalue(1.0); setduration(10); setdirection(qabstractanimation:forward); m_easingcurve=qeasingcurve:linear;設(shè)置圖片預(yù)覽的時間:int sequencemodel:duration()(4)wav音樂
10、: soundengine.cppvoid slideshowengine:startsound() qsound bells(“g:/he.wav”);bells.play(); (5)圖片的特效播放:直接畫圖,int draw_jpeg0(fb_info fb_inf,u32_t *buf32, char *filename);百葉窗,int draw_jpeg4(fb_info fb_inf,u32_t *buf32, char *filename); 四周到中間,int draw_jpeg8(fb_info fb_inf,u32_t *buf32, char *filename);首先
11、設(shè)置第一個圖片的enter effect 的屬性: rotation forward outinquad 開始坐標(biāo)和結(jié)束坐標(biāo)都為0。display effect 的屬性: scale forward outinquad start val的值為6。duration的值為3000。exit effect的屬性為:pos forward inoutquad 其中的所有坐標(biāo)都為0;設(shè)置第二個圖片的enter effect 的屬性: rotation forward outinquad 開始坐標(biāo)和結(jié)束坐標(biāo)都為0,duration 為500。display effect 的屬性: rotation fo
12、rward outinquad end val的值為360。duration的值為4000。exit effect的屬性為:pos forward inoutquad 其中的所有坐標(biāo)都為0;設(shè)置第三張圖片的屬性值:pos forward outinquad .end point f 為600,600.end val 值為650 duration 值為3500。display effect 的值為:opacity forward outquad 值都為0.exit effect 屬性的值為:pos forward outquad 值為0.設(shè)置第四張圖片的屬性值:enter effect 屬性的值
13、:pos forward linear duiation的值為500.display effect的屬性值為:pos forward incubic end val的值為650.duiation的值為3700.exit effect的屬性值為:pos forward outquad 值都為0。(6)停止圖片的播放:void slideshowengine:stop() m_currentstate=stopped; endofslideshow();(7)設(shè)置圖片的屬性: <1>duration圖片顯示的時間:int sequencemodel:duration() node it
14、emnode; int totaltime=0; for(int i=0; i<rowcount();i+) itemnode=m_sequence.at(i); totaltime+=itemnode.entereffect().duration(); totaltime+=itemnode.displayeffect().duration(); totaltime+=itemnode.exiteffect().duration(); return totaltime;<2>插入圖片:insertrowbool sequencemodel:insertrow (int ro
15、w, const qmodelindex &parent) q_unused(parent); begininsertrows(qmodelindex(), row, row +1); node item; m_sequence.append(item); setmodified(true); endinsertrows(); return true;<3> 圖片的保存:void sequencemodel:save(const qstring &filename) / queste sono operazioni lunghe. ci vuole una prog
16、ress bar qfile file(filename); if(!file.open(qiodevice:writeonly) qdebug() << tr("cannot open file for writing: ") << qprintable(file.errorstring() << endl; return;(8)u-boot的移植 <1>建立工作目錄 下載源碼uboot的源碼:u-boot-2009.11.tar.bz2 #mkdir/root/build_uboot #cd/root/build_uboo
17、t把下載的源碼拷貝到該目錄,解壓:并把解壓后目錄更名為u-boot#tar jxvf u-boot-2009.11.tar.bz2#mv u-boot-2009.11 u-boot創(chuàng)建主代碼 復(fù)制board/samsung/smdk2410 目錄為board/samsung/gec2440#cp arf board/samsung/smdk2410 board/samsung/gec2440并修改目錄下的makefile將cobjs:=smdk2410.o.flash.o 修改為cobjs:=gec2440.o.flash.o復(fù)制include/config/smdk2410.h為includ
18、e/config/gec2440.h #cp include/config/smdk2410.h include/config/gec2440修改頂層makefile: 創(chuàng)建目標(biāo)板信息,在smdk2410_config:unconfig$(mkconfig)$(:_config=)arm arm920tsmdk2410 samsung s3c24x0 后面添加gec2440_config:unconfig$(mkconfig)$(:_config=)arm arm920t gec2440 samsung s3c24x0 修改makefile規(guī)則,將_libs:=$(subst$(obj),$(
19、libs)$(subst$(obj),$(libboard)改為:_libs:=$(subst$(obj),$(libboard)$(subst$(obj),$(libs)<2>進(jìn)入目錄配置編譯配置#make gec2440_config#make編譯結(jié)果生成u-boot.bin燒入開發(fā)板<3>關(guān)于觸摸板驅(qū)動移植 添加代碼:將touchscreen驅(qū)動源碼gec2440_ts.c(復(fù)制drivers/input/touchscreen目錄下的s3c2410_ts.c)添加到linux-2.6.30源碼目錄drivers/input/touchscreen中。將adc驅(qū)動
20、源碼gec2410_adc.c(復(fù)制drivers/char目錄下的adc.c)及頭文件s3c24xx-adc.h添加到linux-2.6.30源碼目錄drivers/char中。修改drivers/input/touchscreen/makefile文件。#vim drivers/input/touchscreen/makefileobj-$(config_touchscreen_gec2440) +=gec2440_ts.修改drivers/input/touchscreen/kconfig文件#vim drivers/input/touchscreen/kconfig添加config t
21、ouchscreen_gec2440 tristate”gec2440 touchscreen input driver” help say y here if you have the s3c2440 touchscreen.修改drivers/char/makefile文件#vim drivers/char/makefile添加obj-$(config_gec2440_adc)+=gec2440_adc.o修改drivers/char/kconfig文件#vi driver/char/kconfig添加config gec2440_adc tristate”gec2440_adc” -he
22、lp-say y here if you have the s3c2440 adc.修改arch/arm/plat-s3c/include/plat/devs.h文件#vim arch/arm/plat-s3c/include/plat/devs.添加:struct s3c2410_ts_mach_info int delay; 修改arch/arm/mach-s3c2410/mach-smdk2410.c文件#vim arch/arm/mach-s3c2410/mach-smdk2410.c添加static struct s3c2410_ts_mach_info gec2410_ts_cfg
23、_initdata= .delay = 10000, .presc = 49, .oversampling_shift=2,;在 static void_init smdk2410_map_io(void)函數(shù)中添加:s3c24xx_init_ touchscreen(&gec2410_ts_cfg);修改arch/arm/mach-s3c2410/mach-smdk2410.c文件#vim arch/arm/mach-s3c2410/mach-smdk2410.c在 static struct platform_device*smdk2440_devices_initdata結(jié)構(gòu)體中
24、添加:&s3c_device_ts,編譯配置內(nèi)核 #make menuconfig配置菜單添加驅(qū)動到內(nèi)核:device drivers-à input device support-à * touchscreens-à <*> gec2440 touchscreen input driver character devices -à <*>gec2440_adc編譯內(nèi)核生成靜態(tài)驅(qū)動模塊#make修改arch/arm/plat-s3c/include/plat/devs.h文件#vim arch/arm/plat-s3c/i
25、nclude/plat/devs.h添加:struct s3c2410_ts_mach_info int delay; int presc; int oversampling_shift;void_init 3c24xx_init_touchscreen(struct s3c2410_ts_mach_info*hard_s3c2410_ts_info);extern struct platform_device s3c_device_ts;修改arch/arm/plat-s3c24xx/ devs.c文件#vim arch/arm/plat-s3c24xx/ devs.c在文件后面添加/*to
26、uchscreen*/static struct s3c2410_ts_mach_info s3c2410_ts _info;void_init s3c24xx_init_touchscreen(struct s3c2410_ts_mach_info*hard_s3c2410_ts_info);memcpy($s3c2410_ts_info, hard_s3c2410_ts_info,sizeof(struct s3c2410_ts_mach_info);export_symbol(s3c24xx_init_touchscreen);struct platform_device s3c_dev
27、ice_ts= .name=” s3c2410_ts”, .id=-1, .num_resources=array_size(s3c_adc_ resource), . resource = s3c_adc_ resource,.dev= .platform_data=$s3c2410_ts_info,export_symbol(s3c_device_ts);在根文件系統(tǒng)中建立相關(guān)設(shè)備節(jié)點:#mkdir /dev/input#mknod/dev/input event0 c 13 64 #mknod /dev/input/mouse0 c 13 32提示“read-only file syst
28、em”,或者”mkdir:cannot create directory /dev/input:file exists”.解決方法如下: #chmod 777/dev/ #mount o remount rw/基于qt3平臺的應(yīng)用程序<9>(9)驅(qū)動的移植 <1>關(guān)于usb驅(qū)動移植 修改arch/arm/mach-s3c2410/mach-smdk2410.c文件#include<mach/regs-clokc.h>#include<plat/usb-control.h>#include<linux/devicd.h>#include
29、<linux/delay.h>static struct s3c2410_hcd_info usb_gec2410_info= .port0= .flags=s3c2410_hcdflg_used,;int usb_gec2410_init(void) unsigned long upllvalue=(0x78<<12)|0xo2<<4)|(0x03);prink(“usb control,(c)gec2410n”);s3c_device_usb.dev.platform_data=&usb_gec2410_info;while(upllvalue!
30、=_raw_readl(s3c2410_upllcon) _raw_write(upllvalue,s3c2410_upllcon); mdelay(1);return 0;<2>在static void_init smdk2410_map_io()函數(shù)中添加usb_sbc2410_init()函數(shù)usb_getc2410_init();<3>內(nèi)核配置 支持熱插拔 general setup-> *configure standard kernel features(for small systems)-> <*>support for hot-
31、pluggable devices讓內(nèi)核支持usb設(shè)備device drivers block devices -> <*>low performance usb block driver scsi device support-> <*> scsi generic support <*>probe all luns on each scsi device usb support-> <*>support for host-side usb *usb device filesystem <*>usb mass sto
32、rage support <*>usb monitor加入 msdos文件系統(tǒng)和vfat文件系統(tǒng)支持(為適應(yīng)掛載u盤)file systems-> dos/fat/nt filesystems-> <*> msdos fs support <*> vfat (windows-95) fs support (936) default codepage for fat (cp936) default iocharset for fat使能(dos分區(qū)) config_msdos_partitionfile systems->partition
33、types-> *pc bios (msdos partition tables) support添加對中文字體庫的支持file systems->-*- native language support-> <*>simplified chinese charset(cp936,gb2312)<*> nls utf8 編譯 #make五、系統(tǒng)測試1測試目的軟件測試是軟件開發(fā)的最后一個階段,測試的目的不是證明所開發(fā)的軟件沒有錯誤,而是盡可能的多發(fā)現(xiàn)軟件設(shè)計開發(fā)全周期中各個階段的錯誤, 以便分析錯誤的性質(zhì)與位置而加以糾正,糾正過程涉及到更正或重新設(shè)計相關(guān)的
34、文檔活動。從而避免用戶在使用時出現(xiàn)不可預(yù)測的異常而導(dǎo)致整個系統(tǒng)崩潰。2、測試條件(1)系統(tǒng)條件linux操作系統(tǒng)(2)人員選擇單元測試: 每個模塊的設(shè)計人員系統(tǒng)測試: 設(shè)計小組的全體成員驗收測試:測試:在我們設(shè)計小組成員的指導(dǎo)下,進(jìn)行測試測試:完全由不是本小組的人員進(jìn)行測試3、測試方法采用黑盒測試和白盒測試兼并的測試方法,每當(dāng)完成一項事件的處理時,便執(zhí)行程序,進(jìn)行測試,每完成一個模塊的代碼,也進(jìn)行相關(guān)的測試,最后,全部代碼完成時,進(jìn)行全面的測試。4測試過程(1)文件路徑加載問題: qpixmap pixmap;/全局變量 qfileinfolist list;/全局變量 qstring dir
35、=”/home/akaedu/”;qdir picdir(dir);qstringlist filters;filters<<”*.jpeg”;picdir.setnamefilters(filters);list=picdir.entryinfolist();qfileinfo fileinfolist.at(i);qstring path=fileinfo.filepath();pixmap.load(path);問題:當(dāng)圖片顯示最后一張圖片繼續(xù)點下一張圖片按扭的時候,圖片路徑是正確的,但窗口不正確。分析原因:因為qpixmap pixmap 為全局變量,在圖片瀏覽功能時pix
36、map.load(path)將所有的圖片都加載進(jìn)去,雖然指針i qfileinfo fileinfo=list.at(i) 控制圖片的路徑,用qdebug打印路徑是正確的,但qpixmap pixmap一直取的是所有圖片中的最后一張圖片的。解決的方案是:將qpixmap pixmap設(shè)置為局部變量,位置位于void renderarea:paintevent(qpaintevent *)畫圖函數(shù)的作用域。void renderarea:paintevent(qpaintevent *) qpainter painter(this); qfileinfo fileinfo =list.at(i)
37、; qstring path=fileinfo.filepath(); qpixmap pixmap;pixmap.load(path);(2)循環(huán)控制播放的問題:當(dāng)圖片循環(huán)時指針i一直處于遞加的,但圖片的顯示是循環(huán)結(jié)束圖片第一個到最后一張。qpixmap pixmap是通過觸發(fā)調(diào)用void renderarea:paintevent(qpaintevent *)來將圖片顯示的,其中有2個函數(shù)方法可以:一個是update()、另一個是repaint();我們用的是前者。分析原因:update()函數(shù)在循環(huán)控制的時候不管次數(shù)的多少,只在最后一次調(diào)用paintevent顯示最后一張。解決方案:在循
38、環(huán)控制的時候repaint()有多少次調(diào)用多少次,所以用repaint()代替update()(3) 運行程序時,總會出現(xiàn)qmake的錯誤,后來發(fā)現(xiàn)是因為保存的路徑中有中文的原因。將路徑改為g:/images之后可成功啟動。(4)在添加歌曲時,開始時我們添加的是mp3格式的音樂,可是始終聽不到音樂:將音樂格式改為wav格式的音樂,就可以正常播放了。 (5)對添加進(jìn)來的圖片進(jìn)行特效制作:opacity:設(shè)置圖片不透明 forward:設(shè)置圖片向后轉(zhuǎn) rotation:設(shè)置圖片循環(huán)旋轉(zhuǎn)六、設(shè)計心得本次課程設(shè)計,在qt的環(huán)境下編寫程序,然后把程序向試驗箱進(jìn)行移植,比起以往的單一編程,還是有些難度的。
39、設(shè)計中我們遇到很多的難題,很多東西都是第一次接觸,很多用到的技術(shù)網(wǎng)上根本沒有資料,完全憑借自己去摸索嘗試。其中的困難可想而知。實現(xiàn)模塊中是問題最多的,文件解析,文件讀取,特效制作等等。還有許多的細(xì)節(jié)問題,如內(nèi)存釋放、軟硬編碼、信號傳輸、環(huán)境變量。 通過這次數(shù)碼相框的設(shè)計,讓我們了解了這是一個團(tuán)隊的工作,團(tuán)隊需要個人,個人也離不開團(tuán)隊,必須發(fā)揚團(tuán)結(jié)協(xié)作的精神。每一個人都必須緊密的融入到團(tuán)隊之中,這樣才能讓這個團(tuán)隊更高效。設(shè)計過程中只有一個人知道原理是遠(yuǎn)遠(yuǎn)不夠的,必須讓每個人都知道,否則一個人的錯誤,就有可能導(dǎo)致整個工作的失敗。團(tuán)結(jié)協(xié)作是我們設(shè)計成功的一項非常重要的保證。而這次設(shè)計也正好鍛煉我們這
40、一點,這是非常寶貴的經(jīng)驗。此次項目設(shè)計,鞏固了以往學(xué)過的知識點,得到了很多新的項目設(shè)計的寶貴經(jīng)驗,比如獨立思考解決問題,出現(xiàn)差錯的隨機(jī)應(yīng)變,與他人的協(xié)作等等。這都讓我們受益匪淺,會讓我們今后的項目設(shè)計更加輕松,讓我們能夠更加優(yōu)秀的完成今后的項目設(shè)計工作。在設(shè)計的過程中,我們才發(fā)現(xiàn)知識僅僅“學(xué)過”是不夠的,還要會用。這樣那些知識才能真正的算作你自己的知識,也就是理論與實際相結(jié)合。只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才是真正的學(xué)以致用,從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到的問題也很多,有一些也讓我們大傷腦筋,這畢竟是第一次以一
41、個團(tuán)隊的形式來完成一個項目的設(shè)計,難免會遇到各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了我們本身的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。在此,感謝老師的細(xì)心指導(dǎo),感謝其他各組同學(xué)的無私幫助,并且再次對我們小組所有組員在項目設(shè)計過程中所付出的辛勞與努力表示感謝。參考文獻(xiàn)1、石秀民,魏洪興主編。嵌入式系統(tǒng)原理與應(yīng)用基于xscale與linux.北京航空天大學(xué)出版社,2007.2、陳虎,吳濤等著。嵌入式系統(tǒng)課程設(shè)計。機(jī)械工業(yè)出版社,20083、北京博創(chuàng)興業(yè)科技有限公司。up-techpxa270-s_linux實驗指導(dǎo)m.20074.王天苗,嵌入式系統(tǒng)設(shè)計與實例開發(fā)m. 北京:清華
42、大學(xué)出版社,2010附錄共 頁 第 10 頁1、 main.cpp#include <qtgui/qapplication>#include "mainwindow.h"int main(int argc, char *argv) qapplication a(argc, argv); mainwindow w; /a.setstyle("plastique"); w.show(); return a.exec();2、soundengine.cpp#include "slideshowengine.h"void slid
43、eshowengine:startsound()qstring command; command="/usr/bin/mplayer -slave " for(int i=0; i<m_sequence->soundtracks().count();i+) command.append(m_sequence->soundtracks().at(i); command.append(" "); qdebug() << command; m_mplayerprocess.start(command); /m_mplayerpro
44、cess.write(command.toutf8();void slideshowengine:pausesound() qstring command; command="pausen" m_mplayerprocess.write(command.toutf8();void slideshowengine:resumesound() qstring command; command="pausen" m_mplayerprocess.write(command.toutf8();void slideshowengine:stopsound() m_
45、mplayerprocess.terminate(); m_mplayerprocess.waitforfinished();3、dialog.cpp#include "dialog.h"#include "ui_dialog.h"dialog:dialog(qwidget *parent) : qdialog(parent), ui(new ui:dialog) ui->setupui(this);dialog:dialog()delete ui;4 delegate.cpp#include <qtgui>#include "
46、;node.h"#include "delegate.h" delegate:delegate(qwidget *parent) : qstyleditemdelegate(parent) void delegate:paint(qpainter *painter, const qstyleoptionviewitem &option, const qmodelindex &index) const node item; if (qvariantcanconvert<qpixmap>(index.data(qt:decorationro
47、le) qvariant val=index.data(qt:userrole); item=val.value<node>(); qpixmap pix=item.nodeicon(); int offsetv = 0; if (option.state & qstyle:state_selected) painter->fillrect(option.rect, option.palette.highlight(); /painter->setpen(qt:blue); /painter->drawrect(option.rect); painter-
48、>drawpixmap(option.rect.x(),offsetv+option.rect.y(),pix.width(),pix.height(),pix); /painter->drawrect(option.rect.x()+pix.width()*5/4,option.rect.y()+pix.height()/4,pix.width()/2,pix.height()/2); /*qstring enterstr=item.entereffect().effecttype(); qstring displaystr=item.displayeffect().effect
49、type(); qstring exitstr=item.exiteffect().effecttype(); painter->drawtext(option.rect.x()+pix.width()*5/4,offsetv+option.rect.y()+pix.height()/4,enterstr); painter->drawtext(option.rect.x()+pix.width()*5/4,offsetv+option.rect.y()+pix.height()/4+20,displaystr); painter->drawtext(option.rect.
50、x()+pix.width()*5/4,offsetv+option.rect.y()+pix.height()/4+40,exitstr);*/ else qstyleditemdelegate:paint(painter, option, index); qsize delegate:sizehint(const qstyleoptionviewitem &option, const qmodelindex &index) const if (qvariantcanconvert<qpixmap>(index.data(qt:decorationrole) qv
51、ariant val=index.data(qt:decorationrole); qpixmap pix=val.value<qpixmap>(); return qsize(pix.width()*3/2,pix.height(); else return qstyleditemdelegate:sizehint(option, index);qwidget *delegate:createeditor(qwidget *parent, const qstyleoptionviewitem &option, const qmodelindex &index) c
52、onst return qstyleditemdelegate:createeditor(parent, option, index);void delegate:seteditordata(qwidget *editor, const qmodelindex &index) const qstyleditemdelegate:seteditordata(editor, index);void delegate:setmodeldata(qwidget *editor, qabstractitemmodel *model, const qmodelindex &index) const qstyleditemdelegate:setmodeldata(editor, model, index);void delegate:commitandcloseeditor() qwidget *editor = qobject_cast<qwidget *>(sender
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度離婚協(xié)議書范本(含財產(chǎn)保全條款)
- 消殺安全管理協(xié)議書(2篇)
- 水庫工程建設(shè)合同(2篇)
- 二零二五年度股權(quán)投資保密條款合同
- 二零二五版企業(yè)人力外包與薪酬福利合同范本3篇
- 二零二五年度金融科技合作框架協(xié)議范本2篇
- 二零二五版農(nóng)業(yè)科技園區(qū)土地租賃合同模板
- 2025年度停薪留職員工培訓(xùn)及技能提升合同
- 二零二五年度配音作品后期處理服務(wù)合同4篇
- 2025至2030年中國臭氧水生成機(jī)數(shù)據(jù)監(jiān)測研究報告
- 第三單元名著導(dǎo)讀《駱駝祥子》整本書閱讀教學(xué)設(shè)計+2023-2024學(xué)年統(tǒng)編版語文七年級下冊
- 工程數(shù)學(xué)試卷及答案
- DB11T 211-2017 園林綠化用植物材料 木本苗
- 《PLC應(yīng)用技術(shù)(西門子S7-1200)第二版》全套教學(xué)課件
- 第01講 直線的方程(九大題型)(練習(xí))
- 市政道路監(jiān)理大綱34368
- 《基礎(chǔ)會計》教學(xué)課件-整套教程電子講義
- 人教版七年級上冊數(shù)學(xué)全冊課時練習(xí)帶答案
- GB/T 44143-2024科技人才評價規(guī)范
- 對醫(yī)院領(lǐng)導(dǎo)的批評意見怎么寫更合適范文(6篇)
- 2024年常德職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整
評論
0/150
提交評論