基于嵌入式操作系统的MP3播放器设计_第1页
基于嵌入式操作系统的MP3播放器设计_第2页
基于嵌入式操作系统的MP3播放器设计_第3页
基于嵌入式操作系统的MP3播放器设计_第4页
基于嵌入式操作系统的MP3播放器设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大庆师范学院本科生毕业论文基于嵌入式操作系统的MP3播放器设计院 (系)物理与电气信息工程学院 研 究 方 向 嵌入式开发 学 生 姓 名 学 号 指导教师姓名 指导教师职称 2013年 5 月 20 日IV摘 要时下,随着科技的不断发展和创新,嵌入式领域也得到了飞速的进步,而消费者日益增长的消费需求也刺激着嵌入式技术的不断前进。消费者的主要对象为电子与多媒体结合的产品,多媒体部件逐渐成为嵌入式产品中重要组成部分。所以,嵌入式技术与多媒体产品的相互融合显得尤为重要,并结方便消费者操作的图形界面将越来越广泛的应用到个人消费类电子产品的设计开发中。基于以上背景,本文研究并实现了基于嵌入式操作系统的

2、MP3播放器。本次设计开发了一种应用于Linux系统的音乐播放器。该播放器基于QT技术和 Linux 操作系统, 利用 GNU 开发工具进行软件开发, 使用 C99标准的 C 语言编写.可以运行在ARM920T 硬件平台。介绍了MP3播放器的软硬件开发平台。细致分析了软件开发平台的建立,展示出了MP3播放器各功能实现的详细设计开发步骤,所计的MP3播放器能够支持优盘、SD卡等外接移动存储设备并支持完善的调节音量、上一曲、下一曲、快进快退、播放暂停、显示播放进度等条等功能。简述了MP3播放器的开发过程、ARM的硬件组成,Linux 操作系统的安装和使用程序移植的的方法,进而成功实现了该播放器的开

3、发和最后的在硬件环境下的使用。关键词:c+软件语言;MP3播放器;Linux操作系统;ARM920TAbstract Nowadays,with the continuous development of science and technology and innovation , the embedded field has also been a rapid progress , the increasing consumer spending also stimulates demand for embedded technology continues to advance .The

4、 main object of consumers for the combination of electronic and multimedia products, multimedia components has gradually become an important part of embedded products . Therefore , embedded technology and multimedia products merging is particularly important, and easy to knot the consumer - to-use g

5、raphical interface will be more widely used in personal consumer electronics product design and development . Based on the above background , this paper embedded operating system - based MP3 player .Developed in this paper applied to the Linux system music player . The player based on the QT and Lin

6、ux operating systems , GNU development tools for software development , using the C99 standard C language and can run on ARM920T hardware platform . MP3 player hardware and software development platform . Detailed analysis of the establishment of a software development platform , demonstrating the M

7、P3 player to achieve the detailed design development steps , the MP3 player can support USB flash drives ,SD card and an external removable storage devices and supports perfect to adjust the volume on the track , next track , fast forward and rewind , playback is paused , playback progress bar and o

8、ther functions . Describes MP3 application , embedded operating system and driver transplant , and then successfully achieved the player to the development board transplantation .Keywords:c+lauguage;MP3 player;Linux system;ARM920T 目录第一章 绪 论11.1 课题背景及意义11.2 嵌入式系统现状11.2.1 处理器的发展11.2.2 处理器的种类21.2.3 Lin

9、ux操作系统的发展31.2.4 Linux操作系统的特点3第二章 开发环境分析52.1 开发板介绍52.2 LINUX系统的安装62.3 交叉编译器7第三章 方案设计分析93.1 设计目标93.2 方案设计93.3 可行性分析9第四章 系统软件开发104.1 功能实现流程图104.2 播放器软件实现104.2.1 播放与暂停功能的实现104.2.2 上下曲功能的实现114.2.3 音量调节功能的实现124.3 交叉编译器的搭建134.4 系统调试运行结果13第五章 结 论16参考文献17谢 辞18附录19大庆师范学院本科毕业论文(设计)第一章 绪 论1.1 课题背景及意义随着科技的不断进步和发

10、展各类科技产品走入到普通消费者手中,而这些科技产品中电子产品占据着相当大的比重,各种各样电子产品充实着普通消费者的日常生活。目前,随着科技的发展,多功能的ARM处理器取代了功能相对单一的单片机处理器,成为市场上新的主流处理器,ARM的计算能力不断增强,模块功能不断完善,应用适用范围也不断地扩大着,所以了解并掌握基于ARM框架下的LINUX系统的开发显得更为重要。而且在设计开发过程中,充分利用Linux操作系代码开源、统稳定性高、可裁剪可移植性、和兼容性好等优点,去设计基于Linux操作系统的音乐播放器的开发,同时采用QT界面技术与GUI图形用户界面的MP3音乐播放器,完美的实现MP3音乐播放器

11、的相关功能。嵌入式作为当前的热门的发展行业,嵌入式技术广泛的引用于工业控制、设备通信、医疗仪器、智能家具等领域,而且广泛的应用于手机、PDA等消费类电子产品中。作为现在主流的音乐存贮格式MP3 作为常用的音乐存贮格式,数据压缩失真率低,再次播放效果好。所以MP3音乐播放器在这些个人消费电子设备中实现显得十分有竞争力。1.2 嵌入式系统现状随着科技的发展,智能化,便携化,快速化的发展,嵌入式系统技术也将获得跟好的发展空间。美国著名未来学家尼葛洛庞帝曾建在访问我国时预言,3至4年后嵌入式智能电脑,将是笔记本和因特网之后最伟大的发明。我国著名嵌入式系统专家沈绪榜院士也曾在公开场合语言过嵌入式的发展前

12、景和未来,并在其98年11月计算机的发展一文中,对未来20年以嵌入式系统和芯片为基本的计算机发展进行了科学的描述和展望。1.2.1 处理器的发展ARM代表高级RISC机,它是微处理器行业的知名企业,始建于20世纪90年代初的一个谷仓,似乎是稍后SA的情况Linux大约在同一时间。该公司设计了大量高性能,低成本,低能量的RI ( RISC )处理器。 ARM的特点是只设计芯片,而不是生产。它将许多世界领先的半导体,软件和OEM厂商(如飞思卡尔,英特尔,三星,德州仪器等)的技术许可,并提供服务。背后隐藏着许多著名的企业,它不为多数人知晓,但它是仍然有着很高的利润依靠这些大公司负责,在这方面它很像是

13、高通通讯领域。 ARM架构大大提高,从最初的发展到现在,仍然是改善和发展。随着需求和技术的发展, ARM本身也是快速增长。 ARM已经由最初的ARM1一步步走的Cortex- A15 。 ARM内核不断进步,也导致了经济的快速发展。11.2.2 处理器的种类ARM公司已经开发了几个系列的ARM处理器内核。到目前为止,该系列是ARM11 。 ARM6和早期系列一直在市场上是很难见到的ARM7系列和更高级别的处理器没有进入市场的广泛认可。最常用的ARM7系列和ARM9系列,和ARM9E系列, ARM10系列, SecurCore系列, Intel的StrongARM的,XSCALE系列。ARM7系

14、列:包括ARM7TDNI ,的ARM7TDNI -S ,高速缓存处理器ARM720T宏蜂窝和扩大ARM7EJ-S Iazelle的。本系列产品广泛应用于多媒体和嵌入式设备,包括上网的设备,网络,调制解调器和移动电话, PDA和其它无线设备。ARM9系列:主要包括ARM9TDMI , ARM920T和ARM940T缓存处理器宏单元。该系列产品主要用于发动机管理系统,仪器仪表,安防系统,机顶盒,高端打印机,掌上电脑,网络计算机和智能手机与MP3音频和MPEG4视频多媒体格式。ARM9E系列:为综合处理器,包括ARM926EJ-S、带有高速缓存处理宏单元的ARM966E-S/ARM946E-S。该系

15、列强化了数字信号处理功能,可应用于需要DSP与微控制器结合使用的情况,将Thumb技术和DSP都扩展到ARM指令集中,并具有EmbeddedICE-RT逻辑,更好地适应了实时系统的开发需要。ARM10系列:包括ARM1020E和ARM1020E微处理器核心。其核心在于使用向量浮点单元(VFP) VFP10浮点高性能的解决方案,从而大大提升了处理器的整数和浮点性能,打下了坚实的基础用户界面, 2D和3D图形引擎应用程序,如视频游戏机和高性能打印机。SecurCore系列:包括SC100 , SC110 , SC200和SC210处理器核心。该系列产品的重点新兴的安全市场上的一个新的安全智能卡和其

16、他安全IC开发提供了一个独特的32位系统的设计,并有特定的防伪设计的处理器,从而有助于防止盗版的硬件和软件。StrongARM系列:StrongARM处理器将英特尔处理器技术和ARM架构相结合为一体,致力于为手提式通信和消费电子类设备提供理想的解决方案。Xscale系列:提供全性能、高性价比和低功耗的解决方案,支持16位Thumb指令和DSP指令。21.2.3 Linux操作系统的发展 实际上,Linux 操作系统就是一套免费供大家自由使用的开源系统。大家经常所说的Linux 就是指Linus Torvalds所撰写的Linux 操作系统的内核。当时的Linus 就是芬兰赫尔辛基大学的一名普通

17、的学生,他主要的学习方向里有一门课是操作系统,这门课程的主要内容是研究程序的执行和设计程序。而且这门课程还专门提供了一种称为Minix的初期UNIX系统。Minix 是一款仅为教学而临时设计的操作系统,功能十分有限。因此,和Minix 的众多使用者一样,Linus也希望能给它添加一些新的功能。在之后的时间里,莱纳斯,根据实际需要,编制的磁盘驱动器下载的文件访问新闻组,写了文件系统,以便能够阅读Minix文件系统中的文件。以这种方式, “当你有一个任务切换时,文件系统和设备驱动程序,这是UNIX需要有的至少其基本”。 0.0.1版本的Linux的诞生。莱纳斯决定从一开始就被添加到Linux内核开

18、发工作,通过互联网自由传播的Linux的源代码是在互联网上公布,让许许多多多爱好者和程序员。这个想法与FSF (自由软件基金会)资助发起的GNU (GNU不是UNIX )与自由软件的精神不谋而合。31.2.4 Linux操作系统的特点Linux 系统在现实应用中有很多突出的秀点尤其在技术特点上。在操作系统的发展过程中,它一直拥有者技术上的要到性优势。Linux 操作系统的特点和优势有很多方面,简单的说, Linux 具有一下特点:(1) 多用户多用户系统中的资源可以由不同的用户使用,各自具有自己的资源为每个用户使用该特定的权限,彼此独立。Linux 和Unix 都具有多用户的特性。(2) 开放

19、性 开放性是指系统遵循世界标准规范, 特别是遵循开放系统互连( OSI) 国际标准。(3) 良好的用户界面Linux 为用户提供了两个接口: 用户界面和系统调用。简明的Linux 用户界面是基于文本的命令行界面外观, 即 shell, 它既可以联机使用, 又可存在文件上脱机使用。Linux 还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施, 给用户呈现一个直观、易操作、高度互动的良好的图形化界面。(4) 设备独立性具有独立的操作系统的设备,可以简化工作,作为一个单独的文件中添加一个新的设备,通过一个外围设备。当您需要添加新的设备,在内核中的系统管理员增加必要的连接。这种连接,以

20、确保每次调用设备提供服务,以同样的方式来对付他们的内核。当一个新的和更好的外设被开发并交付给用户,允许该操作将这些设备连接到内核,可以不受限制地立即访问它们。(5) 多任务多任务是指计算机同时执行多个程序, 而且各个程序的运行互相独立。(6) 良好的可移植性Linux 是一种可移植的操作系统, 能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。(7) 可靠的系统安全Linux 已经采取了一系列的安全和技术措施,包括访问控制,读,写保护子系统,审计跟踪,核心授权,在多用户环境的网络用户提供必要的安全。综上所述, Linux 系统正在走向成熟, 不仅与能与 Windows 分庭抗礼, 而

21、且还从其前辈手中夺取几分天下。Linux 在嵌入式产品开发中的应用也已经十分广泛。为了进一步促进在这方面的应用, 在 Linux 2.6 中, 引入了很多非常有利于开发嵌入式应用的功能, 使Linux 的发展前景更为光明。4第二章 开发环境分析2.1 开发板介绍 如图2-1为开发板图片:图2-1以下介绍开发板模块:(1) 电源接口电源连接器的输入电压不要超过7V,TQ2440配置的电源适配器是5V的,在不知道适配器输出电压时,请向适配器的供应商确认输出电压或自行用电压表测试输出电压;以防止因为输入电压过大使开发板出现烧毁的情况。(2) Nor/Nand选择开关当从Nor Flash启动时,请在

22、开发板开机前将开关拨到远离绿色接口的地方。当从Nand Flash启动时,请在开发板开机前将开关拨到靠近绿色接口的地方。(3) 音频输入输出接口TQ2440提供的音频接口完全按照标准接口提供,绿色为音频输出接口,红色为音频输入接口。(4) USB接口(USB Host和USB Slave)TQ2440开发板有两个USB端口,一个USB主机接口USB A端口(开发板上面,作为主机,主要用于U盘,USB摄像头) 另外一个是USB B口(开发板上的USB Deive接口,使用标配的USB延长线,连接到PC,用于数据传输)。当使用USB下载功能时,需要连接标配提供的USB延长线到开发板和PC连接。(5

23、) RTC备份电池默认出厂时安装的电池。(6) 串口接口串行口在TQ2440开发板是一个非常重要的接口TQ2440通过它与PC和开发板直接互通传输的数据,调试功能等。TQ2440开发板提供了一个标准的串行电缆直接连接到串行电缆,串行电缆的一端开发板串口使用开发板, PC机的串行接口的另一端,然后通过串口互动等操作。三串口扩展接口引出的串口的TX和RX引脚均是3.3V电压,如果需要使用232电平,请使用扩展芯片。(7) 网卡接口TQ2440开发板提供了100M网卡接口。在启动操作系统后,接上网线就可以进行网上操作;在uboot的下载模式下面可以使用TFTP下载数据开发板。(8) Jtag接口在T

24、Q2440开发板中,Jtag的用途是当Nand Flash或Nor Flash中没有uboot时,使用它烧写uboot进去;或者是进行仿真是时使用它。(9) 系统总线接口引出了数据总线和地址总线等。(10) SD卡接口接SD卡时。接口面朝下插入即可,支持SD卡和SDHC卡。(11) 电源开关 控制着整个开发板的供电,需要开机时请拨动该开关到靠经电源指示灯的方向,关机时拨动该开关到反方向。52.2 LINUX系统的安装Linux 系统对硬件的要求很低一些低端设备上就可以运行,而且如果只是想在字符设备上运行,那么我感觉一台386 的设备已经完全的可以用来运行Linux 了;但是如果只想运行Wind

25、ows,那么只需要一台16MB内存的机器即可,600MB存贮盘的486计算机就可以了。这样比较起来比那些需要256MB内存,2.0GBHz的操作系统要好的多了,这就是Linux的优势所在。(1) 安装准备在开始安装之前,首先需要了解一下机器的硬件配置,包括以下几个问题。1)有几个硬盘,每个硬盘的大小,如果有两个以上的硬盘哪个是主盘。2)内存有多大。3)显卡的厂家和型号,有多大的显存。4)显示器的厂家和型号。(2) 检测安装将磁盘放入电脑后会出现安装界面,单机界面上的“Skip”挑过即可。接下来选择语言和键盘,选择“简体中文”。键盘选择默认的“美国英语”即可。(3) 磁盘分区按照提示往下进行,会

26、提示选择安装方式是“个人桌面”、“工作站”、“服务器”还是“定制”,其中若选择“个人桌面”、“工作站”或是“服务器”,则之后系统会自动选择它所要需要的软件,为了增加灵活性,可选择“定制”安装。可以通过双击空闲磁盘空间,或者单击“新建”为Linux 来创建一个新的磁盘分区。(4) 引导程序选择由于现在往往存在着多系统,因此Linux 为用户提供了GRUB 系统引导管理器,直接依次单击“确定”和“下一步”按钮即可。然后是网络的设置要求此时就要按网络情况而定。为了安装以后能够驱动起来,就要把防火墙关掉防止产生问题。2.3 交叉编译器编译器就是把一些高级语言翻译为机器能够识别的机器语言的程序。一个主流

27、编译器的主要工作步骤是:源代码 预处理器 编译器 汇编程序 目标代码 链接器 可执行程序。 (1) 预处理在编译之前进行的工作,预处理包括头文件的处理,文件的处理和宏定义的处理。(2) 编译编译时读取程序的字符流,对之前的软件语言语法的分析,可以将自己编写的较高级的语言转化成为汇编语言。 (3) 汇编汇编就是把刚刚形成的汇编语言转变成机器码的过程,而处理的每一个汇编文件都将经过这个步骤,并且最终形成自己的目标文件以便于被机器识别。(4) 链接上一级形成的目标文件并不能马上就被机器识别并执行,产生的目标文件还有许多的后期工作没有完成,链接的主要功能就是完成相关工作,将有关联的文件都相互的连接起来

28、,使这些文件最终一起成为一个整体从而被机器识别并执行。6第三章 方案设计分析3.1 设计目标此次设计的主要目标是实现MP3的开发,并使其能够运行在ARM开发板上,实现的主要功能有:歌曲的播放、暂停、上一曲、下一曲、快进、快退、添加、删除等功能,从而制作出一款可以在不同软件平台运行的音乐播放器。3.2 方案设计本方案设计过程中主要考虑两个方面更:软件方面,硬件方面。软件部分包含Madplay可执行程序,lidmad解器码库,TFT触摸屏驱动代码,以及linux操作系统,arm-linux-gcc交叉编译,内核,根文件系统以及在Windows下的连接工具,烧录软件等。硬件部分包括STC2440开发

29、板,串口线,并口线,LCD触摸屏,5V变压器,带串口、并口的PC机。7必须要了解嵌入式系统平台的工作原理,完成在硬件平台上烧些嵌入式系统;了解linux的基本指令令,熟悉linux下的C语言编程,熟悉线程、进程、以及各个通信和信号量的编程方法,在以上的基础下通过模块化的编程思想逐步编写实现MP3的各个功能的C语言程序,通过将每个功能的实现、验证、测试,然后再将每个功能模块添加进去,整体实现MP3的每个功能。3.3 可行性分析随着科技的进步我们生活中数码产品的比重在不断的上升,同时产品的质量上也有了很大地提高。多媒体技术正在飞快的、以意想不到的方式进入人们生活的方方面面,如今趋势是生活的各个方面

30、都向着当今新的科技技术综合的方向靠拢。而这些大致可以归为两大类:视频,音频。但是如今多媒体的存贮格式越来越繁杂,主流的多媒体格式就有十几种,他们音质画质参差不齐,便携式设备上可用的播放器较PC上的完美应用还有不小的差距。这就显现出本课题的研究价值,具有较好的发展前景和契机。28第四章 系统软件开发4.1 功能实现流程图 如图4-1为功能实现流程图:获取当前歌曲列表中选歌没有歌曲信息有歌曲信息是否同一首歌暂停/停止同一首歌停止当前歌曲获取新歌曲信息,当前歌曲所有信息初始化记录当前歌曲信息杀死当前歌曲进程创建进程,在子进程中调用madplay处理歌曲信息音箱发声不同图4-14.2 播放器软件实现本

31、人的系统使用QT界面编程制作人机交互界面,使用代码完全开源的madplay解码器对MP3文件进行软件解码,MP3音乐播放器的主要功能有,播放、暂停、上一曲、下一曲、快进、快退、显示播放时间、添加删除歌曲等功能,接下来对其中一些重要功能做详细讲解。4.2.1 播放与暂停功能的实现 在QT中的QPushButton按钮类的槽函数调用Madplay解码器进行歌曲的播放,播放指令为路径名加madplay,实现播放功能。connect(play_button, SIGNAL(clicked(), this, SLOT(play_music(); 暂停功能也同样是调用Madplay指令Madplay -s

32、top将歌曲暂停。connect(stop_button, SIGNAL(clicked(), this, SLOT(stop_music();/创建子进程来播放歌曲 int pid = fork(); if (pid = 0) /调用madplay解码器播放歌曲 /&代表后台运行 change_volume(50); execl(/bin/madplay,./madplay, play_name.toLocal8Bit().data(),&, NULL); exit(0); printf(int grandparentn); status_label-setText(播放); /更新状态 t

33、itle_label-setText(play_name.section(/, -1); /显示歌曲名 time_accept(); /开始计时 if (process) /暂停 printf(stopn); system(killall -stop madplay &); /将时间信号断开实现时间暂停 disconnect(timer, SIGNAL(timeout(), this, SLOT(time_begin(); process = !process; sign = true; 4.2.2 上下曲功能的实现 再添加歌曲的时候同时建立一个索引表,将歌曲名标号,当想实现上一曲下一曲功能时

34、,索引表的值自动加一或者减一就可以找到上一曲或者下一曲歌曲,然后播放歌曲,这样就实现了上一曲下一曲的功能。上一曲:connect(PREV, SIGNAL(clicked(), this, SLOT(left_song();下一曲:connect(ExitMusic, SIGNAL(clicked(), this, SLOT(right_song();/上下曲功能void Mp3:right_song() printf(right_song testn); for(loop = 0; loop mic_list.count(); loop+) printf(loop = %dn, loop);

35、 if (play_name = list_widget-mic_list.at(loop) & (loop != list_widget-mic_list.count() - 1) stop_music(); play_name = list_widget-mic_list.at(loop + 1); get_timer = get_time(play_name.toLocal8Bit().data(); printf(play_namen ); int pid = fork(); if (pid = 0) execl(/bin/madplay, madplay,play_name.toLo

36、cal8Bit().data(),&,NULL); status_label-setText(播放); /更新状态 title_label-setText(play_name.section(/, -1); /显示歌曲名 time_accept(); /开始计时 break; 4.2.3 音量调节功能的实现 通过打开声卡设备通过ioctl函数控制mixer变量,为变量赋值从而实现音量调节共能。ioctl函数为ioctl(mixer, MIXER_WRITE(0), &arg);/调音量void Mp3:change_volume(int j) arg = j; FILE *mixer_fd;

37、int mixer; /打开声卡设备文件 mixer_fd = fopen(/dev/mixer, r); if (mixer_fd show(); return app.exec();*2.主窗口界面布局(mainwindow.cpp)#include mainwindow.hMainWindow:MainWindow(QWidget *parent):QWidget(parent) setMaximumSize(328,184); setMinimumSize(328,184); /添加背景 setAutoFillBackground(true); QPalette palette = t

38、his-palette(); Palette.setBrush(QPalette:Window,QBrush(QPixmap(./image2/345.png).scaled(this-size(),Qt:IgnoreAspectRatio,Qt:SmoothTransformation); setPalette(palette); /构建列表 list_widget = new PlayList; /label上添加图片 picture_label = new QLabel; picture_label-setPixmap(QPixmap(./image2/asd.png); status_

39、label = new QLabel(状态:); title_label = new QLabel(标题:); volume_label = new QLabel(音量:); volume_slider = new QSlider(Qt:Horizontal); volume_slider-setRange(0, 200); volume_slider-setValue(50); stop_button = new QPushButton(停止); stop_button-setFlat(true); / Stop_button-setStyleSheet(QPushButtonborder-

40、radius:5px;border-width:0px); PREV = new QPushButton(上一曲); PREV-setFlat(true); ExitMusic = new QPushButton(下一曲); ExitMusic-setFlat(true); play_button = new QPushButton(播放/暂停); play_button-setFlat(true); listing = new QPushButton(列表); listing-setFlat(true); lcd_number = new QLCDNumber; lcd_number-dis

41、play(00:00); lcd_number -setSegmentStyle(QLCDNumber:Flat); QTimer *timer = new QTimer; QSpacerItem *Vspacer = new QSpacerItem(20, 40, QSizePolicy:Minimum,QSizePolicy:Expanding); /布局 QHBoxLayout *layout_h1 = new QHBoxLayout; layout_h1-addWidget(volume_label); layout_h1-addWidget(volume_slider); QVBox

42、Layout *layout_v1 = new QVBoxLayout; layout_v1-addWidget(status_label); layout_v1-addWidget(title_label); layout_v1-addWidget(lcd_number); layout_v1-addItem(Vspacer); layout_v1-addLayout(layout_h1); QHBoxLayout *layout_h2 = new QHBoxLayout; layout_h2-addWidget(picture_label); layout_h2-addLayout(lay

43、out_v1); QHBoxLayout *layout_button = new QHBoxLayout; layout_button-addWidget(stop_button); layout_button-addWidget(PREV); layout_button-addWidget(play_button); layout_button-addWidget(ExitMusic); layout_button-addWidget(listing); QVBoxLayout *main_layout = new QVBoxLayout; main_layout-addLayout(la

44、yout_h2); main_layout-addLayout(layout_button); setLayout(main_layout); connect(listing, SIGNAL(clicked(), this, SLOT(show_list();void MainWindow:show_list() list_widget-show();*3.Mp3具体功能实现函数(mp3.cpp)#include mp3.hint i;static bool p_s = true; /控制播放/暂停static bool process = false; /static bool sign =

45、 false; /控制信号的发送static int arg; /控制音int sta;int loop;int time_test = 0;int get_timer;Mp3:Mp3() status = true; /播放/暂停 connect(play_button, SIGNAL(clicked(), this, SLOT(play_music(); /停止 connect(stop_button, SIGNAL(clicked(), this, SLOT(stop_music(); /调音量 connect(volume_slider, SIGNAL(valueChanged(int), this, SLOT(change_volume(int); /下一曲 connect(ExitMusic, SIGNAL(clicked(), this, SLOT(right_song(); /上一曲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论