25
LabVIEW常见疑难解答与经验技巧集萃
25.1  LabVIEW技术基础问题
1.如何在一个graph或chart显示多个y轴刻度,并且使每个通道对应每个刻度?
前面板上右键单击刻度,然后选择“分格显示曲线”,就会创建一个新的刻度,如图25-1所示。
   
图25-1  每个通道对应每个刻度
2.在LabVIEW中如何实现波形图表的时间坐标与计算机系统时间一致?
在波形图表属性显示格式中,时间(x轴)的“类型”选“绝对时间”,显示方式改“系统时间格式”和“系统日期格式”,程序框图里利用获取日期/时间(秒)获取当前时间,转换为双精度浮点型后输入到波形图表的属性节点X标尺.偏移量,如图25-2所示。
             
图25-2(a)  横坐标显示系统时间程序    图25-2(b)  横坐标显示系统时间程序的面板
3.波形图表能否设置成和波形图一样的网格?
当然可以,步骤如下。
(1)在前面板上分别放置波形图和波形图表控件。
(2)右键单击波形图,选择“属性”,在弹出的属性对话框中选择“标尺”选项卡,在“网格样式与颜”下单击主网格前的颜板,在弹出的“颜”对话框单击右下角“更多颜”按钮,弹出
新的“颜”对话框。
(3)记录右边调、饱和度、亮度和红、绿、蓝值。
 
图25-2(c)  波形图表的横坐标设置    图25-3  波形图表的网格设置
(4)打开波形图表的属性,重复(1)和(2)的操作,然后把(3)所记录的值填入相应的颜空格中。对于辅网格,重复上面的操作,如图25-3所示。
4.如何从LabVIEW中打开一个PDF文件?
最简单的方法是执行系统命令.vi。使用该函数可以打开其他格式的文件,比如exe、word文件,LabVIEW会采用系统默认的软件来打开。当然首先要安装打开这些文件的软件,如图25-4所示。
5.在VI属性下执行选项reentrant execution,选用和不选用有什么区别?
如果主程序执行同一个子VI,是同时两次或多次执行,在不选用时,就会依次使用这个子VI;如果选用,这个子VI就会并行执行,这样可以提高程序运行的速度,如图25-5所示。
 
图25-4  打开PDF文件程序    图25-5  VI的执行属性设置
6.在LabVIEW中如何清除前面板的波形图和波形图表。即在每次运行时,让波形图和波形图表重新显示数据,而不显示历史数据。
在波形图里,可以通过创建局部变量并对其赋空来解决。而在波形图表里,可以通过创建历史数据属性节点并对其赋空来解决,如图25-6所示。
图25-6  清除波形图与波形图表
7.report generation里的standard和HTML究竟是什么意思?
STANDARD和HTML是LV本身就有的报表类型,无须安装其他的文本编辑工具就可以打印。STANDARD是LV内建的一种报表格式,可以打印,但不能存盘,也就是说我们的报表没有电子版。HTML是网页格式的文件,可以用浏览器打开,实际上相当于LV帮我们编写HTML代码,这种格式是不能直接打印的,需要先指定网页路径才能打印出来。还需要注意,如果一段程序是用了report generation的vi,在打包成exe文件或llb文件时,则需要加入两个动态vi:_excel dynamic vi和 _word dynamic vi。如果生成的报表采样了模板,则需要往自支持文
件里添加相应的模板,如图25-7所示。
8.如何让子VI的前面板也显示出来?
右键单击子VI,选择“设置子VI节点”,在弹出的对话框中选择“调用时显示前面板”和“如之前未打开则在运行后关闭”即可,如图25-8所示。
                     
图25-7  报表类型    图25-8 “子VI节点设置”对话框
9.LABVIEW如何编程检测U盘盘符?
调用Windows API函数GetLogicalDriveStringsA,其函数返回值盘符的数据类型为长整形,输入参数为检测盘符。调用CLFN.vi选择\windows\system32\kernel32.dll,选择GetLogicalDriveStringsA设置调用规范为Stdcall,返回参数1为有符号32位整型数值,参数2为有符号32位一维整型数组,数组格式设置为数组数据指针,如图25-9所示。
图25-9  返回U盘盘符
10.串口程序打包安装到一台没有LabVIEW环境的机器下,但串口不可用,为什么?
LabVIEW8.6版本在生成安装文件时,需要把VISA驱动添加上,如图25-10所示。
11.使用vi server技术,如何实现从一个vi打开运行并读取另一个vi中控件的值?
调用打开VI引用函数,输入子VI的路径到其VI路径参数端口。
调用“调用节点”函数,并设为前面板·打开。
调用“调用节点”函数,并设为运行VI。
调用“调用节点”函数,并设为控件值·获取,对Control Name端口填入子VI循环的停止按钮控
件名称;Get Control Value [Variant]输入端的值通过Variant To Data .vi设为控件相对应的控件类型后输出到前面板,这样就可以实现读取VI控件的值。
最后调用Close Reference.vi关闭VI Server,如图25-11所示。
 
调用子程序的例子
图25-10  添加VISA驱动    图25-11  使用vi server远程控制另一VI
12.在程序中调用当前路径函数,生成安装文件后,原先默认能到的文件现在已经不到了,这是什么原因?
当使用当前这个函数时,它会将文件名和该vi所在的路径返回,如果刚编写vi还没有保存,那么运行它则会返回一个无效值,如果已保存了该vi,那么就能返回完整路径。例如一个名为 “Application.vi”的vi被保存在C:\Program File\Application这个文件夹下面,当前路径函数返回的路径就是C:\Program File\Application\ Application.vi;如果生成exe,并且与Appli
cation.vi保存在同一个目录下,那么运行的时候就会返回C:\Program File\Application\ \Application.vi,所以需要多用一个拆分路径才能得到和原来一样的路径。
利用VI Server来判断当前的应用程序是属于编辑状态还是已经生成可执行文件,判断是可执行文件,则多加一个拆分路径得到当前路径,若是编辑状态,则不需要,如图25-12所示。
 
图25-12  当前路径的处理
13.为什么把LABVIEW程序框图解密以后,就可以一直打开程序框图,如何才能实现每次打开vi都是加密的?
如果在LABVIEW中解开程序的框图的密码,关闭以后该程序不退出LabVIEW,这个程序如果再次被打开,就会一直可以查看它的框图程序。原因是LabVIEW没有关闭,密码会一直存在内存当中,所以再次打开会依然看到程序框图。如果要实现每次打开都是加密的,只要一次打开后把LabVIEW也关掉,下次再想要查看程序框图就需要输入密码。
14.在LabVIEW 8.6中如何设计时间输出格式为小时:分:秒:毫秒?
可以用“获取日期/时间(秒)”函数来获得当前时间。另一个是“格式化日期/时间字符串”函数,这个函数用来定义输出时间的格式,在时间格式字符串端口上输入字符串%H:%M:%S:%3u,然后用时间标识连接获取日期/时间(秒)的时间输出即可。关于时间格式的定义,可以在Help里看到,如图25-13所示。
图25-13  时间输出格式
15.如何将文件保存为Excel格式?
(1)使用ActiveX技术,将LV作为一个ActiveX服务器。可以参考National Instruments\Labview 8.6\ examples\apps\freqresp.llb VI库里面的Frequency Response.vi例子程序。
(2)使用Report Generation工具包,它屏蔽了底层的ActiveX,使用比较简单,不过需要购买。
(3)利用文件I/O中写入电子表格文件,后缀为.xls,这样也可以用Excel打开,不过不能用Excel修改保存,要不然会自动修改为Excel文档,以后也不能用LV对其进行操作。
16.如何制作一个边框是透明的波形图表控件?
使用工具模板的染工具,在弹出的对话框中选择右上角的“T”,然后给这个控件染即可,如图25-14所示。
   
图25-14  波形图表外形设置
17.在LabVIEW中,想在主程序运行之前先执行一个别的登录界面,当退出该界面的时候再显示主界面,如何实现?
可以在主程序框图之前先不运行主程序,推出子程序后,再显示主程序前面板。这可以通过VI属性节点来实现,运行完登录程序后,关闭登录界面的前面板,并利用VI Server调用主程序运行,具体程序框图如25-15所示。
图25-15  登录界面的实现
18.如何实现在LabVIEW中用鼠标光标进入波形图时,该波形图的大小变化,当鼠标光标离去后波形图的大小又恢复到原来的情况?
可以应用一个事件结构来做,需添加两个事件(一个是鼠标光标进入,另一个是鼠标光标离开)。通过在这两个事件中分别赋给Graph的PlotArearSize属性节点不同的值,来改变Graph的大小,程序框图如图25-16所示。
19.为什么子VI节点的输出端口没有数据传递出来?
这类问题的主要原因是子VI中存在着循环。如果子VI中的循环不能推出,子VI节点就一直在运行。对于LV的数据流编程机制来讲,一个节点没有执行完,它的所有输出端口就不会有有效的数据输出。解决的方法:一是把子VI中的循环提出到主VI里来;二是使用全局变量,并在主VI中使用并行循环来控制子VI的结束。
例如子程序如图25-17所示,在主程序调用该VI时,子VI的输出端口就不会有数据传递出来。
     
图25-16  波形图表显示区域大小变化设置    图25-17  循环内显示控件值
把该循环结构放置在主VI中,则子VI和主VI的程序框图分别如图25-18(a)与图25-18(b)所示。
                 
图25-18(a)  子VI波形图表显示随机数    图25-18(b)  调用子VI

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。