




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科毕业论文(设计) 题目: 基于Linux电子相册的 设计与实现 学院: 数学与计算机科学学院 班级: 2010级计算机本科一班 基于Linux电子相册的设计与实现摘要:随着科技的不断进步,我们的学习和生活也在发生着日新月异的变化。普通的相册已经不能满足人们的需求,电子相册渐渐的成为了当今相册的主流。通过对电子相册需求的分析与自己所学知识的结合,基于Linux操作系统,设计制作出了这款电子相册。本系统以C语言知识为主,并结合QT和C+面向对象的思想,运用Unix环境高级编程中的信号量机制和管道,实现进程与进程、线程与线程之间的通信,最终完成了各个界面之间的调用与衔接。主要功能有欢迎界面、相片
2、浏览、音乐播放、鼠标操作、键盘的操作。相片浏览主要功能有:上一张、下一张、放大 、图片特效、退出功能。音乐播放:播放、暂停、上一曲、下一曲、音量增加、音量减小。鼠标控制:绘制鼠标、移动鼠标、点击与返回鼠标坐标。键盘:通过读出设备文件做出相应的操作 等各种基本功能。关键词:Linux;电子相册;C语言;Qt;C+目 录1 绪论11.1 开发背景11.2 开发目的12 需求分析22.1 概述22.2 性能需求22.3 功能需求22.4 系统界面33 项目技术33.1 搭建开发环境44 软件的设计与实现54.1 概要设计54.1.1 设计思想54.1.2 设计原则54.1.3 模块概要设计54.1.
3、4电子相册的操作流程74.2 详细设计94.2.1欢迎界面的设计104.2.2主页面的设计104.2.3相片览模块的设计104.2.4音乐播放的设计104.2.5鼠标控制的设计114.2.7总控制的设计114.3 数据结构114.4 编码的实现125 软件测试125.1 性能测试125.2 硬件上测试136 设计总结13参考文献:141 绪论1.1 开发背景及目的 1.开发背景 Linux就是一套操作系统,Linux的前身是Unix,Linux提供了一个完整操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭Unix良好的传统而来的,所以相当稳定并且功能强大,可移植性非常好。本设计
4、采用的是嵌入式Linux系统。首先,Linux是开放源代码,是遍布全球的众多Linux爱好者和Linux开发者的强大技术支持;其次,Linux的内核小、效率高,性能稳定,裁剪性很好, 开发和使用都很容易,移植性很强, 即用Linux环境开发的产品,二次开发方便。 图1.1 Linux Logo Linux是一套免费试用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。2.开发目的 近几年,嵌入式系统产品
5、日臻完善,并在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化,工业化促进信息化发展的新的国民经济增长点。随着消费家电的智能化,嵌入式更显重要。据预测,随着Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里形成更大的应用领域。基于嵌入式Linux的电子相册比一般的电子相册更加的具有优越性和实用性。所以,我们有理由相信基于嵌入式Linux的电子相册必将成为未来电子相册的主流。2 需求分析需求分析在软件开发中是一项非常重要的工作。在需求分析中,我们需要确定客户的需要。并且根据客户的需求,以及我们的实际情况,构思和制定出一个完善的设计方案,本章较
6、为系统和详细的阐述了该电子相册全面而合理的需求。2.1 概述 随着数码相机逐步走进寻常百姓家中,人们对电子相册的需求不断增加。电子相册提供给用户的不仅仅是一个存储空间,更多的是拥有了与他人分享和交流的机会,这是一个新生事物但却大有前景。现在主流的电子相册应用软件,其体积普遍庞大,占用较多的内存,对硬件的要求高,因此开发一个运行速度快,占用空间小,对硬件要求较低的功能实用的基于嵌入式Linux电子相册的应用软件非常有意义。2.2 性能需求1. 响应速度: 不论是什么样的软件,在设计和实现的时候,必须要考虑软件的响应速度,所以,一款优秀的软件必须将响应速度设计在用户可忍耐的范围内。该软件内存占用率
7、小2. 流畅性: 用户在使用软件的时候,系统应在用户忍耐时间范围内的作出响应,如果不能及时的回馈用户的反应,即使功能再丰富的软件,也注定不会受用户的认可。3. 舒适度: 在软件的设计的时候,要将各组件的间距、顺序设计的符合大众习惯。使用一些提示的文字或图片等提示用户操作。2.3 功能需求1.基本功能(1).手动浏览可以实现查看上一张、下一张,实现图片的放大与缩小。(2).全屏播放可以实现图片的暂停和播放,每张图片的展示都有不同的特效。(3).音乐播放可以实现音乐的上一曲、下一曲播放,实现音量的调节。(4).返回主界面/如上系统退出到主界面。图2-1 系统主界面2.4 系统界面 设计一款软件界面
8、的时候,非常有必要考虑各个组件之间合理的布局,我们在给定大小的界面中完成各个组件的布局时,既不能让各组件太“拥挤”,也不能让各组件之间距离太远,孤零零的,组件之间的间距一定要适中,让人看着舒服。而且各组件在顺序上的安排要满足用户的习惯性的操作,尽量减少用户误操作的可能。在一些组件上要使用图片按钮,提示用户各个组件的作用和操作方法,以及在整个界面的颜色的搭配上要做到舒适,既不要让用户感到“刺眼”,也不要让用户感觉到界面太“冷淡”,界面的颜色一定要选择以暖色为主调。3 项目技术及开发环境的搭建3.1 搭建开发环境1. 准备所需软件包: Redhat linux 9.0,qt-X11-opensou
9、rce-src-4.5.32. 软件的安装:(1) 安装虚拟机Vmware虚拟机。(2) 在vmvare虚拟机中安装linuxRedhat9.0操作系统,并配置网络,内存,以及用户等等。(3)安装Qt开发包。 1.将qt-X11-opensource-src-4.5.3解压到/root/usr/local/trolltech目录下2.设置环境变量:3.在终端中进入解压的目录下4.在该目录下输入./configure检查安装包5、输入gmake编译程序;6、输入gmake install 进行程序的安装;7、安装完成,输入qmake -v 可以查看QT版本;3. QT技术介绍 QT是1991年奇
10、趣科技开发的一个跨平台的C+图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能,Qt很容易扩展,并且允许真正地组件编程,基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows平台上的 MFC,OWL,VCL,ATL 是同类型的东西。(1)优良的跨平台特性。Qt几乎支持现在流行的所有操作系统(2)面向对象。Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。 Qt 运用信号和槽机制来对消息进行处理,提高了各进程之间协同处理的效率。(3)丰富的 API。Qt 包括多
11、达 250 个以上的 C+ 类。甚至还包括正则表达式的处理功能。(4) 支持 2D/3D 图形渲染。(5)提供了多种类型的文档。例如QT Assistant,它是一个完全可自定义,重新分配的帮助文档,他可与基于Qt的应用程序运行,使用Qt助手,开发小组同样能够很大程度上加快文档的处理过程9。(6)XML 的支持。4. 采用Frambuffer5. 采用Libjpeg库libjpeg 是一个被广泛使用的JPEG 压缩/解压缩函数库(至少在Unix类系统下是广泛使用的),它能够读写JFIF格式的JPEG图像文 件,通常这类文件是以.jpg 或者.jpeg 为后缀名的 。通 过libjpeg库,应用
12、程序可以每次从JPEG压缩图像中读取一个或多个扫描线 (scanline,所谓扫描线,是指由一行像素点构成的一条图像线条),而诸如颜色空间转换、降采样/增采样、颜色量化之类的工作则都由libjpeg 去完成了。6. 采用Libmad库libmad 是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好,很多播放器如mplayer、xmms等都是使用这个开源库进行解码的;7. 采用freetype字体库它是开源免费 、高质量可移植的字体引擎,它提供统一的接口,来访问多种字体格式,使用的是高度模块化的程序库,可以灵活的进行裁剪。它是采用C语言实现的。4 软件的设计与实现4.1 概要设计通
13、过第二章的需求分析和第三章提到的技术的了解。对于电子相册的各种功能实现已经明了。接下来的概要设计将详细概述本软件的整体流程,规划软件怎样开发的总领提纲。4.1.1 设计思想本电子相册我们采用模块化编程,共5大模块:主控制、音乐播放、相册浏览、鼠标控制、键盘控制。在总体框架上运用多线程、多进程、信号量机制等。4.1.2 设计原则合理化分配内存,做到安全释放,避免内存泄漏。尽量减小内存的占用。4.1.3 模块概要设计如图(4-1)是系统功能的框架图。 图4-1 系统框架图鼠标点击,选择进入手动浏览,选择所要浏览的图片,通过鼠标和键盘,实现手动浏览的以下功能。图4-2 手动浏览框架图鼠标点击。选择进
14、入全屏播放,通过鼠标和键盘,实现全屏播放的以下功能。 图4-3 全屏播放框架图鼠标点击,选择进入音乐播放,通过鼠标和键盘,实现音乐播放的以下功能。图4-3 音乐播放框架图4.1.4电子相册的操作流程先在init5模式下输入命令source env.sh(设置一些环境变量)再运行service gpm stop(禁用系统鼠标)然后运行 ./main 1.进入欢迎界面 2.单击鼠标右键进入主界面 3.鼠标选择进入相应的功能模块 3.1手动浏览功能在手动浏览中,用户可以通过鼠标和键盘控制,查看上一张,下一张图片,可以实现图片的放缩。同时可以播放音乐。3.2 全屏播放 在全屏播放中,每张图片的播放都有
15、其各自的特效,可以实现图片的暂停和播放。3.3 音乐播放在音乐播放中,可以实现音乐的上一曲,下一曲播放,音量的调节。4.系统退出4.2 详细设计我们的相册主要包括:欢迎界面、主界面、相片浏览、音乐播放、鼠标控制、键盘控制,系统退出。每个模块的功能和具体的实现如下:4.2.1欢迎界面的设计进入应用程序最先执行的模块。在主函数即main函数中调用initscreen()函数。该函数首先打开Linux下的/dev/fb0以启动FrameBuffer的设备文件,通过使用framebuffer与jpeg库的 使用在linux的窗口下画图片,通过jpeg库将以后缀为.jpeg的图片转换为二进制数,然后在屏
16、幕下每个相素点画出相应的点。进而使欢迎界面的图片显示在我们的窗口上。接着通过ioctl()函数获取屏幕信息,并调整我们的图片大小以适应屏幕大小。4.2.2主页面的设计在欢迎界面下,单击鼠标左键,有四个按钮,分别是:手动浏览,全屏浏览,音乐播放,主控制。通过鼠标点击按钮进入相应的模块。4.2.3相片览模块的设计浏览模块又分为手动浏览和全屏浏览。对于图片的浏览,首先是定义一个屏幕的结构体,然后通过读设备文件的信息将其赋值,将屏幕的内存地址映射到结构体的u32_t mem成 员上,画点时在内存映射相对应的位置上画点。在销毁屏幕信息时解除对应地址的映射。画点函数在每张相片的显示中至关重要。我们的相片都
17、是以.jpeg为后缀的,此时就需要jpeg库来进行操作。首先是我们需要配置库,然后安装。依次需要的命令是./configure、make、make install。我们通过运用库函数中的一些函数来来对图片进行解码、缩放、相素转换、显示图片。我们的界面就是通过改变画图的位置来进行组合,形成我们所看到的界面。播放时的效果就是通过改变画图的方式。在手动浏览功能中,我们运用管道机制来实现鼠标和主进程之间的通信,从而控制图片的上一张下一张播放。在主函数中调用pipe()函数创建管道,接着调用fork()函数创建子进程,关闭父进程的写端和子进程的读端,这样就创建了从子进程到父进程的IPC通道。若鼠标点击下
18、一张按钮,就向管道中写入要求执行播放下一张的命令,主进程读取命令后,执行播放下一张图片的函数。在全屏浏览中,我们用C语言编写了不同的图片的展示方式。每张图片都设有各自的特效。4.2.4音乐播放的设计主要有播放功能,上一曲,下一曲,暂停播放,继续播放,音量的调节。我们通过操作音乐库,先是配置音乐库,然后通过改变音乐库中的播放函数来进行音乐播放的相应操作,音乐播放主要是通过全局变量的设定来操作(播放、下一首、当前播放的序号、停止播放)我们的全局变是是通过读鼠标在界面中所单击的位置来置位的。4.2.5鼠标控制的设计首先我们要画一个鼠标,并且记录鼠标的初始位置,点击位置,以及相应键的响应。先定义了一个
19、鼠标状态结构体typedef struct u8_t btn; u8_t x; u8_t y; mouse_t;定义一个数组放的是颜色的宏定义,通过使用framebuffer,来画点,画出鼠标的形状,在每次使用鼠标前,先把鼠标对应位置的数据保存起来,用来等鼠标移开时恢复其原来的数据。还有解决鼠标的边界问题。当鼠标移动到超出屏幕时,令他停在屏幕边界。最后把现在鼠标的状态通过管道写出去,然后其他子进程通过读出鼠标的状态判断自己相应的操作。在整个软件执行阶段,鼠标的工作量是最大的!4.2.6键盘控制的设计通过读取标准输入判定并做出相应的操作首先是注册一个信号,通过标准输入来读,然后通过getchar
20、()函数来获取键盘的输入。判断鼠标的输入是否是一个q,如果是q则发送一个SIGQUIT来终止程序的进程。不是,则把键盘输入的值通过进程传递给音乐进程,音乐进程通过判断键盘输入的值来实现上一首,下一首,暂停,播放功能。4.2.7主控制的设计 一个父进程和四个子进程,通过管道和信号量机制来实现进程之间的通信。4.3 数据结构1.双向链表 首先建立一个链表的结构体,然后通过后值插入法,在链表的结点中填加数据,并且通过结构体中的数据ID号来寻找相对应的数据。typedef struct nodechar data255;struct node *prior,*next;ListNode;typedef
21、 ListNode* LinkList;typedef structLinkList head;LinkList rail;List;2.文件操作通过打开一个文件夹,读出文件夹下所有的文件,并把所有的文件路径名加入到双向链表的数据中,然后通过传递链表的头结点,每个函数来做相应的操作。 4.4 编码的实现本文档关键性核心代码参见附录。5 软件测试软件的测试在开发的过程是一个不可缺少的关键性环节,要开发一款性能优良的软件,必须要进过严格的软件测试,只有通过严格测试的软件才是一款优秀的软件。通过软件测试可以找出其中潜在的bug、逻辑上的错误等非人为潜在危险,并及时的对软件进行修改,减少在用户使用过程
22、中不必要的麻烦。5.1 性能测试表5.1 软件测试NO.场景测试步骤预期结果测试结果欢迎界面1欢迎调试运行开始进入欢迎界面符合主界面2主界面单击鼠标左键进入主界面符合手动浏览3手动浏览选择浏览图片显示所选图片符合4手动浏览单击上一张按钮显示上一张图片符合5 手动浏览单击下一张按钮显示下一张图片符合6手动浏览单击放大按钮实现图片的放大符合7手动浏览单击缩小按钮实现图片的缩小符合8手动浏览单击退出按钮退回到主界面符合全屏浏览9全屏浏览选择全屏浏览按钮进入全屏浏览模式符合10全屏浏览单击鼠标左键进入暂停模式符合11全屏浏览单击鼠标左键恢复播放模式符合12全屏浏览单击退出按钮退回到主界面符合音乐播放1
23、3音乐播放单击播放按钮进入音乐播放符合14音乐播放点击键盘左键播放上一曲音乐符合15音乐播放点击键盘右键播放下一曲音乐符合16音乐播放单击暂停按钮音乐暂停符合17音乐播放单击音量增加按钮音量增加符合18音乐播放单击音量减小按钮音量减小符合退出系统19退出系统单击退出系统按钮退出系统符合5.2 硬件上测试将软件安装到真实的Arm物理设备上进行测试。测试的步骤相同,测试的结果符合开发要求。6 设计总结通过完成此项目的开发,学习和巩固了所学的编程知识,同时也学习了一些诸如Qt界面编程的新技术,开拓了自己的视野以及知识面,增强了自己动手解决问题的能力,具体做出如下总结:本系统是基于linux操作系统下
24、进行的,充分应用了QT界面编程技术,并且应用了C+面向对象的思想,大量运用类(class),完成了对界面所有组件的编写,运用信号(signal),槽函数(slot),把各按钮与功能实现函数相联系,完成了诸如界面切换,音乐播放等功能。系统基本上实现了所预期的功能。但是由于知识的局限以及个人经验不足等原因,有的功能还不是很理想,诸如音乐播放不流畅等问题。综合这些过程,正如一句老话“学无止境”,今后还需要不断的完善和充实自己。参考文献:1 丁秋林.Java应用中的汉字乱码问题分析J.计算机技术与发展期刊,2006,16(1):158-161.2 Chao Wang,Wei Duan,Jianzhan
25、g Ma,Chenhui Wang.The research of Android Systemarchitecture and application programmingJ.Computer Science and Network Technology(ICCSNT),2011 International Conference,Page(s):785-790.3 柴若楠等.音视频同步技术综述J.计算机系统应用,2011,20(11):223226.4 施佳子.iPhone平台移动流媒体播放器的实现与优化D.武汉:华中科技大学,2009,05.5 .AndroidOL.http:/zh.w
26、/wiki/Android.6 柯元旦.Android内核剖析M.北京:电子工业出版社,2011.7 杨丰盛.Android技术内幕M.北京:机械工业出版社,2011.8 简洪波.基于Symbian平台的移动流媒体客户端的研究和实现D.武汉:华中科技大学,2007,01.9 王世江.Google Android开发入门指南(第2版)M.北京:人民邮电出版社,2009.10 王冠宇,关永,赵冬生.JAVA在SQLite嵌入式数据库中的应用J.微计算机信息,2006,22(1):9495.11 陈佳科,刘冀伟,洪英杰,董晓宇.基于无线网络环境下的移动流媒体系统的实现J.微计
27、算机信息,2005,21(1):109110. 12 Wenhao Wang, Mingyu Gao.Design of embedded media player based on S3C2440 and SDL_FFMPEGJ.Electrical and Control Engineering (ICECE),2011 International Conference.2011, Page (s):29792982.13The Electronic Photo Album Based on Linux SystemAbstract: With the constant progress of science and technology, our study and life are changing with the changing. Photo album has can't satisfy people's needs, electronic photo album gradually became the mainstream of today's photo album. Through the anal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海洋牧场生态修复技术创新创业项目商业计划书
- 教工学校学生安全测试题及答案解析
- 外科护理学肺穿刺题库及答案解析
- 叉车安全专项培训试题库及答案解析
- 高州中医院岗前培训考试及答案解析
- 云计算大数据分析报告
- 2025年除湿干燥机行业研究报告及未来行业发展趋势预测
- 2025年纺织制造行业研究报告及未来行业发展趋势预测
- 玻璃厂报警记录保存实施细则
- 2025年锻压设备行业研究报告及未来行业发展趋势预测
- 幼儿园数学活动《6和7的认识》课件
- 大语言模型与安全 课件 第3章 多模态大语言模型
- 人民医院开展“改善就医感受提升患者体验”主题活动实施方案
- 2025四川成都崇州市国有资产监督管理局市属国有企业面向社会招聘中层管理人员和员工19人笔试模拟试题及答案解析
- 2025年《医疗器械质量管理规范》培训试题(附答案)
- 2025年小学生宪法素养竞赛题库
- 2025年php考试题及答案笔试
- 骨折固定与康复技术新进展
- 美国学前教育史
- 海关AEO高级认证供应链安全培训2025.7.14(一)
- 防压疮护理课件
评论
0/150
提交评论