Labview问题集锦

1、Labview如何实现由一个事件引发其他三个事件的顺序发生,且这三次事件间的时间间
隔为50ms?
A:可以引用状态机来设计程序,将触发事件作为状态机的状态控制参数,后面发生的三个
事件依次作为状态机的三个顺序状态,设置状态切换时间间隔为500ms.

2、labview在主程序通过局部变量不能实时看子vi的参数
A:通过局部变量只能得到子vi运行完之后的结果。可以用control reference 方式,在子
vi加一个属性节点引出一个reference。
主程序里把需要显示的控件创建一个reference连到子vi的reference输入端口。另外也可
以用vi server方式实现。

3、如何在一个graph或chart显示多个Y轴刻度,并且使每个通道对应每个刻度?
A:在前面板上,右键点击刻度,然后选择duplicate scales,就会创建一个新的刻度。然
后再点击右键,选择swap sides,就可以让刻度显示在图的左边或右边。然后右键右上角
的plot legend上的曲线plot,选择Y scales然后就可以选择与该曲线相应的Y轴SCALES。
多条曲线对应多条Y轴的刻度时,是同样的方法。

4、如何从labview中打开一个pdf文件?
A:最简单的方法:用system exec.vi实现,在system exec.vi的command line 端口创建
一个常量,输入adobe reader 的路径,再加上文件名等几个参数就可以实现上述要求。举
例如下:如果要拉开位于c盘的1234.pdf文件可以这样写“C:\Program files\Acrobt 7.0
\Acrobat\Acrobat.exe”/t “C:\1234.pdf” “username”其中C:\Program files\Adob
e\Acrobt 7.0\Acrobat\Acrobat.exe是Adobe Reader 的安装路径,/t是命令参数,C:\12
34.pdf则是要打开的文件名,最后的username是用户的名字。

5、采集数据在graph如何显示系统时间,并且随着采集点数时间不断刷新。
A:有两种方式,一种是采集波形数据然后输出给graph,在graph上选择显示绝对时间,并
且去掉ignore time stamp选项。第二种是采集数据文件,然后用获取时间的vi获取当前时
间,然后把采集的数据文件和当前vibuild成波形文件再给 graph.graph的设置和前种方法
一样。这样就可以显示出时间虽采集点不断刷新的效果。

6、report generation里的standard和HTML究竟是什么意思?
A:STANDARD和HTML是LV本身就有的报表类型,无须安装其他的文本编辑工具就可以打印。
STANDARD是LV内建的一种报表格式,可以打印但不能存盘,也就是说我们的报表没有电子
版。HTML是网页格式的文件,可以用浏览器打开,其实相当于LV帮我们编写HTML代码,这
种格式是不能直接打印的,需要先指定网页路径才能打印出来。还要注意,如果是一段程
序是用了report generation的vi,在打包成exe文件或llb文件时,需要加入两个动态vi:
_excel dynamic vi和 _word dynamic vi。如果生成的报表采样了模板需要自支持文件里
添加相应模板。

7、如果要将channel名字,测的是什么信号,采样率是多少这样的数据和采得数据一起存
入文件应该用什么方式比较好?
A:推荐一种以前基本被忽略的文件结构——TDM FILE格式来存,这种文件格式基于二进制
的方式,而在存储过程中可以加入很多的外部信息进去,例如free text;free interger
等等,所以存这样的应用还是挺合适的。

8、vi property 下execution中选项reetrant execution,选用和不选用有什么区别?
A:如果主程序执行同一个子vi,是同时两次或多次执行时,在不选用时,就会依次使用这
个子vi;如果选用,则这个子vi就会并行执行,提高程序运行速度。

9、为什么把LABVIEW程序框图解密以后,就可以一直打开程序框图,如何才能实现每次打
开vi都是加密的?
A:如果在LABVIEW解开程序的框图的密码,关闭以后该程序,不退出labview,这个程序如
果再次被打开会一直可以查看他的框图程序,原因是lv 没有关闭,所以密码会一直存在内
存当中,所以再次打开会依然看到程序框图,如果要实现每次打开都是加密的,只要在一
次打开后,把labview也关掉,下次再想要查看程序框图就需要输入密码。

10、使用vi server技术,如何实现从一个vi打开运行并读取另一个vi中控件的值?
A:
1) 调用Open vi reference.vi ,输入子VI的路径到其VI PATH的端口;
2) 调用Ivoke Node.vi并设为Open FP;
3) 调用Ivoke Node.vi并设为Run VI;
4)   调用Ivoke Node.vi并设为Get control Value[Variant];对Control Name端口填入
子VI循环的停止按钮控件名称;Get Control Value [Variant]输入端的值通过Variant T
o Data .vi设为控件相对应的控件类型后,输出到前面板,这就可实现取VI控件的值;
5) 最后调用Close Reference.vi关闭VI Server。

11、连续采集程序分成配置task状态和采集状态两大部分。在配置状态中得配置出有效的
task。根据需要在适当的时候进入采集状态。在采集状态中使用start task 和read两个
vi并且循环执行。当程序开始后立刻报错。
A:因为采集状态中使用start task和 read 两个vi并且循环执行,当采集已经开始后再使
用start task就会重复开始相同的资源,导致资源冲突产生错误。建议start部分单独作为
一个状态,在循环执行的状态中只使用read.vi。

12、LV7.1在前面板突然找不到Scrollbar了,现在想看或者操作屏幕之外的控件显示件非
常麻烦,怎么能够找到Scrollbar?
A:在File\VI Property\Window Appearance\Customize里有Show scrollbar的选项。

13、LV7.1如何实现将Chart的时间坐标与计算机系统时间一致?
A:Chart属性Format And Precision选Absolute Time,显示方式改System Time Format
和System Data Format。程序框图里Get Data/Time In Seconds获取当前时间,转换为双
精度浮点型后输入到Waveform Chart的属性节点Xscale. Offset。属性节点Xscale. Form
at设为模式7。

14、LV7.1如何设计时间输出格式为小时:分:秒.毫秒?
A:用Get Data/Time In Seconds用来获得当前时间,另一个是Format Data/Time String
函数,这个函数用来定义输出时间的格式,再time format string端口上输入字符串%H:%
M:%S%.3u,然后time stamp连接Get Data/Time In Seconds的时间输出即可。关于时间格
式的定义可以在help里看到。

15、为什么用子程序调用时pop up前面板,前面板总是自主程序后面?
A:在window appearance里面选择default floating 和modal这三项,将主程序的选项设
在较低的优先级而子程序设得高一点应该可以了。

16、如何读出excel里的数据来作分析?
A:使用Excel Get Data.vi并在参数data type上使用二维字符数组可把Excel内数据以字
符串的方式读出。

17、如何对Excel文件作数据续存?
A:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开
始续存数据。

18、如何将文件保存为Excel格式
A:1)      用ActiveX技术,将LV作为一个ActiveX服务器。可以参考National Instrume
nts\Labview 7.1\examples\apps\freqresp.llb VI库里面的Frequency Response.vi例子
程序。2)使用Report Generation工具包,它屏蔽了底层的ActiveX,使用比较简单,不过
需要购买。3)保存为文本方式,后缀为.xls,这样子也可以用 Excel打开,不过不能用E
xcel修改保存,要不然会自动修改为Excel文档,以后也不能用LV对其进行操作。

19、如何在table中既显示小数又显示整数
A:table中显示的是字符串,显示小数还是整数是在转换成字符串而未放入table之前的过
程中完成的,因此可以将整数小数分别转换成字符串后再合并输出到table中即可。

20、如何制作一个边框是透明的string控件
A:选择一个classic simple string控件,使用工具模板的染色工具,在弹出的对话框中
选择右上角“T”;一样的transparent,然后给这个控件染色就可以了。

21、循环采集并对采集的结果判断,前面板放置一个布尔报警灯,只保存报警的数据,并
可回放,怎么实现?
A:存储vi外加一个case结构,并以布尔报警灯作为判断,如果为真值,存储,为false,
不存。回放有两种形式,即:可以把试验数据存储,然后回调。也可以把graph存为图片。


22、怎样把While loop的循环次数i写入Table的行头ColHdrs[]呢?
A:创建Table的属性节点,属性ColHdrVis=T显示行头,ColHdrs[]连接一个字符串数组,
需要将循环次数i加1,然后通过 Number To Fractional String转化为字符类型,精度为
0。添加移位寄存器,赋初值为空字符串数组,build array上端输入接移位寄存器,下端
接数字,右端接ColHdrs[]和移位寄存器另外一端。

23、串口程序打包安装到一台没有LV环境的机器下,串口不可用,为什么?
A:LV7.1的版本,在Application Builder中Installer页面选择:Advanced/Serial Port
Support。

24、使用CLF节点调用DLL中的函数,如果原函数中指定的数据类型为结构,那么在CLF配置
过程中该如何指定数据类型?
A:可以选择数据类型(TYPE)为Adapt To Type,然后在输出或输入端口连接一个Cluste
r,这个Cluster的定义和原函数中结构的定义一样。选择Adapt To Type后,连接到端口的
数据类型是什么,与函数接口的数据类型就是什么。


25、在子vi运行过程中,如何将数据实时传递到调用它的主vi中,而不是等待子VI运行结
束后才在主VI中获得子Vi的输出数据?
A:使用带控制参量的属性节点可以实现在子VI中修改主VI属性的目的,由于控件的值(V
alue)也是控件的属性之一,因此可以使用控制参量是新以上要求。在子VI中,使用带有
控制参量的属性节点,将要传递到主VI的数据写入这个属性(Value)中,将控制参量要设
置为Control,并且在子VI的连接器中进行定义;在主VI中,为接收子VIshuju的控件建立
一个控制参量,将这个控制参量连接到子VI,即可达到在主VI中实时获取子VI数据的要求


26、事件结构中两种事件类型,一个是通知事件(Notify),另一个是过滤事件(Filter
),这两种事件的区别是什么?
A:对于通知事件,程序可以感知事件的发生并且响应该事件,然后再处理在事件结构中定
义的任务;对于过滤事件,程序感知事件发生后首先处理在事件结构中定义的任务,然后
根据时间结构中的设定(Discard?)决定是否响应该事件。举例来说,时间为Panel Clo
se,在事件发生时弹出一个对话框。如果是通知事件,首先响应事件关闭了前面板,因此
没有办法处理“弹出对话框”的任务;如果是过滤事件,首先处理 “弹出对话框”的任务
,然后根据事件结构中的Discard的值判断是否关闭前面板,若Discard为T,则不关闭,若
为F,则关闭。

27、LV7.1主程序已经完成,想在主程序运行之前,先执行一个别的界面,当退出该界面的
时候,再显示主界面,如何实现?
A:可以在主程序框图之前,将主程序前面板隐藏,调用子程序,推出子程序后,再显示主
程序前面板。这可以通过VI属性节点来实现,先调用一个属性节点,右键选择Select Cla
ss/VI Server/VI,然后在属性中选择Front Pannel Window/State属性,分为设为Hide和
Standard。Demo程序见项目进程管理中AE-01labview编程技术讨论的“主界面隐藏”。


28、将LV7.1前面板控件(graph)的内容保存成图像文件,在LV中如何编程实现?
A:右键控件创建Invoke Node,选择方法为“Get Panel Image”;另外,调用Graphics
&Sound/Graphics Formats下面的VI,将第二步获得的图像写入相应格式文件中。

29、在LV程序中使用matlab,生成exe文件以后,发现文件可以运行但是无法弹出运行界面

A:在lv中如果使用了MATLAB的话,生成EXE文件的时候需要加一个名为马特script.dll的
文件作为支持文件,此外在目标PC上必须安装MATLAB软件。

30、LV7.1使用VI Server的方式,在一台机器上调用另一台机器上的VI并运行,需要做哪
些设置?(两台机器在同一个网络中)
A:1)在Tools/Options/VI Server:Configurtion下选择Protocols为TCP/IP,这样才能
在网络中使用VI Server,否则只是在本机上使用VI Server。 2)在Tools/Options/VI S
erver:TCP/IP Access下设置可以访问的VI Server的主机IP。如果不进行设置,远程机器
将无法调用需要的VI。

31、在LV7.1中如何在运行程序后,前面板上去掉windows的关闭按钮
A:可以在LV的前面板FILE/VI properties/windows appearance/customize,去掉allow
user to close window对钩,保存设置,运行后可以实现效果。

32、LV7.1中如何清除前面板的Graph,即在每次运行时,让Graph重新显示数据而不显示历
史数据。
A:在Graph里面可以通过创建Local Varible并对其赋空来解决。而在Chart里可以通过创
建History Data属性节点并对其赋空来解决。

33、LV7.1中怎样将一个数组中所有满足条件的元素的索引值提取出来,保存成一个新的数
组?
A:使用移位寄存器、Build Array和Select函数就可以做到,具体方法:1)使用FOR循环
,在循环边框上添加一个移位寄存器,并初始化为一维空数组,类型为I32;2)在循环内
部使用Select函数,每次循环都判断数组中的一个元素,并将判断结果(布尔量类型)送
入Select的“s”输入端;3)每次循环都使用 Build Array函数将左端的移位寄存器直接
连接到Select函数的“f”输入端,这样Select函数的输入端就是所有满足条件的元素的索
引值;4)将 Select函数的输出端连到右端的移位寄存器上。这样程序结束后,For循环的
右端移位寄存器的数据就是需要的索引值。

35、 移位寄存器和反馈节点的区别?
回答:反馈节点箭头的起始端相当于移位寄存器的右端,箭头的末端相当于寄存器的左端
。区别在于移位寄存器的左端元素可以通过下拉下拉方式增加,而反馈节点的端口是无法
增加的。

36、如何让子VI的前面板也显示出来?
A:右键点击子VI,选择SUBVI NODE……然后再选择第2项SHOW……就是当子VI被调用时,
显示前面板。

37、弹出窗口无法进行任何操作,并且被主界面挡住,如何解决?
A:主界面VI properties中windows appearance里customs设定windows behavior为norma
l了,因此主界面保持在最前端,应该设为default。

38、在程序中实现按对应键弹出窗口,在窗口已打开情况下继续可打开其他窗口?
A:在程序框图内使用并行循环。每一个可能要运行的子VI(打开其窗口)及其运行条件(
按键)各占一个循环。各个循环相互独立,互不干扰。在考虑同时关闭各个窗口时,需要
使用全局变量。

39、在调度Vi的时候,经常无意地把面板上的一些控件移动了位置。还要花很大功夫去重
新布置这些面板控件。有没有办法让已经设计好的控件的位置固定不动?
A:首先我们可以通过Operate菜单中的Change To Run/Edit Mode命令,设置VI为运行或编
辑模式。面板控件的移动只在编辑模式下有效。在运行模式下是不能移动任何控制的位置
的。第二种方法是,选择指定的控件(可多选),然后在菜单的Reorder下拉菜单下,选择
LOCK命令,来锁住指定的控件。这样,除非使用Unlock命令解锁。否则是无法移动指定控
件的位置。

40、为什么子VI节点的输出端口没有数据传递出来?
A:这类问题的主要原因是子VI中存在着循环。如果子VI中的循环不能推出,子VI节点就一
直在运行。对于LV的数据流编程机制来讲,一个节点没有执行完,它的所有输出端口就不
会有有效数据输出。解决方法:一是把子VI中的循环提出到主VI里来。二是使用全局变量
,并在主VI中使用并行循环来控制子VI 的结束。

41、怎样在LABVIEW中实现全屏显示?
A:1)要全屏显示,在File/VI Properties/Window Size/Size the front panel to the
width and height of the entire screen打上钩,就可以了。
2)是否控件显示方法,第一,要完全不显示时,可以把控件放在界面看不见的地方他就不
显示了;第二种方法,你可以使用控件的属性进行控制控件的 Visible,具体方法是在程
序框图里点击鼠标右键/Create/Properties Node,选择Visible,并将其改为Change to
Read,对Visble设置为True或False就可以控制控件是否显示了

42、LV如何对Excel文件作数据续存?
A:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开
始续存数据。

43、LV当用鼠标点击Graph时,该Graph的大小变化了,当鼠标离去后Graph的大小恢复到原
来情况?
A:可以应用一个Event Structure来做,添加两个事件(一个是鼠标点击,另一个是鼠标
离去)。通过在这两个事件中分别赋给Graph的PlotArearSize属性节点不同的值,来改变
Graph的大小。

44、如何用LABVIEW编程检测U盘?
A:需要调用Windows API函数GetDriveTypeA,其函数返回值盘符类型的数据类型为长整形
,输入参数为检测盘符。调用CLFN.vi选择\windows\ system32\kernel32.dll,选择GetD
riveTypeA,设置Return Type为Numeric Signed 32-bit Integer;再添加参数nDrive,设
置参数类型为STRING和格式为C String Pointer。运行时在输入端填上要检测的U盘盘符,
返回结果为时表示为DRIVE_REMOVABLE即为可移动的U盘
45、 如何用Labview与可编程仪器通信,该仪器没有GPIB接口,但有COM口,能否用LV操
作?
A:可以通过Labview的串口通信来解决仪器控制问题,参看FIND EXAMPLE的BASIC 2 PORT
SERIAL WRITE AND READ.VI


46、 如何将EVENTSTRUCT中捕获的时间传递到STATE DIAGRAM?
A:使用VENTSTRUCT捕获面板事件后,将不同的事件对应于不同的字符串和其他,再通过Q
UEUE将VENTSTRUCT中的字符串传递到STATEDIAGRAM中,再根据得到的字符串进行相应的处
理。

47、 使用WRITE TO BINARY FILE函数向二进制文件中写入一个1D数组,为什么在READ F
ROM BIANRY FILE读取时,会多出4个字节数据呢?
A:写入时加入了头信息,多出的4个字节就是头信息,代表了数组或字符串的长度。在WR
ITE TO BINARY FILE 中的APPEND ARRAY OR STING SIZE这个输入端口中设置,其默认值为
T,代表加入头信息;如果将其改为F,就不会多出4个字节了。

48、 卸载Labview7.1时出现错误1603,接着出现错误1722和1721,程序询问是否继续卸
载操作,怎样消除该错误并正确卸载7.1?
A:该错误通常出现在试图卸载某些共享组件的时候。按照以下步骤可以解决该问题。
1) 注意当错误发生时是在卸载哪一部分组件。一般讲在卸载LV核心部分或LV RUNTIME
ENGINE的时候容易出现。
2) 当出现错误代码1603,弹出对话框提示继续卸载操作时候,点击YES
3) 如果卸载完成之后提示需要重新启动计算机,点击NO。
4) 对于卸载过程中产生的错误,从CD相应的文件夹中手动运行相应的组件,路经如下:
\components\lvcorefull\lvcorefull.msi或components\lvruntimeeng\lvruntimeeng.ms
i点击修复按钮。
5) 修复之后再次运行这些MSI,选择卸载按钮。这样就可以完全卸载。

49、Labview7.1在编写大型程序时希望优化计算机的内存使用,那么需要考虑哪些内容?

A:1)、将VI分解为SUBVI,当SUBVI不再被执行的时候,LV能够释放它的内存。
   2)、尽可能少使用全局变量或局部变量,这两者会造成LV为数据备份。
   3)、在需要时才在打开的前面板上显示大型数组和字符串,因为前面板的显示控件需
要复制他们显示的数据。
   4)、属性节点会造成SUBVI的前面板滞留在内存中,这样会增加内存的使用。因此,如
果SUBVI的前面板不被显示,不要在SUBVI中使用属性节点。
   5)、尽量在数组中使用相同的数据类型,并在传输数据进入子VI使用强制小数点位置
。当LV改变数据类型,输出需要一个新的缓存。
   6)、当设计流程图,要注意任何输入大小与输出的大小不同的地方。EG:频繁的增加
数组或者字符串的大小将造成数据的多次复制。造成内存增加,并造成内存碎片。

50、 在Labview7.1中生成可执行文件后运行出现如下错误:“Executable version(7.1
.1) doesn’t match resource file(7.1)”怎样消除错误?
A:这种情况是由于LV7.1.1Run-time Engine安装损坏或者版本不兼容造成的。解决如下:

1) 到控制面板---添加或者删除程序
2) 选择National Instruments Software点击更改
3) 在National Instruments Software对话框选择LV7.1.1Run-time Engine点击修复
附注:安装了LV Run-time Engine7.1.1后,在MAX的software里一般看不到LV7.1.1Run-t
ime Engine7.1.1,只能在控制面板里看到。

51、 VISA Set I/O Buffer Size
A:可以完成对缓存的设置,放的位置一定要跟在串口配置VI的后面,MASK的设置要对,如
果不设置,默认值为4096Bytes,如果需要用串口读取的数据比这个大,就会造成数据丢失


52、 如何将CVI驱动程序(fp文件)转换成LV的驱动程序?
A:Labview自带这个功能。在TOOLS的Instrumentation 中的Import Instrument from CV
I Fp菜单里。

53、 Labview7.1如何创建控件以自定义图片方式显示?
A:在前面板放上要创建的控件类型,选中它后点击EDIT---CUSOMIZE CONTROL进入编辑面
板,用工具栏的控件变成CUSTOMIZE MODE,EDIT—Import Picture From File选择要显示
的图片,右击前面板的控件点Import Picture。切回Edit Mode。右击控件选择Import Pi
cture然后选择方式。同样操作其他图片。

54、 如何把Labview前面板控件当前值通过程序设为下次打开时的默认值?
A:方法如下
1) 手动操作:对控件点击鼠标右键----Data Operations---Make Current Value Defa
ult。
2) 通过文件或注册表方式先把控件当前值存下来,再下次打开时再从文件或注册表把值
读回来。
3) 使用VI Server技术在保存控件当前值为默认值,但这种方法只能处于编辑状态使用
,在生成exe文件后不能使用。操作如下
(1)       调用Invoke Node设VI的Edit Mode值为TRUE
(2)       调用Invoke Node设Make Current Value Default
(3)       调用Invoke Node设Save Instrumentt的Path to saved file为需要设置默认
值的VI路径

55、 使用串口过程中发生如下错误:
1) Unable to open session to “ASRL1::INSTR”
2) Return Value :0XBFFF0072
3) Status Name :VI_ERROR_RSRC_BUSY
4) The resource is valid, but VISA can not currently access it.
A:这是由于访问COM口的软件引起的,有可能是运行LV程序打开了VISA的对话而没有关闭
它;或者打开了一个永远不能关闭的超级终端连接。或者是其他的软件正在使用该串口或
者串口挂起了,这是需要关闭所有的程序。若果还是没有解决,最后方法:禁止COM口以释
放资源;步骤如下:打开控制面板,点击系统图标,选择设备管理器,展开端口,选中要
操作的串口,右击选择属性,在常规选项里选择不再使用该设备。或者直接右击选择停用
。设定完毕重新启动,然后选择再启用该串口。

56、 在使用Open/Create/Replace File.vi选择create or replace 方式时,如果文件已
经存在,需要Replace,怎样才能不弹出对话框直接Replace?
A:两种方式:1)双击打开Open/Create/Replace File.vi的程序框图,把里面的If func
tion is 2(create or replace with protection) ask user’s permission to 的CASE结
构删除。2)在Open/Creat/Replace File.vi前加一个判断文件存在的结构,判断存在时运
行Delete.vi

57、 LV在做网络发布的时候,能否在由LabVIEWWEBServe生成的HTML中嵌入其他语言写的
脚本文件?或者在其他网络服务器上使用由LV生成的HTML?
A:这两种情况都是不允许的,原因在于NI的Web Server不允许这样的操作。LV的Web Ser
ver无法将非LV环境下生成的脚本信息传送到客户端浏览器,也无法访问客户端浏览器中非
LV环境下生成的脚本信息;同样是处于NI Web Server的问题,其他的Web Server(Apach
e,IIS等)也无法使用由LV的Web Server生成的HTML文件实行对VI控制。

58、 如何较精确的判断延时时间?
A:需要使用迅捷VI(Elapsed Time.vi)而不能使用Wait。因为Wait是会受到系统运行的
影响,而且重复延时后会产生积累误差。而Elapsed Time使用的系统时间(精确到Ms),
不会产生累积误差。

59、 如何动态添加Tree控件内条目?
A:查找Directory hierarchy in tree control.vi例程,打开init-open-close子vi内的
Directory to tree子vi内add Item.vi。使用该属性节点进行添加删除操作。重点在于pa
rent tag端口的使用。如果添加的为最上层的条目,则parent tag为空字符串。如果是子
层条目,则parent必须为上一层条目的tag。

60、 在Labview7.1中如何使用Database Connectivity更新ACCESS数据库中数据类型为OL
E的字段?
A:使用带参数更新数据库的方式更新OLE数据类型的数据。具体方法如下:1)使用DB To
ols Open Connection.vi打开数据库;2)使用DB Tools Create Parameterized Query.v
i建立一个带参数更新数据库的Refnum,在SQL query输入“update表名称set列名称=(?
)”,由于OLE数据无法用文本方式直接体现,“(?)”在这里就代表OLE的数据类型;
3)使用 DB Tools set Parameter.vi,在Value处输入OLE数据就可以,比如数组;4)使
用两次DB Tools Free Object.vi释放Refnum,才可以得到Connection Reference,才可以
再使用其他DB Tools VI;5)断开连接。

61、 Labview7.1,Time Loop结构主程序内调用了两个不同功能的子程序,当子程序被调
用时弹出子VI前面板。子程序内均使用了Time Loop,设置均一样,但是调用任一子VI后另
一个再也调用不了了。
A:两个子VI均使用了同一个设置的Time Loop结构,这是由于两个子VI的Time Loop的Loo
p name名称相同造成的。

62、 在Labview7.1中如何设定和显示Cursor
A:举例对于waveform graph,我们可以调出它的属性节点,然后在属性节点中选择Curso
r list,程序就会以簇数组的形式列出所有的游标,先索引出来某个游标,然后再利用簇
函数就可以修改了,如果要改变游标的坐标,可以Index Array 索引出某个游标,然后Bu
ndle by name就可以修改,再replace array或者其他数组函数,将改变后的簇数组写入另
一个cursor list的属性节点即可。

63、利用Build Application生成exe文件,如果原程序用到了current vi’s path,那么
就会出现原先默认能找到的文件现在程序自己找不到了?
A:当使用current vi’s path这个函数时,它会将文件名和该vi所在的路径返回,如果刚
编写vi还没有保存,那么运行它会返回一个无效值,如果已保存了该vi,那么就能返回完
整路径,例如一个名为:“Application.vi”的vi被保存在C:\Program File\Applicati
on这个文件夹下面,current vi’s path函数返回的路径就是C:\Program File\Applica
tion\ Application.vi;如果生成exe,并且与Application.vi保存在同一个目录下,那么
运行的时候会返回C:\Program File\Application\ App.exe\Application.vi,所以我们
需要多用一个Strip path function才能得到和原来一样的路径。

64、 如何自定义窗口标题字符,而不是用默认的Vi 名称?
A:如果只是设置一个非VI名称的默认标题,可以在VI Property>>Window Appearance中设
置,去掉Same As VI name前面选中符号,然后在Window title中输入需要显示的字符;如
果希望在程序中修改标题,可以使用VI Server中属性FP.Title

65、 Labview中使用NI-VISA软件控制USB设备
A:为了使用NI-VISA,在Windows环境中,可以通过INF文档做到这一点。NI-VISA3.0包含
VISA Drive Development Wizard(DDW)将为USB设备创建一个INF文档。1)、选择Start
Programs National Instruments VISAVISA Drive Developer Wizard,打开DDW。可以用
这个向导为PXI/PCI或USB设备创建一个INF文档,点击Next。此时出现VISA DDW基本设备信
息窗口。2)进行这一步时,需要清楚USB供应商ID和产品ID。这两个数据都是16位十六进
制数字,由供应商提供。点击Next。出现输出文档属性窗口。3)USB Instrument Prefix
是一个描述符,用来识别本设备所用的相关文档。在USB Instrument Prefix中输入相应信
息,并在“output file directory”中选择存放这些文档的目录,然后点击Finish。INF
文档就创建好并保存在您指定的位置了。假定Windows XP操作系统。
复制INF文档并将其放入INF文件夹,这个文件夹的位置通常是:“C:WINDOWSINF”。这个
文件夹可能是隐藏的。
右击C:WINDOWSINF文件夹中INF文件,然后点击Install。这个过程为您的文件创建了PNF
文档。现在就可以准备安装USB设备了。
连接USB设备。Windows探测到您的USB设备后,立即会打开“添加新硬件向导”。遵照屏幕
上有关向导程序的指定行事。如果您准备为该设备选择驱动程序,就请浏览INF文件夹,并
选择您使用DDW创建的INF文档。就可以在MAX和LV中编成控制了。

66、利用Labview的迅捷VI读出.lvm的数据,但是无法正常在waveform graph中正常显示。

A:读出的二维数组是以列为单位存放数据的,而waveform graph显示2D数组是以每行作为
一条曲线进行输出的,所以,利用Transpose 2D Array 将行列转制就可以了。Waveform
chart与graph刚好相反,是以每列数据作为一条曲线进行输出的,所以不加转制就可以用
chart代替工人阿婆和也可以正常显示。

67、 Labview7.1DataSocket协议传输数据怎样保证客户端完整地从服务器接收数据而不丢
失?
A:数据丢失的原因是读取数据的速度比发布慢使得数据被覆盖,处理方法有两方面:
1) 提高客户端运行速度,保证服务器发布新数据前已经读完。
2)   设立数据缓存区。服务器的在DataSocket Server Manager设置,默认是25M。客户
机的要将Datasocket Open函数模式参数选为BufferedRead或BufferedRead/Write,然后通
过属性节点设置缓存大小。同时也可以用属性节点作缓存区诊断。

68、 如何将MAX配置文件保存下来?
A:在MAX里,当配置完成后,在菜单栏,选择FILE---Export,选择保存位置已经类型,点
击Next,选择需要保存的文件,接着点击Export,finish。载入时,选择Import

69、Developer Suit中State diagram toolkit是做什么用的?
A:状态框图使用一个图形化状态框图标识,定义多个状态及其转移逻辑,并包含有自动生
成LV代码的工具,在对于搭建大程序的构架上是很有用的一个工具

70、 LV7.1用局部变量的时候只能将机械动作改成Switch,而不能用Latch,例如用Stop按
钮停止两个并行的循环,怎么做?
A:在用Latch方式时,系统读这个控件一次后自动改为默认值,所以用Latch方式时用局部
变量,在两次读出的值即使时间间隔很短也不能保持一致,所以就不能用了。此时,可以
用Switch方式,并在程序开始时初始化按钮就可以了。

71、在ActiveX容器中播放Flash的动画,如何实现在LV中响应Flash中的按钮动作?
A:通过调用ActiveX,可以在LV中播放*.swf的动画。响应FLAH中控键动作的办法是用一个
事件结构,在ActiveX容器中特定区域响应鼠标动作。

72、在调试LV7.1程序的时候,程序总是进行到无法响应得状态,然后只能强行关闭,因此
无法正常运行?
A:在VI前面板有个长度很大的字符串Indicator,因此程序在刷新屏幕的时候很消耗资源
,将这个Indicator设为隐藏,问题就解决了。同样的问题也会出现在数据量很大的Graph
,Chart,甚至探针上。

73、Labview7.1中一个while循环嵌套另一个While循环,如何通过一个布尔量停止这两个
循环?
A:创建一个布尔量的局部变量,用这个局部变量控制一个循环,用布尔量控制另一个循环
,注意机械特性是不能带锁存的(Latch)。

74、采集3路信号,需要根据一列的数据的值来对整个数组进行排序,保证每一排的数据仍
然对应。
A:未解决


75、 每次运行时CPU使用率都达到100%,为什么?
A:循环里面没加延时就会有这种现象发生

76、仪器驱动器的概念和VISA的特点?
A:仪器驱动器是指使用标准化的I/0函数仪器设备进行通信的程序,主要用于对仪器进行
程控操作。在LV编程语言中,仪器驱动器是指由VISA标准和仪器程控指令共同构成的仪器
控制程序的应用接口(API)。仪器驱动器采用VISA标准编程,从而可避开许多复杂而低级
的仪器程控命令。VISA是虚拟仪器体系结构的简称,它的特点有1)面向对象编程;2)VI
SA是当前所有仪器接口类型功能函数的超集,且十分简洁。3)VISA作为标准函数,与仪器
的I/O接口类型无关;4)VISA程序与操作系统与编程语言无关。

77、如何选择告诉CAN卡和低速CAN卡的使用?
A:高速CAN 和低速CAN设备是不能允许于同一个CAN网络中。如果CAN设备是Serials 2 的
CAN设备那么是有两个PORT分别可以做高速CAN和低速CAN的,而且是通过软件来设置的,直
接在MAX里找对应的CAN设备选择相应的PORT的属性就可以更改是高速还是低速CAN。如果S
erials1的就需要一个端子,从一个CANport分出两个Port分别作高速CAN和低速CAN,也是
在MAX设置的。

78、如何使用Read Text File函数从文本文件中逐行读取数据?
A:在Read Text File函数的输入输出端口无法设置读取行的功能。只有用鼠标右击该函数
,从弹出的快捷菜单中选择Read Lines才能实现读取行的操作。将这个函数放到一个循环
里,就可以实现逐行读取的目的了。

79、用Labview写的串口程序,生成EXE文件后不能在没有Lv的机器上运行,这台机器已经
装好了相应的LAB VIEW Run-Time,为什么?
A:如果串口程序使用VISA写的,就需要在目标及其上安装相应的VISA驱动。可以在目标及
其上单独安装VISA驱动,也可在Labview中使用打包功能将VISA驱动和应用程序一起做成一
个安装文件,统一安装到目标机器上。

你可能感兴趣的:(Labview问题集锦)