《虚拟仪器设计》课程设计基于LabVIEW的音乐播放器设计_第1页
《虚拟仪器设计》课程设计基于LabVIEW的音乐播放器设计_第2页
《虚拟仪器设计》课程设计基于LabVIEW的音乐播放器设计_第3页
《虚拟仪器设计》课程设计基于LabVIEW的音乐播放器设计_第4页
《虚拟仪器设计》课程设计基于LabVIEW的音乐播放器设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、成绩: 虚拟仪器设计课程设计题目: 基于labview的音乐播放器设计 学 院 精密仪器与光电子工程学院 专 业 生物医学工程 年 级 2013级 班 级 一班 姓 名 学 号 2015年 12月 26日目 录1设计目的32实施方案32.1总体规划32.2软件结构设计43实验结果94总结131设计目的本课题的想法来源于大二第一学期的一门课,叫“面向对象程序设计”,主要内容是应用c+语言编写程序,那时候的期末课程设计我就做的音乐播放器,虽然花费了很多时间,但是最后自己的播放器能运行也是很满足的。于是这次的labview课程设计打算尝试用另一种编程方式做一个音乐播放器。本音乐播放器能实现的一些基本

2、功能:打开本地音乐文件、播放音乐、暂停、停止、进度条显示并拖动、音量控制、快进快退、显示当前播放曲目、显示音乐文件路径以及“爱心”流水灯、实时显示当前系统时间等。另外还有一些功能没能实现,例如将多首歌曲添加到播放列表中,实现上一首、下一首切换;播放音乐时显示歌词;自动切换墙纸等,原因一方面是临近期末时间不够,另一方面是编程能力有限,而且对labview还比较陌生,不能自如地运用,希望以后有机会能加以改善。2实施方案2.1总体规划该音乐播放器的功能都可以通过软件程序来实现,所以不需要设计硬件结构,只需要一台自带windows media player和labview应用程序的pc机。在编程时先实

3、现最基本的功能,如打开文件,调用windows media player播放,并将路径和播放曲目显示在前面板上,之后再逐步添加控件实现暂停,停止,音量控制等功能,而流水灯,系统时间和用户指南按钮是在修饰前面板时临时想到的,于是最后就再加入了这些小功能。主程序流程大致为:点击打开文件按钮弹出文件对话框选择音乐文件显示文件路径和播放曲目调用windows media player播放歌曲,同时流水灯开始工作暂停、播放、音量控制等停止播放,同时流水灯停止工作,文件路径和播放曲目初始化退出程序。然后在主程序中附加了实时显示系统时间和用户指南按钮的程序。2.2软件结构设计1)打开文件并播放音乐程序框图如

4、图,先用一个事件结构检测“打开文件”按钮是否被按下,事件结构可等待直至事件发生,并执行相应条件分支,处理该事件。当按钮被按下后,布尔按钮“打开文件”的值改变使得事件结构执行,将原值赋给条件结构的条件。按钮的原值为false,条件结构执行假分支,弹出文件对话框,选择音乐文件后,通过“引用句柄至路径转换”函数输出文件路径,并在前面板的文件路径显示控件上显示。再利用“拆分路径”函数拆分出路径最后部分的名称,通过“连接字符串”函数将名称与“当前播放:”字符连接,显示在前面板的字符串显示控件上。同时将文件路径通过“路径至字符串转换”函数转换为字符串,并作为url地址(统一资源定位符)输入给属性节点,属性

5、节点能够获取或设置引用类的属性,该属性节点选择的labview类为iwmpplayer4,用以引用windows media player,选择属性为url,用以设置windows media player的文件读取位置,读取到该路径下的文件后,便开始播放音乐。2)暂停、播放和音量控制等功能播放暂停功能通过事件结构与条件结构的嵌套来实现,事件结构检测到“播放暂停”按钮按下后,执行对应分支,将原值赋给条件结构,条件结构执行“真”或“假”分支,通过调用节点的调用方法实现对windows media player的播放暂停控制。布尔按钮“播放暂停”的按钮动作设置为“单击时转换”,用以暂停与播放的交替

6、实现,在事件结构外加一个while循环可以重复查询按钮状态,这样在播放过程中可以不停切换播放和暂停状态音量控制也是通过属性节点实现,只不过将属性改为settings.volume,该属性可以直接控制播放器的音量条滑动,利用数值输入控件作为输入,在前面板上通过水平指针滑动杆控制。3)停止及初始化功能“停止”按钮用以停止播放当前歌曲并初始化一部分显示控件,停止功能与播放暂停功能放在同一个事件结构下,按下“停止”按钮后,通过调用节点实现windows media player的停止。初始化部分程序如图,执行“停止”事件时,通过应用程序控制中的vi服务器引用,访问窗格中的控件,再通过属性节点的cont

7、rols控件属性将各控件引用构成数组,作为输入量输入到for循环结构中,for循环的自动索引隧道每次读取数组的一个元素,作为循环依据。该数组输入到属性节点controls和调用节点controls中作为引用,属性节点controls选择属性为类id,类id用于确定labview对象的类,每个类都对应着一个id值,例如程序框图中的id值11对应的类为path路径,27对应的类为string字符串,通过两个“等于”比较函数和一个“或”函数就可以筛选出id值为11或27的类,输入到条件结构中的调用节点,从而完成文件路径显示控件和字符串显示控件的初始化,在前面板中的效果即按了停止按钮后,文件位置和播放

8、曲目为空白。4)流水灯流水灯的结构很简单,在前面板上将12个布尔指示灯排列成爱心状,在程序框图中用一个while循环持续运行,将true和false值分别赋给移位寄存器的7个元素,作为流水灯中7行指示灯亮灭的控制依据,设置100ms的等待时间控制流水灯闪烁的速度。while循环每执行一次,流水灯向下一行闪烁。流水灯开始工作的依据是“打开文件”事件结构前的true常量,当正确打开文件后,该常量才能传递至流水灯程序外的条件结构,从而执行内部的while循环;而停止工作是直接将前面提到过的“停止”按钮作为while循环的停止信号,即点击“停止”按钮后不仅当前歌曲停止播放,流水灯也会停止工作。5)退出

9、程序按钮“退出”按钮能停止正在执行的vi并退出labview程序,通过一个条件结构实现,结构中包含一个双按钮对话框和“退出labview”函数,当点击了“退出”后会弹出警告对话框,若点击对话框中的确定按钮则退出labview程序,若点击取消按钮则回到原界面。6)系统时间及用户指南此部分程序中,通过“获取日期/时间”函数返回当前系统时间的时间标识,再通过“格式化日期/时间字符串”将标识转化为字符串形式,显示在前面板的字符串显示控件上。外部套一个while循环来反复查询当前时间,实现实时显示系统时间的功能。“用户指南”按钮用于指导用户正确操作该音乐播放器,点击按钮后会弹出对话框,用户阅读完对话框消

10、息后,点击“我知道了”按钮可关闭对话框。3实验结果1) 前面板设计前面板如图,为尽量让音乐播放器给人一种温馨的感觉,在前面板中加入一些背景色和图标作为修饰,并将流水灯摆放成爱心状2) 日期时间及流水灯运行结果 运行程序后便显示系统时间,打开文件后流水灯工作,循环闪烁3) 打开文件,播放音乐点击“打开文件”按钮后弹出如图对话框选择文件后播放音乐,并显示文件位置和播放曲目,可滚动滑动条完整查看4) 播放暂停音量控制等功能如图为暂停状态,音量调节至38%左右5) 停止及初始化如图为停止状态,可见文件位置和播放曲目已经初始化6) 退出,用户指南左图为点击“退出”按钮后弹出的对话框,右图为点击“用户指南

11、”按钮后弹出的对话框7) 程序分析由于在实现了基本的播放、暂停和停止功能后,又给程序附加了一些功能,如“音量控制”、“退出”、“用户指南”等,为节约循环结构将这些功能都放入了一个大循环中,在“高亮显示执行过程”时程序执行无误,但是取消高亮后就老是报错,后来觉得可能是执行顺序的问题,这些循环与主循环应该是有先后顺序的,但是实际运行时是同时执行的,因此报错,之后我在这个循环中加入了0.05s的时间延迟,就能正常运行了。另外,这个程序运行一次只能播放一首歌,要想换歌必须重新运行程序。这一点很尴尬,若选择了音乐文件后再点击“打开文件”按钮,则程序就崩溃。原本我想在总的程序外加一个while循环,重新打开文件就重新开始循环,但是程序中有很多死循环,即反复查询控件状态的循环,所以加了while循环连第一遍循环都不能结束,也就无法实现重新

温馨提示

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

评论

0/150

提交评论