![嵌入式系統(tǒng)綜合課程設(shè)計說明書-基于嵌入式的數(shù)碼相框設(shè)計_第1頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/19/2b659660-5074-485e-920e-a571f99d080d/2b659660-5074-485e-920e-a571f99d080d1.gif)
![嵌入式系統(tǒng)綜合課程設(shè)計說明書-基于嵌入式的數(shù)碼相框設(shè)計_第2頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/19/2b659660-5074-485e-920e-a571f99d080d/2b659660-5074-485e-920e-a571f99d080d2.gif)
![嵌入式系統(tǒng)綜合課程設(shè)計說明書-基于嵌入式的數(shù)碼相框設(shè)計_第3頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/19/2b659660-5074-485e-920e-a571f99d080d/2b659660-5074-485e-920e-a571f99d080d3.gif)
![嵌入式系統(tǒng)綜合課程設(shè)計說明書-基于嵌入式的數(shù)碼相框設(shè)計_第4頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/19/2b659660-5074-485e-920e-a571f99d080d/2b659660-5074-485e-920e-a571f99d080d4.gif)
![嵌入式系統(tǒng)綜合課程設(shè)計說明書-基于嵌入式的數(shù)碼相框設(shè)計_第5頁](http://file1.renrendoc.com/fileroot_temp2/2021-2/19/2b659660-5074-485e-920e-a571f99d080d/2b659660-5074-485e-920e-a571f99d080d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)校代碼: 10128學(xué) 號: 嵌入式系統(tǒng)綜合設(shè)計說明書題 目: 基于嵌入式的數(shù)碼相框設(shè)計學(xué)生姓名: 組 別:學(xué) 院: 信息工程學(xué)院班 級: 計08-3班指導(dǎo)教師: 2011年9 月 20 日摘要2ABSTRACT2一、設(shè)計任務(wù)與要求31、任務(wù):32、要求:3二、設(shè)計方案31、總體設(shè)計功能32、設(shè)計思路:43、顯示圖片:44、鼠標(biāo)控制:45、網(wǎng)路檢測更新圖片下載:4三、軟件設(shè)計41、主要模塊流程圖42、部分程序清單及注釋62.1、客戶端主程序:62.2、三種圖片更換效果83、服務(wù)器端程序流程圖134、服務(wù)器端主程序:14四、調(diào)試過程171、實驗步驟171.1、進入linux環(huán)境,啟動兩個終端,
2、一個用于服務(wù)器程序,一個用于客戶端程序。171.2、解壓freetype_2.3.11.tar.bz2文件,進入其目錄下,輸入make命令進行編譯連接。171.3、在命令行執(zhí)行source ./dpf.sh shell文件。171.4、在命令行 sudo chmod 777 /dev/fb0 sudo chmod 777 /dev/input/mice 命令,輸入密碼即可。1715、啟動服務(wù)器終端,在命令行使用make命令,輸入./server運行程序。171.6、啟動客戶終端,在命令行使用make命令,輸入./client運行程序。172、出現(xiàn)的問題172.1、每當(dāng)鼠標(biāo)滑過都會有痕跡留下,看
3、上去很像畫筆。172.2、程序編譯時出現(xiàn)段錯誤。172.3、下載文件時出現(xiàn)阻塞現(xiàn)象。173、解決方法173.1、在鼠標(biāo)繪制前保留一下上一時刻鼠標(biāo)鎖在位置的像素值,鼠標(biāo)過后在還原,問題解決。1732、出現(xiàn)段錯誤的地方很多,原因也很多一般是越界了,把內(nèi)存地址中的其他值給沖掉了,用gdb調(diào)試即可找到問題所在。183.3、下載文件時出現(xiàn)阻塞現(xiàn)象的可能原因是套接字read與write不同步,還有可能是文件讀完了,獲得不到中斷信號,退不出循環(huán)體,這是只要獲得文件的大小即可(獲取文件大小用lseek函數(shù))。18五、總結(jié)18六、參考文獻19摘要數(shù)碼攝影已經(jīng)成為如今的主流攝影方式,但并不是每個美麗的瞬間都用相紙
4、沖刷出來(原因:這需要大量的金錢),經(jīng)過市場調(diào)查只有%35左右的相片被沖洗,為了盡可能的減少人們的遺憾,數(shù)碼相框的產(chǎn)生成為了必然,數(shù)碼攝影也推動數(shù)碼相框的發(fā)展。本設(shè)計主要應(yīng)用了C/S模式,實現(xiàn)了網(wǎng)絡(luò)間的數(shù)據(jù)傳遞和服務(wù)器的并發(fā)??蛻舳耍–lient)實現(xiàn)了鼠標(biāo)控制,圖片接受,圖片的檢測更新,圖片的顯示等功能,服務(wù)器(Server)主要實現(xiàn)圖片的檢測更新及傳遞數(shù)據(jù),圖片顯示主要是引入了JPEG數(shù)據(jù)庫包(Copyright George Peter Staplin),使我們的設(shè)計更為簡單易懂。服務(wù)器使用了fork()函數(shù)實現(xiàn)的服務(wù)器并發(fā),使閱讀程序的人員能更清楚地理解服務(wù)器并發(fā)的實現(xiàn)。關(guān)鍵詞: 鼠標(biāo)
5、控制,服務(wù)器并發(fā),檢測更新ABSTRACTDigital photography has becomed the mainstream of the photography way.Now ,it is not every beautiful moments all washed out by the paper ( Reason: this will need a lot of money). By market investigation only around thirty-five percent of pictures were flush, in order to minimize
6、 the number of people regret, digital photo frames become necessary, digital photography promote the development of the digital photo frame. This design is mainly used for C/S mode, and realize the data transfer between the network and server concurrent. The Client realized the mouse control, pictur
7、es accepts, images of the detection update, pictures of the show, and other functions, Server mainly realizes the detection update and pictures, pictures showed the main transfer data introduce JPEG database bag (Copyright George Peter Staplin), make our design more simple to understandable. Server
8、use fork () of the realization of the function, make reading program server and the personnel can be more clearly to understand the realization of the concurrent server. Key words: The mouse control, Server concurrent, Detection update 一、設(shè)計任務(wù)與要求1、任務(wù):在linux(ubuntu)系統(tǒng)下利用C語言開發(fā)一個具有上傳下載、鼠標(biāo)控制、圖片自動更新且圖片具有多
9、樣式動態(tài)功能特效的數(shù)碼相框。2、要求:對鼠標(biāo),和圖片做效果處理,實現(xiàn)服務(wù)器的并發(fā)操作。二、設(shè)計方案1、總體設(shè)計功能 實現(xiàn)對鼠標(biāo)的控制功能,圖片檢測更新,圖片的輪換顯示(實現(xiàn)幻燈片的效果),網(wǎng)絡(luò)間圖片的傳遞,多客戶端服務(wù)器的并發(fā)。2、設(shè)計思路:在客戶端要實現(xiàn)三大主要功能:顯示圖片、鼠標(biāo)控制、網(wǎng)絡(luò)檢測更新圖片下載。3、顯示圖片:在程序中用FrameBuffer設(shè)備(/dev/fb0)映射到進程的地址空間,再用mmap進行地址映射,取mmap中的值進行解壓、縮放、色值還原,打印圖片(調(diào)用gpeglib庫,用jpeg算法解壓)。4、鼠標(biāo)控制:在程序中用FrameBuffer設(shè)備(/dev/fb0),鼠
10、標(biāo)控制設(shè)備(/dev/input/mice),用10*17的數(shù)組 cursor繪制鼠標(biāo),再用mmap映射答應(yīng)道屏幕上;5、網(wǎng)路檢測更新圖片下載:使用網(wǎng)絡(luò)套接字TCP協(xié)議接受服務(wù)器發(fā)送的圖片,使用鏈表把所有的圖片都串起來,監(jiān)控圖片更新??蛻舳艘獙崿F(xiàn)上述三種功能的同步,因此我選用了進程實現(xiàn)的這個功能,因為每個進程之間是獨立的,但還要用鼠標(biāo)控制圖片的切換速度(正常每五秒切換一張,點擊鼠標(biāo)后立刻切換到下一張),為此我又用信號量來解決此問題。在服務(wù)器端主要實現(xiàn)圖片的更新和上傳。三、軟件設(shè)計1、主要模塊流程圖開始模塊初始化讀取jpeg文件夾內(nèi)的圖片是否有圖片?建立鏈表將圖片鏈接按鏈表讀取圖像數(shù)據(jù)繪制鼠標(biāo)對
11、圖像進行解碼顯示圖片交換圖片結(jié)束client等待下載圖片是否成功客戶端程序流程圖2、部分程序清單及注釋2.1、客戶端主程序:#includehead.hint main(void)int res, i, n;fb_info fb;pid_t pid;pid_t *p;struct sigaction act;act.sa_handler = sig_usr1;act.sa_flags = 0;sigemptyset(&act.sa_mask);sigaction(SIGUSR1, &act, NULL);/信號res = init_fb(&fb);if(res = -1)err_sys(ini
12、t_fb error);p = smalloc(sizeof(pid_t) * 2);if(p = NULL)err_sys(smalloc error);for(i = 0; i 3; i+)pid = fork();if(pid = 0)break;pi = pid;if(i = 0)pic_display();/圖片顯示函數(shù)else if(i = 1)int fd; int x = fb.w / 2;int y = fb.h / 2;char buf8;mice_event_t m;fd = open(/dev/input/mice, O_RDONLY);if(fd = -1)err_s
13、ys(open error);mice_save(fb, x, y);mice_draw(fb, x, y);while(1)n = read(fd, buf, 8);mice_parse(buf, &m);mice_restore(fb, x, y);x += m.x;y += m.y;/*確定鼠標(biāo)移動范圍*/if(x (fb.w-12)x = fb.w-12;if(y (fb.h-24)y = fb.h-24;mice_save(fb, x, y);mice_draw(fb, x, y);if(m.button = 1 | m.button = 2 | m.button = 3)kill(
14、p0, SIGUSR1);else if(i = 2)client();/圖片下載檢測更新函數(shù)elsefor(i = 0; i 2; i+)wait(NULL);fb_destroy(&fb);return 0;2.2、三種圖片更換效果int yuan(u32_t * buf32, fb_info fb_inf)/點到圓int i,j,r;for(r=0;r=160;r+)for (i=0;ifb_inf.w;i+)for(j=0;jfb_inf.h;j+) if(i-50)*(i-50)+(j-50)*(j-50)r*r)point_t p;p.x = i; p.y = j;fb_pixel
15、(fb_inf, p, buf32i + j*fb_inf.w); for (i=0;ifb_inf.w;i+)for(j=0;jfb_inf.h;j+) if(i-800)*(i-800)+(j-200)*(j-200)r*r)point_t p;p.x = i;p.y = j;fb_pixel(fb_inf, p,buf32i+j*fb_inf.w); for (i=0;ifb_inf.w;i+)for(j=0;jfb_inf.h;j+) if(i-256)*(i-256)+(j-576)*(j-576)r*r)point_t p;p.x = i;p.y = j; fb_pixel(fb_
16、inf, p, buf32i + j*fb_inf.w); for (i=0;ifb_inf.w;i+)for(j=0;jfb_inf.h;j+) if(i-768)*(i-768)+(j-576)*(j-576)r*r)point_t p;p.x = i;p.y = j;fb_pixel(fb_inf, p, buf32i + j * fb_inf.w); for (i=0;ifb_inf.w;i+)for(j=0;jfb_inf.h;j+) if(i-512)*(i-512)+(j-384)*(j-384)r*r)point_t p;p.x = i;p.y = j;fb_pixel(fb_
17、inf, p, buf32i + j * fb_inf.w); usleep(100);for (i=0;ifb_inf.w;i+)for(j=0;jfb_inf.h;j+) point_t p;p.x = i;p.y = j;fb_pixel(fb_inf, p, buf32i + j * fb_inf.w);usleep(100);return 0;int baiye(u32_t * buf32, fb_info fb_inf)/百葉窗int i, j;int n,y;int num = fb_inf.h/N;int num2 = num/N_2;printf(fb_inf.h = %dn
18、fb_inf.w = %dn, fb_inf.h,fb_inf.w);for(y = 0; y N_2; y+)#if 1for(n = 0; n N; n+)for(i = n*num+y*num2-n*3/(n+1); i (n)*num+num2+y*num2; +i)for (j = 0; j fb_inf.w; +j)point_t p;p.x = j;p.y = i;fb_pixel(fb_inf, p, buf32j + i * fb_inf.w);usleep(10);usleep(10);#elsefor(i = n*num; i = (n+1)*num; +i)for (j
19、 = 0; j 0)for(i = 0; i fb_inf.h; i+=a)for (j =0; j fb_inf.w; j+=a)point_t p;p.x = j;p.y = i;for(k=0;k100;k+)fb_pixel(fb_inf, p, buf32j + i * fb_inf.w);a-;for(k=0;k10;k+);/for(n=0;n 0)exit(0);change(cfd);/更新上傳函數(shù)elseclose(cfd);wait(NULL);fly =0;return 0;#includehead.hpic_link *creat_pic_node( char *pi
20、c_name)/鏈表節(jié)點的建立pic_link *p;int len;len = strlen(pic_name);printf(-%sn,pic_name);p = (pic_link *)malloc(sizeof(pic_link);p-pic_name = (char *)malloc(sizeof(char)*(len+1);strcpy(p-pic_name,pic_name);p-pic_flag = 1;p-next = NULL;return p;void insert_pic(pic_link *p) /節(jié)點的插入printf(p -name=%sn,p-pic_name)
21、;if(head = NULL)p-next = head;head = p;q = p;elseq-next = p;q = p;四、調(diào)試過程1、實驗步驟1.1、進入linux環(huán)境,啟動兩個終端,一個用于服務(wù)器程序,一個用于客戶端程序。1.2、解壓freetype_2.3.11.tar.bz2文件,進入其目錄下,輸入make命令進行編譯連接。1.3、在命令行執(zhí)行source ./dpf.sh shell文件。1.4、在命令行 sudo chmod 777 /dev/fb0 sudo chmod 777 /dev/input/mice 命令,輸入密碼即可。15、啟動服務(wù)器終端,在命令行使用make命令,輸入./server運行程序。1.6、啟動客戶終端,在命令行使用make命令,輸入./client運行程序。2、出現(xiàn)的問題2.1、每當(dāng)鼠標(biāo)滑過都會有痕跡留下,看上去很像畫筆。2.2、程序編譯時出現(xiàn)段錯誤。2.3、下載文件時出現(xiàn)阻塞現(xiàn)象。3、解決方法3.1、在鼠標(biāo)繪制前保留一下上一時刻鼠標(biāo)鎖在位置的像素值,鼠標(biāo)過后在還原,問題解決。32、出現(xiàn)段錯誤的地方很多,原因也很多一般是越界了,把內(nèi)存地址中的其他值給沖掉了,用gdb調(diào)試即可找到問題所在
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩老師心得體會15篇
- 國土分局業(yè)務(wù)知識
- 醫(yī)務(wù)人員洗手相關(guān)知識
- 正頜手術(shù)加速康復(fù)外科臨床路徑指標(biāo)體系構(gòu)建及對術(shù)后康復(fù)效果影響
- 基于深度學(xué)習(xí)的PMU異常數(shù)據(jù)檢測方法研究
- 二零二五年度綠色環(huán)保消防設(shè)施安裝與維護合同協(xié)議書3篇
- 2025版水果種植基地與冷鏈物流企業(yè)合作協(xié)議范本3篇
- 臭氧水療聯(lián)合皮膚科特色護理治療濕疹患兒的價值
- 快遞行業(yè)培訓(xùn)計劃
- xx市科創(chuàng)孵化器項目可行性研究報告
- 人教版八年級英語上冊期末專項復(fù)習(xí)-完形填空和閱讀理解(含答案)
- 一例蛇串瘡患者個案護理課件
- 低壓電工理論考試題庫低壓電工考試題
- 駱駝祥子選擇題100道及答案
- 2024年公務(wù)員考試題庫附答案【完整版】
- T-GDWCA 0019-2018 輻照工藝操作規(guī)范
- 司機考核管理制度
- 出差報銷單-中英對照版
- 【學(xué)前教育小學(xué)化成因分析及其對策10000字(論文)】
- 腕管綜合征課件
- 事業(yè)單位工作人員年度考核登記表(通用模板)
評論
0/150
提交評論