《虚拟仪器设计》课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩:《虚拟仪器设计》课程设计
题目:基于LabVIEW的音乐播放器设计
学院精密仪器与光电子工程学院
专业生物医学工程
年级2013级
班级一班
姓名凌伟
学号3013202225
2015年12月26日
目录
1设计目的 (3)
2实施方案 (3)
2.1总体规划 (3)
2.2软件结构设计 (4)
3实验结果 (9)
4总结 (13)
1设计目的
本课题的想法来源于大二第一学期的一门课,叫“面向对象程序设计”,主要内容是应用C++语言编写程序,那时候的期末课程设计我就做的音乐播放器,虽然花费了很多时间,但是最后自己的播放器能运行也是很满足的。于是这次的LabVIEW课程设计打算尝试用另一种编程方式做一个音乐播放器。
本音乐播放器能实现的一些基本功能:打开本地音乐文件、播放音乐、暂停、停止、进度条显示并拖动、音量控制、快进快退、显示当前播放曲目、显示音乐文件路径以及“爱心”流水灯、实时显示当前系统时间等。
另外还有一些功能没能实现,例如将多首歌曲添加到播放列表中,实现上一首、下一首切换;播放音乐时显示歌词;自动切换墙纸等,原因一方面是临近期末时间不够,另一方面是编程能力有限,而且对LabVIEW还比较陌生,不能自如地运用,希望以后有机会能加以改善。
2实施方案
2.1总体规划
该音乐播放器的功能都可以通过软件程序来实现,所以不需要设计硬件结构,只需要一台自带Windows Media Player和LabVIEW应用程序的PC机。在编程时先实现最基本的功能,如打开文件,调用Windows Media Player播放,并将路径和播放曲目显示在前面板上,之后再逐步添加控件实现暂停,停止,音量控制等功能,而流水灯,系统时间和用户指南按钮是在修饰前面板时临时想到的,于是最后就再加入了这些小功能。
主程序流程大致为:点击打开文件按钮→弹出文件对话框→选择音乐文件→显示文件路径和播放曲目→调用Windows Media Player播放歌曲,同时流水灯开始工作→暂停、播放、音量控制等→停止播放,同时流水灯停止工作,文件路径
和播放曲目初始化→退出程序。然后在主程序中附加了实时显示系统时间和用户指南按钮的程序。
2.2软件结构设计
1)打开文件并播放音乐
程序框图如图,先用一个事件结构检测“打开文件”按钮是否被按下,事件结构可等待直至事件发生,并执行相应条件分支,处理该事件。当按钮被按下后,布尔按钮“打开文件”的值改变使得事件结构执行,将原值赋给条件结构的条件。按钮的原值为False,条件结构执行‘假’分支,弹出文件对话框,选择音乐文件后,通过“引用句柄至路径转换”函数输出文件路径,并在前面板的文件路径显示控件上显示。再利用“拆分路径”函数拆分出路径最后部分的名称,通过“连接字符串”函数将名称与“当前播放:”字符连接,显示在前面板的字符串显示控件上。同时将文件路径通过“路径至字符串转换”函数转换为字符串,并作为URL地址(统一资源定位符)输入给属性节点,属性节点能够获取或设置引用类
的属性,该属性节点选择的LabVIEW类为IWMPPlayer4,用以引用Windows Media Player,选择属性为URL,用以设置Windows Media Player的文件读取位置,读取到该路径下的文件后,便开始播放音乐。
2)暂停、播放和音量控制等功能
播放暂停功能通过事件结构与条件结构的嵌套来实现,事件结构检测到“播放暂停”按钮按下后,执行对应分支,将原值赋给条件结构,条件结构执行“真”或“假”分支,通过调用节点的调用方法实现对Windows Media Player的播放暂停控制。布尔按钮“播放暂停”的按钮动作设置为“单击时转换”,用以暂停与播放的交替实现,在事件结构外加一个while循环可以重复查询按钮状态,这样在播放过程中可以不停切换播放和暂停状态
音量控制也是通过属性节点实现,只不过将属性改为Settings.volume,该属性可以直接控制播放器的音量条滑动,利用数值输入控件作为输入,在前面板上
通过水平指针滑动杆控制。
3)停止及初始化功能
“停止”按钮用以停止播放当前歌曲并初始化一部分显示控件,停止功能与播放暂停功能放在同一个事件结构下,按下“停止”按钮后,通过调用节点实现Windows Media Player的停止。
初始化部分程序如图,执行“停止”事件时,通过应用程序控制中的VI服务器引用,访问窗格中的控件,再通过属性节点的Controls控件属性将各控件引用构成数组,作为输入量输入到For循环结构中,For循环的自动索引隧道每次读取数组的一个元素,作为循环依据。该数组输入到属性节点Controls和调用节点Controls中作为引用,属性节点Controls选择属性为类ID,类ID用于确定LabVIEW对象的类,每个类都对应着一个ID值,例如程序框图中的ID值11对应的类为Path路径,27对应的类为String字符串,通过两个“等于”比较函数和一个“或”函数就可以筛选出ID值为11或27的类,输入到条件结构中的
调用节点,从而完成文件路径显示控件和字符串显示控件的初始化,在前面板中的效果即按了停止按钮后,文件位置和播放曲目为空白。
4)流水灯
流水灯的结构很简单,在前面板上将12个布尔指示灯排列成爱心状,在程序框图中用一个While循环持续运行,将True和False值分别赋给移位寄存器的7个元素,作为流水灯中7行指示灯亮灭的控制依据,设置100ms的等待时间控制流水灯闪烁的速度。While循环每执行一次,流水灯向下一行闪烁。
流水灯开始工作的依据是“打开文件”事件结构前的True常量,当正确打开文件后,该常量才能传递至流水灯程序外的条件结构,从而执行内部的While循环;而停止工作是直接将前面提到过的“停止”按钮作为While循环的停止信号,即点击“停止”按钮后不仅当前歌曲停止播放,流水灯也会停止工作。
5)退出程序按钮
“退出”按钮能停止正在执行的VI并退出LabVIEW程序,通过一个条件结构实现,结构中包含一个双按钮对话框和“退出LabVIEW”函数,当点击了“退出”后会弹出警告对话框,若点击对话框中的确定按钮则退出LabVIEW程序,若点击取消按钮则回到原界面。
6)系统时间及用户指南
此部分程序中,通过“获取日期/时间”函数返回当前系统时间的时间标识,再通过“格式化日期/时间字符串”将标识转化为字符串形式,显示在前面板的字符串显示控件上。外部套一个While循环来反复查询当前时间,实现实时显示系统时间的功能。