`
基于NI硬件的播放程序
1
大学毕业后进入公司就开始从事研发测试相关的工作,最初接触到的设备是BK2012,B&K Pulse,AP等设备。当时感觉Pulse,AP等可拖拉出来的测试分析配置界面比bk2012按钮操作方便了太多。当时就在想如果能自定义分析算法就更棒棒的了。
恰在那时接触到了listen公司的soundcheck,接着又顺藤摸瓜了解到了labview,这么一学习起来真是一发不可收拾,感觉从来没有一种语言(c,c++,VB,matlab等)可以像labview这么直观易掌握(入门容易),且像搭积木一样高效得建立一套测控系统,随心所欲得实现了自己想要的功能。
接下来呢,我会就我个人的学习历程来分享一系列实用的知识和案例,希望可以给大家激发哪怕一丁点的思维小水花,抛劣砖引碧玉喽。
2
这一节主要讲解搭建基于NI硬件的激励采集。分三种常见场景来讲解,并会匹配相
应项目案例。
客户要求:软件做出一个小信号发生器界面,可发正弦,方波,三角波,电压和频率可调,电压幅度可到10V。
类似这种:
搭建过程:
2.1 选硬件:
考虑到客户使用环境是微型扬声器,对底噪,信噪比等要求较高,且要求输出电压较高,故选择PCI-4461/PXI-4461两种声卡中一种,参数如下:
2.2程序搭建_设计前面板界面:
有几个要注意的原则:
(1)尽量与用户所熟悉的实物保持一致,如上图,客户比较熟悉soundcheck那种信号发生器界面,我们设计界面上也尽量往其靠拢;
(2)与windows/Mac等的一些快捷方式尽量保持一致,如windows中enter常用于运行,ESC代表中止操作,则激励发声的快捷键可设置为enter,退出的快捷键可设定为ESC;
(3)界面的风格要贴合使用场合和人群,如果你是为小朋友设计lego与labview结合的小游戏,则界面可色彩鲜艳一些,动画可适当多一些;如果软件是用于工业测控场合,则界面不可过于花哨,建议以黑白灰为主色调;
(4)其余方面,如功能相关的元素放置在一起等等。
我为客户设计出的界面如下所示:
2.3 程序搭建_设计程序框图框架:
NI自带了各种框图模式,有基于事件结构的,有基于状态机的,有基于队列结构的,看客们小手轻击打开labview-新建(N),就可跳出如下对话框,我就不对此一一赘述了。
我要赘述的是:建议大家建立基于自己使用习惯的程序框图模板。在新建(N)-用户,点击浏览,可添加属于自己的程序框图模板。如果是一个较大型的程序,里面调用诸多运行子VI,则这种基于自己模板的编程习惯可以大大缩短开发过程,并能保持风格的一致性。
我个人比较喜欢队列,状态机,事件结构三种结构结合使用,如下信号发生器的框图:
其中,强烈建议状态机(枚举类型)做成自定义枚举类型,这样可以将更改自动更新到所有选择分支。
2.4 程序搭建_硬件播放
打开NI自带的范例,选择硬件输出—电压-连续输出范例,我们在此基础上做修改:
删除触发,获取实际采样率,任务等待等配置,如下:
由于程序中有播放和静音两种状态,我们将播放任务,停止任务分别放在不同的分支里,这样播放时可进入播放分支,静音时可进入停止任务分支,将硬件播放关闭,如下:
最后发福利:但凡有留言或者留言将本文中的文章分享到其他公众号的,留下邮箱,我会考虑把源代码和操作说明都发给你。小仙女们,靓仔们燥起来。
`