《LabVIEW开发者必备技巧宝典第四部分》由会员分享,可在线阅读,更多相关《LabVIEW开发者必备技巧宝典第四部分(19页珍藏版)》请在金锄头文库上搜索。
1、电子发烧友网论坛出品Powerby电子发烧友论坛LabVIEW开发者必备技巧宝典第四部分LabVIEW开发者必备技巧宝典由电子发烧友网论坛出品,集结众多大牛、工程师的经验之作。为广大LabVIEW开发工程师提供开发、调试技巧,助力LabVIEW工程师。电子发烧友网论坛出品1目录【测试之王LabVIEW】Default的陷阱.2【测试之王LabVIEW】轻松实现任意格式字符串到时间戳的转化3【测试之王LabVIEW】修改菜单前景、背景颜色.4【测试之王LabVIEW】VI的本地化.5【测试之王LabVIEW】如何拆分双精度数的整数部分和小数部分.7【测试之王LabVIEW】LabVIEW与有道词
2、典的BUG.8【测试之王LabVIEW】如何在前面板制作一个浮动的控件.9【测试之王LabVIEW】如何用LabVIEW关闭Windows下的应用程序.10【测试之王LabVIEW】解析LabVIEW布尔控件的6个机械动作属性.15【测试之王LabVIEW】自己写的数字信号包络检波.17电子发烧友网论坛出品2【测试之王LabVIEW】Default的陷阱先贴上一张图大家可以照着拉拉看程序执行看看结果有甚么不一样因为ForLoop最少执行次数是0次所以可以不执行内部的code以至于输出的值会变成Default所以并不是99这个情形我是发生在以ArrayIndex来当作循环次数结果Array是空A
3、rray所以并没有执行ForLoop造成程序执行错误电子发烧友网论坛出品3【测试之王LabVIEW】轻松实现任意格式字符串到时间戳的转化以前经常因为用到数据库,要做字符串和时间戳的转换,尤其是字符串转换为时间戳的,想当头疼。但自从有了下面的这个簇,转换便得很easy了:通过格式化字符串输入,可以获取日期时间中的任意一项,然后重新填充簇就可以了,是不是soeasy呢?代码也附上了,8.2版的。电子发烧友网论坛出品4【测试之王LabVIEW】修改菜单前景、背景颜色LV的菜单相对来说功能比较简单,比如无法实现图标菜单等。但是LV的菜单在LABVIEW.ini中隐藏了一些设置选项,通过设置选项可以对L
4、V菜单做一些全局设置,实现特色菜单。在LABVIEW.ini中添加下列两个选项,可以修改菜单背景色和前景色。menu.background=FF00FFmenu.foreground=00FFFF电子发烧友网论坛出品5【测试之王LabVIEW】VI的本地化编程语言中的本地化问题,通常指的多语言。对于一般的LABVIEW工程师,很少会遇到本地化的问题,但是我们经常会遇到界面控件标题的显示问题。由于各个技术领域的专业性,往往用户对VI界面的显示有自己的要求,其中就包括控件的标题问题。这可以理解成本地化的特殊情况。对于一般小的项目,通常是根据客户现场的要求,做相应的修改。但是对于较大的项目,这样做是
5、不现实的。LV中的控件包括标签和标题,其中标签相当于变量名,因此运行时不可更改。所以在编辑VI时,应显示标题,隐藏标签。我们所说的修改指的是控件的标题,而不是标签。修改控件的标题,需要通过VI的引用,遍历所有控件,找到需要控件的引用,然后通过属性节点修改其标题。这就要求我们必须事先记录所有控件的标签名称,作为查找依据。对于需要批量修改,实现本地化的应用,这样处理是非常复杂的。其实,LV本身就提供了这样的能力,通过导入、导出字符串,可以很容易实现VI的本地化。在LV的工具菜单中,提供了导入、导出菜单项,如下图所示:菜单命令的使用非常简单,下面说明一下它们的使用方法,首先创建一个前面板,包括两个示
6、例控件,标题分别为速度和温度。电子发烧友网论坛出品6执行导出字符串命令后,存储在文本文件中。导出的文本文件中包含VI的版本号、VI的名称、控件的ID、控件的描述、控件的工具条提示、控件的标签以及控件的标题等等。修改这个文本文件中的标题部分,然后导入这个文本本件,就可以批量自动修改控件的标题,实现VI的本地化。以上操作是通过LV的菜单实现的,在执行文件中一般不会显示工具菜单项,这种情况下,可以通过VI的方法节点,编程导入。导出字符串方法只能在编辑环境使用,而导入字符串方法节点可以在运行环境使用。电子发烧友网论坛出品7【测试之王LabVIEW】如何拆分双精度数的整数部分和小数部分在处理双精度数时,
7、经常会涉及到拆分双精度数的整数和小数部分。有一下几种解决方案:一、解决这个问题我们首先想到的可能是通过几个取整函数,先求取整数部分,然后利用差值求取小数部分。取整函数包括最近取整、向上取整、向下取整,由于涉及到舍入的问题,所以拆分起来比较困难。二、利用字符串的丰富函数拆分。双精度数转换为字符串后,通过查找小数点的位置,把字符串分解为两个部分,然后再转换为数值。三、利用求商和余数函数拆分。这是我今天要介绍的一个小技巧,对于求商和余数函数,任何情况下,返回的商都是整数,而余数可以是小数,也可以是整数。利用除数为1,就可以拆分双精度数,如下图所示。电子发烧友网论坛出品8【测试之王LabVIEW】La
8、bVIEW与有道词典的BUG不知道有没有人遇到过这种问题:删除某局部变量原控件也被删除了;ctrl拖动局部变量原控件也被复制了,原因很简单,你开着有道词典或者金山词典的划词翻译的功能呢,关掉后即可恢复正常!电子发烧友网论坛出品9【测试之王LabVIEW】如何在前面板制作一个浮动的控件今天在写一个程序的时候,想要在前面板制作一个浮动的控件,使程序运行的时候,控件随前面板滚动条的拉动,一直浮动在一个固定的区域。刚开始太想当然了,以为用前面板的位置属性和控件的位置属性相减,就可以完成了,最后才发现,原来前面板的位置是绝对位置,而控件的位置是相对位置,结果就杯具了。想了老半天,还是没想明白。最后一不小
9、心看到了前面板的内容区域属性才恍然大悟。不过时间已经浪费了大半天了。而且这个在网络上搜索还没有,所以想到要分享一下,以免后来人也如同我一般杯具。如何制作一个这样的浮动控件呢?其实很简单,只要用前面板的“内容区域”属性就可以了,(这里说明下,千万别钻牛角尖,而且用前面板的位置属性哦)下面是代码的图片。电子发烧友网论坛出品10【测试之王labview】如何用 LabVIEW 关闭 Windows 下的应用程序?在LabVIEW中,我们可以透过呼叫WIN32API来做取得或控制有关Windows作业系统的相关信息。若要关闭应用程序,需要用到user32.dll这个动态连结数据库。请依以下步骤进行:1
10、.在程序设计区放置CallLibraryFunctionNode,选择C:WindowsSystem32user32.dll。2.Functionname选择FindWindowA,首先将returntype名称改为hWnd,再加入以下两个参数:lpClassNamelpWindowName电子发烧友网论坛出品113.接下来同样放置一个CallLibraryFunctionNode来呼叫user32.dll。在Functionname选择SendMessageA,returntype改为LRESULT,并且加入以下四个参数:hWndMsgwParamlParam电子发烧友网论坛出品12电子发烧
11、友网论坛出品134.连接一个常数0至FindWindowA函数的lpClassName,同时将想要关闭的应用程序名称连接至lpWindowName。5.将FindWIndowA函数的返回型态(returntype):hWnd连接至SendMessageA函数的hWnd输入端,并且将十进制16(十六进位则为10)连接至Msg参数,最后将wParam和lParam参数与常数0连接。最后,在WindowName中输入欲关闭的应用程序,如我现在想要关闭使用中的小画家,将视窗名称输入,执行VI后未命名-小画家便会被关闭了。电子发烧友网论坛出品14电子发烧友网论坛出品15【测试之王LabVIEW】解析La
12、bVIEW布尔控件的6个机械动作属性在学习LabVIEW(简称LV)时,布尔控件是常用的控件。布尔控件分为按钮型控件和开关型控件,LV内部并没有区分按钮型还是开关型。这两种布尔控件可以根据需要相互转换,通过配置布尔控件的机械动作属性来实现转换。 布尔控件“值改变”的瞬间是非常重要的,在真实生活中也存在这样的现象。比如手持型的计数器,我们希望按下一个按钮,计算增加1。我们就需要考虑机械动作了,是需要按下时计算加1,还是释放时计算加1,还是按着不释放就一直加。正确的做法是在释放按钮时计算增加1,该类动作称为“释放时转换”。LV布尔控件的机械动作分成6种,最本质的区别在于转换生效的瞬间和LV读取控件
13、的时刻。右键前面板的布尔控件机械动作总共6种机械动作,m(mouse)表示操作控件时鼠标的动作,v(value)表示控件输出值,RD(Read)表示VI读取控件的时刻。下面分别介绍这六种动作:1、单击时转换这种机械动作相当于机械开关,单击鼠标后,立即改变状态,并保持改变的状态,改变的时刻是鼠标单击的时刻。再次单击后,恢复原来的状态,与VI是否读取控件无关。 2、释放时转换电子发烧友网论坛出品16当鼠标释放后,立即改变状态。改变的时刻是鼠标按键释放的时刻。再次单击鼠标并释放鼠标时,恢复原来的状态,与VI是否读取控件无关。 3、单击时转换保持到鼠标释放这种机械动作相当于机械按钮。鼠标单击时控件状态
14、立即改变,鼠标按键释放后立即恢复,保持时间取决于单击和释放之间的时间间隔。 4、单击时触发单击控件时改变控件值,保留该控件值直到VI读取该控件。此时,即使长按鼠标按钮控件也将返回至其默认值。该动作与断路器相似,适用于停止While循环或令VI在每次用户设置控件时只执行一次。单按钮控件不可选择该动作。 5、释放时触发仅当在控件的图片边界内单击一次鼠标后放开鼠标按钮时,控件值改变。VI读取该动作一次,则控件返回至其默认值。该动作与对话框按钮和系统按钮的动作相似。单按钮控件不可选择该动作。6、保持触发直到鼠标释放单击控件时改变控件值,保留该控件值直到VI读取该值一次或用户释放鼠标按钮,取决于二者发生的先后。单按钮控件不可选择该动作。其实最简单的方法就是看懂机械动作的图标。图标非常形象,只要