mp3播放系统毕业设计.doc
《mp3播放系统毕业设计.doc》由会员分享,可在线阅读,更多相关《mp3播放系统毕业设计.doc(39页珍藏版)》请在三一办公上搜索。
1、 设计题目: 基于arm-linux的mp3播放系统 学 院: 计算机与信息学院 专业年级: 2008级电子信息工程 学 号: 081151077 学生姓名: 陈立臣 指导教师、职称: 罗超助教 2011年 5 月 10 日The newsstand management system College: Computer and Information Science Specialty and Grade: Electronic Information Engineering, 2007 Number: 081151077 Name: ChenLichen Advisor: Assistan
2、t Professor LuoChao Submitted Time: May 10,2012 目 录摘要IABSTRACTII1 引言- 1 -1.1目的和意义- 1 -1.2 研究现状- 1 -1.3课题研究的内容及目标- 1 -2 二次开发平台的构建- 3 -2.1 开发平台介绍- 3 -2.2 XDK2使用指南- 13 - 2.2.1运行环境.- 13 2.2.2终端概述.- 13 2.2.3XDK2的安装- 13 3基于MINIGUI用户界面设计-16 -3.1嵌入式MiniGUI介绍-16 -3.2用户界面设计-16 -3.2.1 菜单级别- 16 -4 报刊亭数据库管理- 21
3、-4.1 SQLite介绍- 21 -4.2数据结构跟数据库操作函数封装- 22 -5 终端与平台的数据通信- 25 -5.1 HTTP协议介绍- 25 -5.2平台与终端的通信的编程实现- 27 -6 结束语-32 -参考文献-33 -致谢-34 -摘要随着报刊亭在各个城市迅速发展,极大的方便了现代人们对于报刊购买的需求,通过报刊亭人们可以更加便利的购买到书籍和报刊。但是,传统的报刊亭的人工管理报刊进销存业务,由于报刊进销存管理工作量大,易出错,已经不能满足人们日益增长的需求。因此,报刊亭的智能化管理系统对于报刊亭管理人员进行对报刊进销存业务管理具有十分重要的意义,极大地提高工作效率。本文设
4、计并实现了基于XDK2二次开发平台的报刊管理系统。针对本课题所采用二次开发平台,详细介绍了XDK2开发平台的使用指南,接着在终端实现基于MiniGUI的系统用户界面的设计,数据库的创建和操作,最后介绍了终端与平台通讯协议,最后根据通讯协议,实现平台与终端的通信。报刊管理系统采用了MiniGUI作为管理系统的图形用户界面支持系统,数据库则采用SQLite,应用程序完全基于插件的形式实现,具有高度的灵活和可配置性。用户可以很方便的通过配置,设置需要实现的各个插件以及相应功能,有利于功能扩展。 关键词:MiniGUI;二次开发;XDK2;嵌入式系统AbstractWith the rapid dev
5、elopment of the newsstands located in different cities,they brings great convenience to the modern people for purchasing the newspaper. people can be more convenient to buy the newspaper and books through the newsstands .However, the traditional artificial management of the newsstand invoicing needs
6、 so much workload and is prone to errors.It can not meet the growing needs of people.Therefore,the newsstands intelligent management system has the very vital significance for the people to manage the newsstandss invoicing and can improve the work efficiency.This paper designed and realized the news
7、stand management system based on the XDK2 second development software system. According to the second development platform I adopted in the topic,I particluarly introduce the development platforms user manual, then I realize the design of user interface on the terminal based on MiniGUI and the creat
8、ion and operation. At last, the paper introduces the communication protocol between terminal and platform .According to communication protocol, I realize the communication between the platform and the terminal.The newsstand management system uses the MiniGUI as the the graphical user interface suppo
9、rt system, and the database used the SQLite.The applications are completely based on the form of the plugin ,so it have a high degree of flexibility and can be easily configured. The users can easily make the configurations and set the need to implement various plug-ins and the corresponding functio
10、ns, benefiting to function expansion.Keywords : MiniGUI; Secondary development; XDK2;Embedded system 1 引言1.1目的和意义近几年来,报刊亭在各个城市遍地开花,已成为城市的公共设施,极大的满足了现代社会对于报刊的购买需求。传统的报刊亭采用人工管理报刊进销存业务,工作量大,易出错,极大的限制了报刊书籍零售的发展,已不能完全满足现代信息社会的需要,人们对报刊亭采用智能化和信息化管理产生了需求,针对现状开发了本系统。本系统是采用嵌入式系统作为开发终端进行的二次软件开发,采用MiniGUI作为本系统的
11、图形用户界面支持系统,数据库采用SQLite3。嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可以剪裁,对功能,可靠性,成本,体积和功耗有严格要求的专用计算机系统1。通过在终端进行软件二次开发实现本系统的功能,能很好满足报刊亭管理人员对于书籍和报刊的管理,有效的提高效率。1.2 研究现状MiniGUI是由北京飞漫软件技术有限公司创办的开源Linux图形用户界面支持系统,经过近些年的发展,MiniGUI已经发展成为比较成熟的性能优良的、功能丰富的跨操作系统的嵌入式图形界面支持系统。它目前已经广泛应用于通讯、医疗、工控、电子、机顶盒、多媒体等领域。SQLite,是一款轻型的数据库,是遵守A
12、CID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。1.3课题研究的内容及目标1) 课题研究内容(1) XDK2二次开发平台的搭建;(2) 基于MiniGUI的图形用户界面设计;(3) SQLite数据库常用操作函数封装;(4) 终端
13、与平台通信的实现;2) 课题研究目标实现报刊管理系统,有效管理进销存业务,即用户可以通过本系统进行报刊的零售结算,并能查询销售记录,并通过与平台的通信实现报刊的进货请求,实现进货功能,并能通过本系统对于报刊亭存货的统计与查找。2 二次开发平台的构建2.1 开发平台介绍XDK2,是福建实达电脑设备有限公司开发的针对某些终端产品在Windows平台下的二次开发软件。它作为一个插件,集成于Visual Studio 2008,结合Visual Studio 2008强大的IDE编程环境,提供了应用程序向导模板、工程设置、终端程序编译、程序下载以及应用程序模拟器等功能,为开发终端产品应用程序提供了一个
14、高效、易用的二次开发平台,大大缩短了开发周期和难度。1) 程序结构XDK的程序结构包括三个主要部分:附加库,插件库和应用程序。XDK生成的应用程序,完全基于插件的形式实现。使用插件的好处在于高度灵活和可配置性。用户可以很方便的通过配置,设置需要实现的各个插件以及相应功能。实质上,XDK提供的二次开发功能,即是用户可以自行编写其中的一个功能插件。 2) 主要程序库介绍(1) LibCommon LibCommon公用函数库。Common将系统需要的常用函数,内码转换等接口统一到Common库中。主要包含有以下几个功能。 编码转换:Base64, Unicode编码转换,MD5加密算法实现。 压缩
15、解压:Zip压缩,解压算法实现。 XML解析:TinyXML进行XMLDom解析。 其他杂项:字符串处理,链表处理,文件操作,ini 操作等相关使用函数。 (2) OSLayer OSLayer,系统适配层。将系统相关的函数进行封装后调用。 提供的接口有以下几个方面: Semaphore相关接口:信号量封装实现 Event相关接口:系统事件接口的实现。 Thread相关接口:线程相关接口封装。 Timer相关接口:定时器相关接口。 Mutex相关接口:信号互斥锁实现。 Trace模块:对程序的调试信息可以过滤,并设置优先级后,按需输出。 (3) LibNet Sock相关接口:对TCP端口的打
16、开,关闭,发送,接收数据等接口进行了二次封装。 PPP相关接口:建立PPP连接相关操作接口3) 程序插件架构LINUX的程序很大程度上依赖插件实现功能。有了插件功能,给予了LINUX应用程序高度的灵活和可扩展性。新功能的添加不需要编译整个应用程序。只需添加入相应的功能插件即可。插件模块通过插件加载器加载插件,并从插件中获取插件信息。一般在插件加载的初始化工作中,还会向服务管理器注册服务接口,并提供给插件模块获取。 要将插件配置进应用程序,首先配置插件配置文件addins_conf.ini。 插件配置文件结构: AddIns modules=插件一,插件二 插件一 name=插件名称 comma
17、nd=插件模块 插件参数一 desc=插件描述 depends=依赖插件一 依赖插件二 state=插件状态0/1 一个配置文件的例子如下:AddIns modules=MainMenu,AddIns2 MainMenu name=菜单插件 command=MainMenu.dll desc=提供菜单的创建等功能 depend= state=1 AddIns2 name=插件示例二 command=Modules.dll desc=插件示例二,用于检验及演示插件系统的插件集成方案的可行性 depend= state=enable插件程序加载和获取接口代码示例: 下面以XDK的modules示例
18、程序为例,首先需要继承IPlugin类,并派生出继承类。主要继承OnLoad,OnUnLoad,GetDllVer三个虚函数,给插件模块加载调用。 在实例化插件类的时候,需要注意一点:新的插件类的类名,尽量避免重复,不同插件间重复的类名,有可能造成插件载入出错的情况。TestPlugin.hpp class CTestPlugin: public IPlugin public: virtual int APICC OnLoad(int nArgc, char * ppcArgv); virtual int APICC OnUnLoad(); virtual int APICC GetDllVe
19、r(); ;将类实例化后,需要实现接口GetInterface。这个接口是插件模块找到插件实例化类的桥梁。通过这个借口,将实例化之后的接口类指针传给插件模块。实现代码如下: extern C DLL_API IRoot * APICC GetInterface(char* pcInterfaceName) if (strcmp(pcInterfaceName, IPlugin) = 0) return new CTestPlugin; return NULL; OnLoad函数主要负责实现首页显示插件加载信息,注册服务池接口,主菜单,暗码等工作。具体的代码将在后面的章节讲述。4) 服务池服务池
20、实质上是一个服务链表,为其他插件提供添加服务及获取服务的接口,服务池是插件与系统,插件与插件之间交互的一个中间站,各插件既可以从这里获取其他插件的服务,也可以通过这里为其他插件提供服务。服务池使用示例: 注册服务接口。 IServicePool * piServicePool = (IServicePool *)OSL_GetServicePool(); piServicePool-AddService(AppFrame_IStartPage, new CStartPage(); 获取服务接口。 IServicePool * piServicePool = (IServicePool *)OS
21、L_GetServicePool(); IDesktop*piDesktop=(IDesktop*)piServicePool-GetService(AppFrame_IDesktop);5) MainMenu 插件MainMenu插件创建和管理一个动态菜单树,这棵树可以动态的添加,删除,修改菜单项及子菜单树,每个子菜单也跟其父菜单具有同样的性质,即这是一棵级数不受限制的菜单树,可以根据用户的需要,随意的在菜单树中扩展菜单及子菜单。菜单插件使用示例: /获取根菜单 HMAINMENU hRoot = piMainMenu-GetRootMenu(); /获取第一级子菜单 HMAINMENUIT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mp3 播放 系统 毕业设计
链接地址:https://www.31ppt.com/p-2392520.html