




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重重 庆庆 电电 子子 工工 程程 职职 业业 学学 院院 毕业设计(论文)开题报告毕业设计(论文)开题报告 系系 别别 计算机应用系 专专 业业 嵌入式技术 班班 级级 姓姓 名名 学学 号号 指指导导教教师师 一、一、毕业设计毕业设计的内容和意的内容和意义义: :(500 字左右) 毕业设计的内容: 本论文主要研究设计了一种基于嵌入式音乐播放器系统。设计 环境是基于 Linux 操作系统,以 3.5 寸触摸屏 S3C2440 为核心处 理芯片,实现 MP3 的基本功能。 毕业设计的意义: 随着芯片技术的快速发展,嵌入式系统的性能逐步提高,功能 也越来越丰富。嵌入式系统在众多领域的应用给我们
2、的生活带来了 便利,并且对人们的生活方式的改变和生活质量的提高具有重要的 影响。嵌入式系统是当前最热门、最具发展前途的 IT 应用领域之 一。包括手机、电子字典、可视电话、数字相机(DC)、数字摄像机 (DV)、UDisk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、 智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制 系统、医疗仪器、航天航空设备等都是典型的嵌入式系统。因此,通 过嵌入式培训成为专业的嵌入式技术人才,其职业发展空间较大。 二、二、文献文献综综述述: :(300 字左右) 在很多有关嵌入式技术的文献之中,无疑都离不开硬件开发平 台,软件开发平台,系
3、统环境的搭建,程序设计 C/C+这几个板块, 可见这几块的重要性,嵌入式技术有一个很大的范围,可以说在我 们的生活中无处不在,了解和学习嵌入式技术已经不是潮流而是一 种趋势,在本文中所列出的文献当中大多也是对这几个板块的介绍, 以及嵌入式软件应用,ARM 开发与应用等一些期刊论文、学位论 文的参考文章,从中也可以明确我们学习嵌入式的方向,以及所需 掌握的知识点和设计的要点,更重要的是,是毕业设计的参考和模 板。 三、三、工作工作计计划及方案划及方案论证论证: :(500 字左右) 工作计划: 1、期限:自 2010 年 12 月 15 日起至 2011 年 4 月 20 日 2、具体进度安排:
4、 时 间 完 成 内 容 2010.12.15 至 2011.01.25 首先查阅资料了解嵌入式开发平台的工作原理。 2011.01.26 至 2011.02.26 了解 linux 的基本命令,熟悉 linux 下的 C 语言编程,熟悉 线程、进程、以及各个通信和信号量的编程方法。弄懂通 过应用程序使用 3.5 寸触摸屏实现 MP3 的基本功能,作出 其方案图 2011.02.27 至 2011.03.27 在经过详细研究下,通过应用程序使用 3.5 寸触摸屏实现 MP3 的基本功能,作出其方案图,实际操作安装和调试。 2011.03.28 至 2011.4.20 完成毕业论文的撰写工作 方
5、案论证: 首先了解嵌入式开发平台的工作原理,实现在硬件平台上烧些 嵌入式系统;了解 linux 的基本命令,熟悉 linux 下的 C 语言编程, 熟悉线程、进程、以及各个通信和信号量的编程方法。 在以上的基础下通过模块化的编程思想逐步编写实现 MP3 的 各个功能的 C 语言程序,通过将每个功能的实现、验证、测试,然 后再将每个功能模块添加进去,整体实现 MP3 的每个功能。 MP3 的功能要求: 1、显示播放列表 2、当前播放的歌曲名字,字体为白色,背景为蓝色 3、可以通过点击相应的歌曲名字,播放相应的歌曲 4、实现歌曲的播放、暂停、上一首、下一首 5、实现快进功能 6、静音功能,声音大小
6、可调 模块化的思想是现在很多公式所使用的方式,这样不仅可以节 约人力,也可以节约产品的开发周期,更能事项产品的维护,在程 序设计中的一种分而治之的算法也证明了这种思想的先进性和可 行性。 四、四、参考文献:参考文献:(不少于 10 篇,期刊类文献不少于 7 篇) 1周立功ARM 微控制器基础与实践M北京航空航天大学出版社,2003,1:12 31 2Trogen.MultiThread Programming for LinuxM.Addison-Wesley 1999:160172 3陈为军基于 U-BOOT 的 S3C44B0 的引导程序设计实现J嵌入式软件应用, 2007(1):1131
7、14 4单成刚基于 ARM 的嵌入式 BOOTLOADER 设计与启动过程JARM 开发与应用, 2006(11):139140 5 学位论文 王森林 基于嵌入式 Linux 的多媒体播放器设计,西安交通大学硕士研究 生学位论文 2007 6 学位论文 陈宁 便携式多媒体播放器(PMP)系统中嵌入式 Linux 的研究与应用 2007 7 学位论文 周炜 基于嵌入式 Linux 无线流媒体播放器的设计与实现 2008 8 期刊论文 王灵芝.陈磊松.WANG Ling-zhi.CHEN Lei-song 基于嵌入式 Linux 与 QT 的 MP3 播放器的设计-漳州师范学院学报(自然科学版)2
8、009,22(1) 9 学位论文 刘燕 嵌入式 Linux 音频播放器的设计与实现 2009 10期刊论文 王森林.庄圣贤.WANG Sen-lin.ZHUANG Sheng-xian 基于嵌入式 Linux 的 MP3 播放器设计-重庆工学院学报(自然科学版)2007,21(3) 11 学位论文 胡小龙 基于嵌入式 Linux 的播放器的设计与实现 2006 12 孙纪坤,张小全,嵌入式 Linux 系统开发技术详解基于 ARM.人民邮电 2006.6 13 李新峰 何广生 赵秀文, 基于 ARM 9 的嵌入式 Linux 开发技术,北京:电子工业 出版社,2008 五、指五、指导导教教师师
9、意意见见: : 指导教师(签字) 日期: 六、六、审查审查意意见见: : 教研室负责人:(签字) 日期: 系部负责人:(签字) 日期: 注:内容为四号仿宋体 基于基于 LinuxLinux 音乐播放器的设计与实现音乐播放器的设计与实现 摘摘 要要 随着 21 世界的到来,人类进入了 PC 时代。在这一阶段, 嵌入式技术得到了飞速发展和广泛应用。由此,本文提出了 一种基于嵌入式 Linux 音乐播放器的设计方案。 本文中主要介绍在嵌入式 linux 操作系统编写实现 MP3 播放,显示播放列表,当前播放的歌曲名字字体为白色,背 景为蓝色,通过点击相应的歌曲名字播放相应的歌曲,以及 暂停、上一首、
10、下一首、快进、静音和声音大小调节功能的 设计与实现。 主要内容涉及到嵌入式系统的介绍,linux 操作系统的安 装,VMware 虚拟机的安装与应用,交叉编译环境的搭建与运 用,linux 下的 C 语言编程,开发板 linux 系统的烧写, MPlayer 的使用与移植,线程与进程间的通信,信号量的使用, 触摸屏的理解与使用等内容。 关键词关键词:嵌入式;linux;MP3;VMware;C 语言; ABSTRACTABSTRACT With the advent of 21st century,humanity has entered the PC era.At this stage,em
11、bedded technology has been rapid development and wide application.Thus,we propose a music player based on embedded Linux design. This article focuses on the preparation of the implementation of embedded linux operating system,MP3 player,the Play list,the currently playing song name font is white,the
12、 background is blue,the name of the song by clicking the appropriate corresponding play songs,and the suspension,on a,next,fast forward,mute,and sound regulatory function of the size of the design and implementation. Mainly related to the introduction of embedded systems,linux operating system insta
13、llation,VMware virtual machine installation and application of cross-compilation environment and application of structures,linux under the C programming language,development board linux systems programming,MPlayer use and transplantation,threads and inter-process communication,semaphores use, unders
14、tanding and use of the touch screen and so on. KeyKey wordswords: Embedded; linux; MP3; VMware; C language; 目目 录录 第第 1 章章 绪绪 论论.1 1.1 嵌入式操作系统的简介.1 1.2 嵌入式操作系统的发展.1 1.3 使用实时操作系统的必要性.3 1.4 嵌入式操作系统 LINUX.4 第第 2 章章 开发环境介绍开发环境介绍.6 2.1 实验平台的了解.6 2.2 VMWARE 6.0 安装与LINUX操作系统安装.7 2.2.1 vmware6.0安装.7 2.2.2 Li
15、nux操作系统安装.8 2.2.3 VMware tools的安装.10 2.3 交叉编译环境的搭建.12 2.4 TFT_触摸屏工作原理.13 2.4.1对触摸屏的理解.13 2.4.2触摸屏简单程序的开发.14 第第 3 章章 功能分析与方案论证功能分析与方案论证.16 3.1 功能分析.16 3.2 可行性分析.16 3.3 方案设计.16 第第 4 章章 MP3 播放器的实现播放器的实现.18 4.1 对MPLAYER的理解与使用.18 4.1.1 简介.18 4.1.2 生成arm平台上的mplayer.18 4.1.3 slave模式说明.20 4.2 显示歌曲或者视屏清单.22
16、4.3 对指针的理解与运用.24 4.3.1指针就是一个整数.24 4.3.2 C 的按值传递.25 4.3.3 *和系统 内核很小,具有可裁剪性,可扩充性和可移植性,可以移植到各种 处理器上;较强的实时性和可靠性,适合嵌入式应用。这些嵌入式实 时多任务操作系统的出现,使得应用开发人员从小范围的开发中解 放出来,同时也促使嵌入式有了更为广阔的应用空间。 20 世纪 90 年代以后,随着对实时性要求的提高,软件规模不 断上升,实时内核逐渐发展为实时多任务操作系统(RTOS),并作为 一种软件平台逐步成为目前国际嵌入式操作系统的主流。这时更多 的公司看到了嵌入式系统的广阔的发展前景,开始大力发展自
17、己的 嵌入式操作系统。除了上面的几家老牌公司以外,还出现了 Palm OS,Windows CE,嵌入式 Linux,Lynx,Nucleus 以及国内的 Hopen,Delta OS 等嵌入式操作系统。随着嵌入式技术的发展前景 日益广阔,相信会有更多的嵌入式操作系统软件出现。 1.31.3 使用实时操作系统的必要性使用实时操作系统的必要性 嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛, 尤其在功能复杂、系统庞大的应用中显得愈来愈重要。 1嵌人式实时操作系统提高了系统的可靠性。在控制系统中, 出于安全方面的考虑,要求系统起码不能崩溃,而且还要有自愈能 力。不仅要求在硬件设计方面提高系统
18、的可靠性和抗干扰性,而且 也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏洞 和不可靠的隐患。长期以来的前后台系统软件设计在遇到强干扰时, 使得运行的程序产生异常、出错、跑飞,甚至死循环,造成了系统的 崩溃。而实时操作系统管理的系统,这种干扰可能只是引起若干进 程中的一个被破坏,可以通过系统运行的系统监控进程对其进行修 复。通常情况下,这个系统监视进程用来监视各进程运行状况,遇 到异常情况时采取一些利于系统稳定可靠的措施,如把有问题的任 务清除掉。 2提高了开发效率,缩短了开发周期。在嵌入式实时操作系统 环境下,开发一个复杂的应用程序,通常可以按照软件工程中的解 耦原则将整个程序分解为
19、多个任务模块。每个任务模块的调试、修 改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试 环境。 3嵌入式实时操作系统充分发挥了 32 位 CPU 的多任务潜力。 32 位 CPU 比 8、16 位 CPU 快,另外它本来是为运行多用户、多任 务操作系统而设计的,特别适于运行多任务实时系统。32 位 CPU 采用利于提高系统可靠性和稳定性的设计,使其更容易做到不崩溃。 例如,CPU 运行状态分为系统态和用户态。将系统堆栈和用户堆栈 分开,以及实时地给出 CPU 的运行状态等,允许用户在系统设计 中从硬件和软件两方面对实时内核的运行实施保护。如果还是采用 以前的前后台方式,则无法发挥 3
20、2 位 CPU 的优势。从某种意义上 说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中, 只有把 CPU 嵌入到系统中,同时又把操作系统嵌入进去,才是真 正的计算机嵌入式应用。 1.41.4 嵌入式操作系统嵌入式操作系统 LinuxLinux Linux 正在嵌入式开发领域稳步发展。因为 Linux 使用 GPL,所以任何对将 Linux 定制于自己特定开发板或 PDA、掌上 机、可佩带设备感兴趣的人都可以从因特网免费下载其内核和应用 程序,并开始移植或开发。许多 Linux 改良品种迎合了嵌入式市 场。它们包括 RTLinux(实时 Linux)、CLinux(用于非 MMU 设备
21、 的 Linux)、Montavista Linux(用于 ARM、MIPS、PPC 的 Linux 分发 版)、ARM-Linux(ARM 上的 Linux)和其他 Linux 系统。 嵌入式 Linux 的发展比较迅速。NEC、索尼已经在销售个人视 频录像机等基于 Linux 的消费类电子产品,摩托罗拉则计划在其未 来的大多数手机上使用 Linux,IBM 也制定了在手持机上运行 Linux 的计划。 数年来, “Linux 标准库”组织一直在从事对在服务器上运行的 Linux 进行标准化的工作,现在,嵌入式计算领域也开始了这一工 作。嵌入式 Linux 标准吸引了“Linux 标准库”以
22、及 UNIX 组织中有 益的元素。 第第 2 2 章章 开发环境介绍开发环境介绍 2.12.1 实验平台的了解实验平台的了解 处理器 S3C2440 采用了业界领先的 ARM920T 内核设计,其 内部集成了丰富的模块,另外该芯片主频高达 400533MHz,您可 以轻松上手 linux、wince 的设计与开发。本开发板基于开发考虑, 外设齐全,接口标准,扩展方便。 S3C2440 实验仪配备的硬件模块:SAMSING S3C2440 内存:SDRAM 64M 字节,NOR Flash:8Mbyte ,NAND Flash:64M 字节 NorFlsah NanFlash 通过跳线两种方式启
23、动 TFT LCD(3.5 寸真彩 26 万像素) 2 个串口,一个 USB 转串口(SPCP25A),解决学生笔记本电脑 没有串口无法调试的问题 CMOS 摄像头接口,可接配套 OV7720 摄像头模组 1 路 IRDA 红外线数据通讯口 1 个 10M/100M 网口 2 个 USB1.1 HOST 接口,1 个 USB1.1 Device 接口 1 个音频接口,立体声音频输出接口/音频输入接口 1 个 SD 卡接口 RTC(带有后备锂电池) 1 个标准 JTAG 接口 5V 开关电源供电,带电源开关和指示灯 1 个 EEPROM(AT24C08,IIC); 1 个 SPI 接口 Flas
24、h 芯片(AT93C46,可以做 SPI 驱动实验) 4 个小按键,4 个高亮 LED; 1 个蜂鸣器(带使能控制的短路块) 预留四路 ADC 接口(AD 实验) SPI I2C 总线引出 GPRS 总线接口预留(兼容凌阳 GPRS 模块) GPS 总线接口预留(兼容凌阳 GPS 模块) ZigbEE 接口预留(兼容凌阳 ZigBEE 模块) 总线接口引出 SATA 硬盘接口输出,外接 2.5 英寸串口移动硬盘,实现海量 数据存储 VGA,TV 接口输出,可以接显示器,电视机 GPIO 预留 16 个,方便扩展 2.22.2 vmwarevmware 6.06.0 安装安装与与 linuxli
25、nux 操作系统安装操作系统安装 2.2.12.2.1 vmware6.0vmware6.0 安装安装 1、双击运行 Vmware6.0 目录下的“Setup.exe”,在出现的界 面中点击“安装”。 2、安装完成后就可以双击“vmware.exe”来运行 VMWare 6.0 2.2.22.2.2 LinuxLinux 操作系统安装操作系统安装 新建虚拟机: 1、新建虚拟机。 2、选择标准配置向导。 3、选择客户机操作系统为 Linux,版本为 Red Hat Linux。 4、修改虚拟磁盘大小,最好不小于 10G。 5、最后检查相应设置,保证虚拟机的正确安装。 6、通过 Fedora 9
26、Live CD 镜像将 Fedora 9 安装到新建的 Linux 虚拟机中:双击 CD/DVD,打开选项。 7、选择使用 ISO 镜像,并加入 Fedora 9 Live CD 镜像的路 径。 8、设置内存大小。 Fedora 9 的安装,在虚拟机种进行: 1、打开虚拟机电源。 2、选择语言,并登陆进入系统。 3、点击桌面图标“安装到硬盘”,将 Fedora 安装到虚拟硬盘上。 4、选择键盘类型 U.S.English。 5、设置网络 IP。 6、选择时区。 7、设置 ROOT 密码。 8、创建分区在虚拟硬盘上。 9、开始安装 Live CD 上的镜像到虚拟硬盘上。 10、完成安装后关闭系统
27、。 11、设置 CD/DVD 配置到屋里驱动器上,相当于取出 ISO 镜像。 12、设置共享目录,便于以后开发使用。 13、接通虚拟机电源,开始配置 Fedora。 14、不需要创建一个普通用户账号,因为开发需要 root 权限, 我们可以直接使用 Linux root 用户来开发程序。 15、登陆到桌面。 16、点击“Continue”以特权身份登录。 17、到此我们的 Fedora 9 已经成功安装到了 VMWare 上,接着让我们把 vmwaretools 安装上使使用更方便。 工具包的安装:在此运用的是 Packages.iso,此包是把所有的 在运用过程中需要的软件包集成在一起的,其
28、中包括 Vmware 工 具包,armlinuxgcc 交叉环境调试工具等,对于 armlinuxgcc 这个工具在开发过程中运用非常广泛,所以在下 一节有专门的介绍。 Packages.iso 的安装: 1、将 Packages.iso 插入虚拟光驱。 2、CDROM 会自动挂载,并弹出文件夹,双击 install_env.sh,开始安装开发环境。如果没有自动挂载,请在 Terminal 窗口中输入 mkdir /mnt/cdrom 设置指定窗口 1 的前景色,用于图形、文字显示 TFT_PutPixel(DemoWindow1, 20, 20); 在工作窗口 1 中画点 TFT_Line(
29、DemoWindow1, 30, 30, 50, 50); 在工作窗口 1 中画线 TFT_Circle(DemoWindow1, 100, 100, 30, PAINT_SOLID); 在工作窗口 1 中画圆 TFT_Rectangle(DemoWindow1,100,100,500,400,PAINT_SOLID); 在窗口 1 中指定位置画矩形 TFT_SetTextPos(DemoWindow1, 30, 240); 文字显示位置设置 TFT_Print(DemoWindow1,”helloworldn”); 格式化信息打印输出函数 TFT_PutPicture(DemoWindow2
30、, 0, 0, RES_HAPPY1_BMP, IMAGE_SCALE); 在窗口 2 中指定位置显示图片,最后一个参数表示是否缩放 TFP 画图事例程序 见附录一 第第 3 3 章章 功能分析与方案论证功能分析与方案论证 3.13.1 功能分析功能分析 通过嵌入式 Linux 操作系统来完成音乐播放器的设计,通过 S3C2440 平台的 TQ2440 开发板,全新 3.5 寸数字触摸屏来完成音 乐播放器的各种功能,使播放器能够显示播放列表,通过点击相应 的歌曲名字来播放相应的歌曲,还能实现歌曲的播放、暂停、快进 静音等功能。 3.23.2 可行性分析可行性分析 计算机技术的发展,目前 Lin
31、ux 已被广泛应用于信息家电、数 据网络、工业控制、医疗卫生、航空航天等众多领域。在嵌入式领域, 由于价格低廉、结构小巧的各种微处理器的出现为外设连接提供了 稳定可靠的硬件架构,限制嵌入式系统发展的瓶颈就突出表现在软 件方面。近年来随着芯片技术的快速发展,嵌入式系统的性能逐步 提高,功能也越来越丰富。嵌入式系统在众多领域的应用给我们的 生活带来了便利,并且对人们的生活方式的改变和生活质量的提高 具有重要的影响。在这些领域中,消费电子产品的应用具有更为广 泛的潜力,尤其是便携式消费电子产品。 3.33.3 方案设计方案设计 本设计使音乐播放器基于嵌入式 Linux 在 S3C2440 这一功耗
32、极低的 ARM9 嵌入式 CPU 上实现的。通过 S3C2440 这一开发板, 将音乐播放器的各种功能实现出来。SYSTEM-2440 开发平台采用 核心板周边底板的模式,核心板为 6 层板,周边底板为 2 层板。 本平台严格按照 3C 及 CE 认证要求,同时严格满足信号完整性, 经过有多年相关经验的专业人士精心设计而成。将开发板与 PC 机 连接通过嵌入式 Linux 操作系统来进行音乐播放器的实现。首先了 解嵌入式开发平台的工作原理,实现在硬件平台上烧些嵌入式系统; 了解 linux 的基本命令,熟悉 linux 下的 C 语言编程,熟悉线程、进 程、以及各个通信和信号量的编程方法; 在
33、以上的基础下通过模块化的编程思想逐步编写实现 MP3 的 各个功能的 C 语言程序,通过将每个功能的实现、验证、测试,然 后再将每个功能模块添加进去,整体实现 MP3 的每个功能。 第第 4 4 章章 MP3MP3 播放器的实现播放器的实现 4.14.1 对对 mplayermplayer 的理解与使用的理解与使用 4.1.14.1.1 简介简介 MPlayer 是一款开源的多媒体播放器,以 GNU 通用公共许可 证发布。此款软件可在各主流作业系统使用,例如 Linux 和其他类 Unix 作业系统、微软的视窗系统及苹果电脑的 Mac OS X 系统。 MPlayer 是建基于命令行界面,在各
34、作业系统可选择安装不同的图 形界面。 4.1.24.1.2 生成生成 armarm 平台上的平台上的 mplayermplayer #tar zxvf MPlayer-1.0rc3.tar.gz #cd MPlayer-1.0rc3 配置: ./configure-host-cc=gcc-cc=arm-linux-gcc-target=armv4l- enable-static-disable-win32dll-disable-dvdread-disable-dvdread- internal-disable-dvdnav-disable-libdvdcss-internal-enable-f
35、bdev- disable-mencoder-disable-live-disable-mp3lib-enable-mad-enable- libavcodec_a -language=zh_CN #make 如果在当前文件下生成 mplayer 可执行程序其中 make 会出错, 需要更改 mplayer_src/libmpeg2/motion_comp_arm_s.S 中的代码, #vim MPlayer-1.0rc3/libmpeg2/motion_comp_arm_s.S 在最开始的地方添加: #ifndef HAVE_PLD .macro pld reg .endm #endif 保
36、存之后,再次 make,就 OK 了 主要配置选项说明 a、-host-cc=gcc 用来编译一些需要在 host 上执行的中间文件的,如 codec- cfg,出现 “codec-cfg 无法运行”等错误均是因为少了这句话的原因。 b、-cc=arm-linux-gcc 指定交叉编译器 c、-target=arm-armv4l 指定编译平台 e、-enable-static 设定静态连接,省去考很多库的麻烦,建议添加 f、-prefix=/tmp/mplayer 指定编译出的可执行文件放到什么地方,默认放到源文件所在 文件夹下。 g、 -disable-mp3lib -enable-mad
37、禁用 mplayer 自带的音频解码库,使用 mad 解码库,自带的解 码库 CPU 占用率较高的问题,实际经验证,不加此选项,编译可以 通过,但是没有什么声音输出。 h、-language=zh_CN 编译出的 Mplayer 版本 帮助、提示信息均为中文。 4.1.34.1.3 slaveslave 模式说明模式说明 mplayer 另外提供了一种更为灵活的控制方式,用来进行播放 控制,在 slave 模式下,MPlayer 为后台运行其他程序,不再截获键 盘事件,MPlayer 会从标准输入读一个换行符(n)分隔开的命令。 1)操作方法: #mplayer -input cmdlist
38、/会打印出一份当前 mplayer 所支持的所有 slave 模式的命令 方法一:从控制台输入控制命令 运行 mplayer -slave -quiet ,并在控制台窗口输入 slave 命令。 /-slave 启动从模式 /-quiet 不输出冗余的信息 方法二:从有名管道(fifo)输入控制命令 #mkfifo #mplayer -slave -input file= /用户可以通过往管道里写入 slave 命令来实现对应的功能 主进程创建一个无名管道和一个有名管道 2)常用到的 Mplayer 指令: loadfile string /参数 string 为 歌曲名字 volume 10
39、0 1 /设置音量 中间的为音量的大小 mute 1/0/静音开关 pause /暂停/取消暂停 get_time_length /返回值是播放文件的长度,以秒为单位 seek value /向前查找到文件的位置播放 参数 value 为 秒数 get_percent_pos/返回文件的百分比(0-100) get_time_pos/打印出在文件的当前位置用秒表示,采用浮 点数 volume abs /增大/减小音量,或将其设置为, 如果abs不为零 get_file_name/打印出当前文件名 get_meta_album/打印出当前文件的专辑的元数据 get_meta_artist/打印出
40、当前文件的艺术家的元数据 get_meta_comment /打印出当前文件的评论的元数据 get_meta_genre /打印出当前文件的流派的元数据 get_meta_title/打印出当前文件的标题的元数据 get_meta_year/打印出当前文件的年份的元数据 4.24.2 显示歌曲或者视屏清单显示歌曲或者视屏清单 1、利用 C 语言 struct dirent 结构体中的几个成员遍历文件夹 d_type:4 表示为目录,8 表示为文件 d_reclen:16 表示子目录或文件,24 表示非子目录 注:d_reclen:16 表示子目录或以。开头的隐藏文件,24 表示普 通文本文件,
41、28 为二进制文件等。 d_name:目录或文件的名称 结构体原型: #include struct dirent long d_ino; /*索引节点号 */ off_t d_off; /* 在目录文件中的偏移 */ unsigned short d_reclen; /*文件名长 */ unsigned char d_type; /* 文件类型 */ char d_name NAME_MAX+1; /* 文件名,最长 255 字符 */ 具体代码如下,仅供参考 #include #include #include void List(char *path) struct dirent* en
42、t = NULL; DIR *pDir; pDir=opendir(path); while (NULL != (ent=readdir(pDir) if (ent-d_reclen=24) if (ent-d_type=8) printf(普通文件:%sn,ent-d_name); else printf(子目录:%sn,ent-d_name); List(ent-d_name); printf(返回%sn,ent-d_name); int main(int argc, char *argv) List(argv1); return 0; 2、利用文件夹遍历,获得文件名,并从中筛选出为可以播
43、放的 文件(实现代码见附录二)。 4.34.3 对指针的理解与运用对指针的理解与运用 4.3.14.3.1 指针就是一个整数指针就是一个整数 指针,是一个无符号整数(unsigned int),它是一个以当前系统 寻址范围为取值范围的整数。32 位系统下寻址能力(地址空间)是 4G-byte(0232-1)二进制表示长度为 32bit(也就是 4B)。 int 类型也正好如此取值。 例证(一) 例证就是程序 1 得到的答案和程序 2 的答案一致。 (不同机器可 能需要调整一下 pT 的取值。 ) 程序 1: #include main() char *pT; char t=h; pT= put
44、char(*pT); 程序 2 : #include main() char *pT; char t=h; pT=(char *); putchar(*pT); 加上(char *)是因为毕竟 int 和 char *不是一回事,需要强制转 换,否则会有个警告。因为 char *声明过的类型,一次访问 1 个 sizeof(char)长度,double *声明过的类型,一次访问 1 个 sizeof(double)长度。 在汇编里 int 类型和指针就是一回事了。因为不论是整数还是 指针,执行自增的时候,都是其值加一。如果上文声明 char *pT;, 汇编语言中 pT 自增之后值为,可是 C
45、 语言中 pT+之后 pT 值为。 如果 32 位系统中, s 上文声明 int *pT;,汇编语言中 pT 自增之 后值为,可是 C 语言中 pT+之后 pT 值为。 为什么 DOS 下面的 Turbo C,和 Windows 下 VC 的 int 类型不 一样长。因为 DOS 是 16 位的,Windows 是 32 位的,可以预见,在 64 位 Windows 中编译,上文声明 int *pT;,pT+之后 pT 值为。 4.3.24.3.2 C C 的按值传递的按值传递 C 中函数调用是按值传递的,传入参数在子函数中只是一个 初值相等的副本,无法对传入参数作任何改动。但实际编程中,经
46、常要改动传入参数的值。这一点我们可以用传入参数的地址而不是 原参数本身,当对传入参数(地址)取(*)运算时,就可以直接在内 存中修改,从而改动原想作为传入参数的参数值。 编程参数值 #include void inc(int *val) (*val)+; main() int a=3; inc( printf(%d , a); 在执行 inc(时,系统在内存分配表里增加了一行“inc 中的 val”,其地址为新地址,值为 p=2003; *p=3000H *p 的值为多少? *p=*(*(p)=*(*(2003H)=*(3000H)=0300H。 那么 main() void (*fun)(i
47、nt *); int a=3; fun=inc; (*fun)( printf(%d , a); 4.3.74.3.7 指针的作用指针的作用 指针可以用来有效地表示复杂的数据结构,可以用于函数参数 传递并达到更加灵活使用函数的目的.使 C 语言程序的设计具有灵 活、实用、高效的特点。 4.44.4 播放器界面与功能键的设置播放器界面与功能键的设置 1、对 mplayer 所输出的信息进行重定向通过管道传输给父进 程 2、dup( )和 dup2( )函数的理解与使用 up 和 dup2 也是两个非常有用的调用,它们的作用都是用来 复制一个文件的描述符。 它们经常用来重定向进程的 stdin、s
48、tdout 和 stderr。 这两个函数的 原形如下: #include int dup( int oldfd ); int dup2( int oldfd, int targetfd ) 利用函数 dup,我们可以复制一个描述符。传给该函数一个既 有的描述符,它就会返回一个新的描述符,这个新的描述符是传给 它的描述符的拷贝。这意味着,这两个描述符共享同一个数据结构。 例如,如果我们对一个文件描述符执行 lseek 操作,得到的第 一个文件的位置和第二个是一样的。 下面是用来说明 dup 函数使用方法的代码片段: int fd1, fd2; fd2 = dup( fd1 ); 需要注意的是,
49、我们可以在调用 fork 之前建立一个描述符,这 与调用 dup 建立描述符的效果是一样的,子进程也同样会收到一个 复制出来的描述符。 dup2 函数跟 dup 函数相似,但 dup2 函数允许调用者规定一个 有效描述符和目标描述符的 id。dup2 函数成功返回时,目标描述符 (dup2 函数的第二个参数)将变成源描述符(dup2 函数的第一个参 数)的复制品,换句话说,两个文件描述符现在都指向同一个文件, 并且是函数第一个参数指向的文件。 下面我们用一段代码加以说明: int oldfd; oldfd = open(app_log, (O_RDWR | O_CREATE), 0644 ); dup2( oldfd, 1 ); close( oldfd ); 本例中,我们打开了一个新文件,称为“app_log”,并收到一个 文件描述符,该描述符叫做 fd1。我们调用 dup2 函数,参数为 oldfd 和 1,这会导致用我们新打开的文件描述符替换掉由 1 代表的文件 描述符(即 stdout,因为标准输出文件的 id 为 1)。任何写到 stdout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年超高分子量聚乙烯纤维研究分析报告
- 2025年中国钢琴行业市场全景分析及发展趋势预测报告
- 中国机床工具行业市场运行态势及投资战略研究报告
- 中国红外耳温枪行业市场运行现状及投资战略研究报告
- 中国伸缩臂叉装车行业市场调查研究及投资前景预测报告
- 电子束辐照行业深度研究分析报告(2024-2030版)
- 实验室仪器装置项目风险评估报告
- 企业事故教育课件
- 儿童绘画旅行箱课件
- 2025年中国特种工业缝纫机行业市场深度分析及发展趋势预测报告
- 福建厦门双十中学2024~2025学年高一下册第一次月考数学试题
- 2024年四川省甘孜县林业局公开招聘试题带答案详解
- 中医推拿知识培训课件
- 团播培训直播课件
- 天津市和平区二十一中2025年英语七年级第二学期期末考试试题含答案
- 2025至2030中国电茶炉行业市场发展现状及竞争格局与投资发展报告
- 2025-2030中国转轮除湿机行业前景动态及投资规划分析报告
- 八年级上册语文必背课文资料合集
- 针灸医学的历史回顾之古代名医的针灸先例
- 【艾瑞咨询】2024年中国健康管理行业研究报告494mb
- 年产xxx千件自行车配件项目可行性研究报告
评论
0/150
提交评论