找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10234|回复: 4
收起左侧

LABVIEW音乐播放器程序设计

[复制链接]
ID:509018 发表于 2019-4-10 19:08 | 显示全部楼层 |阅读模式
内附LABVIEW音乐播放器程序和文档

LabVIEW早期是为了仪器自动控制所设计,至今转变成为一种逐渐成熟的高级编程语言。图形化程序与传统编程语言之不同点在于程序流程采用"数据流"之概念打破传统之思维模式,使得程序设计者在流程图构思完毕的同时也完成了程序的撰写。

LabVIEW将创建用户界面(称为前面板)的工作自然地融合到开发周期当中。LabVIEW的程序/子程序被称为虚拟仪器(VI)。每个VI都有三个组成部分:程序框图(Block Diagram)、前面板(Front Panel)和图标/连接器(Icon/Connector)。连接器是用来供其他的程序框图调用本VI之用。程序员可以利用前面板上的控制控件将数据输入正在运行的VI,或者用显示控件将运算结果输出。前面板还可以作为程序的接口:每个虚拟仪器(VI)既可以把前面板当作用户界面,作为一个程序来运行;也可以作为一个节点放到另一个VI程序框图中,通过连接器面板连接起来,而前面板则定义VI的输入和输出。这意味着每个VI,在作为子程序嵌入到一个大型的项目之前,都可以很方便地进行测试。


引 言  
第1章 方案设计
1.1播放器功能要求
1.2音乐播放器使用操作描述
1.3方案描述
第2章 前后面板设计
2.1前面板设计
2.2后面板设计
第3章 界面优化
第4章 设计思路
4.1程序设计要点
4.2最终调试
第5章 总结
个人心得

虚拟仪器(英语:Virtual instrumentation)技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。灵活高效的软件能帮助您创建完全自定义的用户界面,模块化的硬件能方便地提供全方位的系统集成,标准的软硬件平台能满足对同步和定时应用的需求。只有同时拥有高效的软件、模块化I/O硬件和用于集成的软硬件平台这三大组成部分,才能充分发挥虚拟仪器技术性能高、扩展性强、开发时间少,以及出色 的集成这四大优势。
在本次设计中,音乐播放器的基本功能应具备随机播放、选择播放、音量调节、歌单设计、歌词导入和界面美观等,如何用LabVIEW进行音乐播放器的设计是本次设计的目的,实现基本功能,增添新功能,对LabVIEW的使用设计有更深入的了解和应用。
1章 方案设计
1.1播放器功能要求
根据目前我们所接触到的音乐播放器来看,所有的音乐播放器都能实现的基本功能为上位机实现音乐的播放,可选择音乐路径进行特定音乐的播放,也可随机播放歌单内歌曲,并且能够完成调节音量,循环播放、关闭单曲循环以及手动导入歌词等功能。为了更加熟悉掌握LabVIEW的使用方法和提高应用其解决实际问题的能力,自己动手设计一个音乐播放器。
1.2音乐播放器使用操作描述
由于对软件及相关知识理解的程度有限,所设计出来的播放器功能简单,且需要特定的操作方法,具体注意事项如下:
1.程序运行之后请选歌或随机按键完成歌曲选择;
2.切换歌曲步骤:①按下关闭单曲循环按键;②点击退出按键;③选择切换歌曲选项;④点击选歌或随机按键;
3.请在退出按钮按下之前关闭单曲循环;
4.歌词显示需手动导入。
本次课程设计中设计的音乐播放器在程序刚开始运行时,默认为循环播放音乐的模式,如需单曲循环,不用执行其他操作。
1.3方案描述
在进行设计之前,首先综合自己日常生活中使用到的音乐播放器的功能,进行思考,确定出自己在设计中所希望实现的基本功能,并查阅相关资料。
在进行整体设计之前,首先将所要实现的功能进行罗列,基本明确所会用到的控件,并对各个空间的特点和使用方法进行了解,最终能够正确使用在程序设计中。对特定功能进行相应的程序图设计,然后整合程序图,最终完成音乐播放器的运行调试,并对前面板界面进行美化设计。
在设计中如何实现音乐的随机播放、如何实现音乐的循环播放以及歌词的导入、歌曲的选择都是本次音乐播放器基本功能能否实现的要点。
音乐的随机播放功能中,设置创建了一个路径数组,并且使用索引数组以及随机选择程序。其中随机选择程序中,如图1所示,用到了随机数控件、加减乘数值运算控件和While循环控件,在设置最大最小值后进行随机数选择,输入到索引数组中随机选择播放路径,实现随机播放功能;音乐的循环播放功能,用到While循环结构,对调用节点进行设置,实现音乐循环播放功能。


图1:随机数生成程序

2章 前后面板设计
2.1前面板设计
在前面板设计时,首先应考虑到界面的简单明了以及界面的美化程度,因此在本音乐播放器中,将路径选择控件进行隐藏,用按键进行选择;将不必要的控件进行隐藏,实现前面板的相对简洁,并设置用户使用提醒功能,对进入播放器的用户进行操作说明,最大程度上实现界面的友好;插入图片作为背景,给原本单一的面板增添一抹亮色。
LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。 LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。
位于前面板控件选板上的输入控件和显示控件可用于创建前面板。控件的种类有:数值控件(如滑动杆和旋钮)、图形、图表、布尔控件(如按钮和开关)、字符串、路径、数组、簇、列表框、树形控件、表格、下拉列表控件、枚举控件和容器控件等等。
两种最常用的前面板对象是数字控制和数字显示。若想要在数字控制中输入或修改数值,只需要用操作工具点击控制部件和增减按钮,或者用操作工具或标签工具双击数值栏进行输入数值修改。

                            图2:前面板设计

2.2后面板设计
后面板的框图程序中节点类似于文本语言程序的语句、函数或者子程序。LabVIEW有二种节点类型----函数节点和子VI节点。两者的区别在于:函数节点是LabVIEW以编译好了的机器代码供用户使用的,而子VI节点是以图形语言形式提供给用户的。用户可以访问和修改任一子VI节点的代码,但无法对函数节点进行修改。
端点是只有一路输入/输出,且方向固定的节点。LabVIEW有三类端点----前面板对象端点、全局与局部变量端点和常量端点。对象端点是数据在框图程序部分和前面板之间传输的接口。一般来说,一个VI的前面板上的对象(控制或显示)都在框图中有一个对象端点与之一一对应。当在前面板创建或删除面板对象时,可以自动创建或删除相应的对象端点。控制对象对应的端点在框图中是用粗框框住的,如例子中的A和B端点。它们只能在VI程序框图中作为数据流源点。显示对象对应的端点在框图中是用细框框住的。如例子中的A+B和A-B端点。它们只能在VI程序框图中作为数据流终点。常量端点永远只能在VI程序框图中作为数据流源点。
图框是LabVIEW实现程序结构控制命令的图形表示。如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。
连线是端口间的数据通道。它们类似于普通程序中的变量。数据是单向流动的,从源端口向一个或多个目的端口流动。不同的线型代表不同的数据类型。在彩显上,每种数据类型还以不同的颜色予以强调。
在后面板中,完成对程序的设计,应在实现基本要求的功能的基础上尽可能简化程序图,使得后面板程序图功能明确,能够使各个功能程序很好的结合在一起。

图3:后面板设计

3章 界面优化
在播放器应用之后,发现对歌单设置的路径选择控件可以隐藏起来,实现音乐播放器根据用户设置歌单随机播放音乐的功能;其次使用说明应在程序运行后立即弹出提示窗口,因此使用说明按钮可相对减小尺寸,并设置在界面四角的位置,以完成界面的优化,如图4和图5所示。

图4:优化后界面

图5:优化前界面

4章 设计思路
LabVIEW可以通过dll,ActiveX,.Net等接口插件插件访问第三方软件,但是对于部分不提供接口的软件,我们只能通过微软的API函数间接进行访问。
播放: MediaPlayer.Play()
暂停: MediaPlayer.Pause()
停止: MediaPlayer.Stop()URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单
fullScreen:boolean; 是否全屏显示
[controls] wmp.controls //播放器基本控制
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
音乐播放器最主要的功能就是实现音乐的播放,为了能够识别.mp3格式的音乐文件并正常播放,在设计中用到了WindowsMediaPlayer2控件,如图6所示。


图6:WindowsMediaPlayer2控件

选择好相应控件后需设计播放程序,首先应将路径转化为字符串,然后输入到WindowsMediaPlayer2控件的属性节点中,设置其他引用节点和调用节点,完成从路径到音乐播放,以及循环播放功能,如图7所示。

图7:音乐播放程序

音乐播放器还应该有随机播放功能,这建立在用户先设置歌单,随后根据设置歌单进行音乐随即播放,而歌单的设置在程序中用到了创建数组控件,用多个输入路径创建路径数组(如图8所示),用户选择相应歌曲文件路径,完成歌单的创建。创建好歌单后就要实现随机播放,在程序中用到随机数控件设计随机选择程序(如图1所示),利用索引数组对歌单内歌曲路径进行随机选择。

图8:路径数组创建

在这个音乐播放器中,增添了歌词手动导入程序,能够让用户手动将歌词文件导入到音乐播放器的歌词显示窗口中,如图9所示。

图9:歌词导入

4.1程序设计要点
音乐播放器的随机播放程序中,选择显示出来的路径字符串格式与正确路径格式有差别,为了使输入到播放程序的路径是正确格式,因此用到了搜索替换字符串,如图10所示,对错误的路径字符串格式进行正确的修改,能够使后续播放音乐程序正常运行。
替换子字符串 (函数):插入、删除或替换子字符串,偏移量在字符串中指定。
字符串(接线端):是要替换字符的字符串。
子字符串(接线端)包含用于替换字符串中位于偏移量处的长度个字符的子字符串。
偏移量(接线端):确定输入字符串中开始替换子字符串的位置。
长度(接线端):确定字符串中替换子字符串的字符数。 如子字符串为空,则删除从偏移量开始的长度个字符。
结果字符串(接线端):包含已经进行替换的字符串。
替换子字符串(接线端):包含字符串中替换的字符串。

图10:搜索替换字符串控件

在歌词导入程序中,由于要将歌词文件导入播放器歌词显示窗口中,需要使系统能够读取所导入的歌词文件,用到读取文本文件控件来解决这个问题,如图11所示,实现歌词导入显示功能。
读取文本文件:
从字节流文件中读取指定数目的字符或行。
提示(接线端):是在文件对话框的文件或目录列表以及文件夹上方显示的信息。
文件(接线端):可以是引用句柄或绝对文件路径。 如果是路径,函数将打开路径指定的文件。默认状态将显示文件对话框并提示用户选择文件。如指定空或相对路径,或者文件不存在,函数将返回错误。
计数(接线端):是函数读取的字符数或行数的最大值。 如提前到达文件结尾,函数实际读取的字符数和行数小于最大值。如计数<0,函数可读取整个文件。如勾选快捷菜单上的读取行,则只读取一行;如取消勾选该菜单项,则读取整个文件。
注:  如连线至总数的文件大小的数据类型不是32位整型,LabVIEW将强制转换数据类型为32位整型。VI不读取指定数量的数据。如连线–1至总数且要读取的文件太大,无法表示为32位整数,LabVIEW可返回错误。
错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。
引用句柄输出(接线端):是函数读取的文件的引用句柄。根据对文件的不同操作,可将该输入端连线至其它文件函数。如通过文件路径引用或文件对话框选定文件,默认状态下可关闭文件。如文件是引用句柄或连线引用句柄输出至其它函数,则LabVIEW认为文件仍在使用,直至它被关闭。
文本(接线端):是从文件读取的文本。默认状态下,该字符串中包含从文件第一行读取的字符。如连线计数接线端,则参数为字符串数组,包含从文件读取的行。如右键单击函数并取消勾选快捷菜单的读取行,则参数为字符串,其中包含从文件读取的字符。
取消(接线端):如取消文件对话框则值为TRUE。 否则,即使函数返回错误,取消的值仍为FALSE。
错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

图11:读取文本文件控件
如何将路径转换成控件可识别的字符串,是本次设计中最重要也最基本的问题,用到路径至字符串转换控件,如图12所示,完成转换操作,为接下来音乐播放器的正常运行打下基础。
路径至字符串数组转换:使路径转换为字符串数组,并显示是否为相对路径。
路径(接线端):是要转换为字符串数组的路径。 如路径为<非法路径>,字符串数组为空并且相对的值为FALSE。
相对(接线端):表明转换的路径为相对路径或绝对路径。 值为TRUE时表示相对路径。值为FALSE时表示绝对路径。
字符串数组(接线端):包含路径元素。 第一个元素是路径层次结构的第一步。对于支持多个磁盘的文件系统,第一个元素为磁盘名。如路径为网络路径,字符串数组的第一个元素包含服务器名,以及路径层次结构的第一步。字符串数组的最后一个元素为路径中指定的文件或目录。
字符串数组至路径转换:使字符串数组转换为相对或绝对路径。如数组中有空字符串,在路径输出中可删除空字符串前的目录地址,该动作与在目录结构中上移一层类似。
相对(接线端):表明创建相对路径或绝对路径。 如值为TRUE,函数可创建相对路径。如值为FALSE(默认),函数可创建绝对路径。如值为FALSE并且指定路径作为绝对路径不可用(例如,表示上一级的路径),函数可设置路径为<非法路径>。
字符串数组(接线端):包含要生成路径的元素的名称。 第一个元素是路径层次结构的最高级(对于支持多个磁盘的文件系统是磁盘名),最后一个元素是层次结构的最后一个元素。包含空字符串的路径可使LabVIEW进入层次结构的上一级。
路径(接线端):是作为结果的路径。

图12:路径至字符串转换控件
为了使该音乐播放器更友好,且未用户提供更好的使用体验,及时提醒用户操作规范以及防止用户误退出程序,进行了相关的程序设计,如图13、图14、图15、图16所示。
显示对话框信息:创建含有警告或用户消息的标准对话框。
消息(接线端):包含显示在对话框中的文本。
启用(接线端):启用或禁用Express VI。默认为开启或TRUE。
错误输入(接线端):描述该节点运行前发生的错误。
确定(接线端):单击对话框中的按钮1,则返回TRUE;单击按钮2,则返回FALSE。
错误输出(接线端):包含错误信息。该输出提供标准错误输出。
双击打开显示对话框信息:
显示的信息包含显示在对话框中的文本。
显示的按钮包含下列选项:
按钮1名称—指定按钮1上显示的文本。默认状态下,按钮1上显示的文本为确定。
按钮2名称—指定按钮2上显示的文本。默认状态下,按钮2上显示的文本为取消。只有勾选显示按钮2复选框时,才可改动该选项。
显示按钮2—指定是否在对话框中显示按钮2。

图13:显示对话框信息控件

图14:显示对话框信息控件对应的前面板显示效果

图15:退出LabVIEW前面板显示

图16:退出LabVIEW程序设计
4.2最终调试
完成所有程序设计以及前后面板设计之后,需要对音乐播放器的功能进行调试检查,检查其是否能够完成预期目标和功能,如图17所示。是否还存在优化方案以及能否增添新功能。
系统调试其重要性体现在它是保证系统质量和可靠性的最后关口,是对整个系统开发过程的最终审查。尽管在系统开发的各个阶段均采取了严格的技术审查,希望尽早发现问题并予以修正,但依然难免遗留下差错,如果在系统正式运行前没有发现并纠正这些差错,将对整个系统造成非常严重的影响。

图17:最终调试界面

5章 总结
本次课程设计主要是完成了基于labview的音乐播放器。系统主要功能是上位机实现音乐的播放,可选择音乐路径进行特定音乐的播放,也可随机播放歌单内歌曲,并且能够完成调节音量,循环播放、关闭单曲循环以及手动导入歌词等功能。系统设计虽然已经完成,但在设计过程中所使用的各种方法手段还需经过进一步的整理总结,从而成为我们受用一生的宝贵经验。
在本次音乐播放器的设计中,能够实现其基本功能,但还存在一些问题,如在歌词显示方面无法自动匹配歌词,只能让用户手动导入;其次歌单的前面板设置太过繁琐,应使其成为一个更加独立的功能;播放器操作需根据使用说明进行操作,操作上略显繁琐和死板这些问题。
个人心得
虚拟仪器课程设计中,我的题目是基于虚拟仪器的音乐播放器设计,在该设计中应该实现音乐播放器的基本功能,比如选择歌曲播放,调节音量大小等基本功能,在实现基本功能的前提下尽可能简化程序图,使得后面板的设计更加清晰明了。
在设计中,遇到了很多问题,一开始不知道选择哪个控件进行音乐的播放,再者就是一首歌放完之后就停止了,无法实现循环播放,对WindowsMediaPlayer2控件的了解并不深入,在它的属性节点和引用节点的设置上很迷茫。
其次音乐播放器应该实现随机播放功能,但如何实现该功能却是一个问题,最后我应用数组控件,创建了一个路径数组,完成了这个目标,并顺带解决了歌单设置这个功能。但由于考虑不全面,没有将歌单设置与播放界面独立开,显得前面板略显混乱。
在解决随机播放的问题中,还遇到路径字符串无法按照正确格式输出,导致播放器无法正常工作。最后在一次次尝试之后找到了解决方法,让我感觉到在遇到困难的时候就要更加的集中精力全身的投入。尽量自己找办法解决问题,在问题中学习,在问题中前进。
为期一周的课程设计结束了,在这周的控制虚拟仪器课设中,我有了不少的收获,掌握LabVIEW软件的使用方法,将理论知识理解联系到设计中,虽然设计中遇到的困难接二连三,但在努力下还是让问题得到了解决,让我对虚拟仪器的理解不再停留在书本上,而是自己动手进行设计,更加熟悉了LabVIEW这个软件。经过一周的课程设计,让我对虚拟仪器设计有了更直观的认识,之前学习的理论知识,通过一周的虚拟仪器课程设计,让我更清楚地了解了相关软件的基本应用方法。
虚拟仪器的课程设计除了让我对各种控件有了更进一步的认识之外,也让我感觉到了LabVIEW软件功能的强大,同时在解决设计中所遇到的各种问题的过程中,也让我体会到了自身对于理论知识掌握不足。体会到了解决问题的成就感和满足感,看到程序成功运行时的开心,同时让我明白理论知识和实际设计之间的联系和区别。


完整的Word格式文档51黑下载地址:
LABVIEW音乐播放器.zip (8.05 MB, 下载次数: 209)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:592810 发表于 2019-7-30 23:32 | 显示全部楼层
学习了,感谢!
回复

使用道具 举报

ID:639799 发表于 2019-11-11 16:15 | 显示全部楼层
感谢分享!!!
回复

使用道具 举报

ID:639799 发表于 2019-11-11 16:15 | 显示全部楼层
感谢分享!!!
回复

使用道具 举报

ID:658145 发表于 2019-12-7 13:42 | 显示全部楼层
特别感谢你的分享!!!!1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表