A:可以引用状态机来设计程序,将触发事件作为状态机的状态控制参数,后面发生的三个事件依次作为状态机的三个顺序状态,设置状态切换时间间隔为500ms.
A:通过局部变量只能得到子vi运行完之后的结果。可以用control reference 方式,在子vi加一个属性节点引出一个reference。
主程序里把需要显示的控件创建一个reference连到子vi的reference输入端口。另外也可以用vi server方式实现。
A:在前面板上,右键点击刻度,然后选择duplicate scales,就会创建一个新的刻度。然后再点击右键,选择swap sides,就可以让刻度显示在图的左边或右边。然后右键右上角的plot legend上的曲线plot,选择Y scales然后就可以选择与该曲线相应的Y轴SCALES。多条曲线对应多条Y轴的刻度时,是同样的方法。
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\Adobe\Acrobt 7.0\Acrobat\Acrobat.exe是Adobe Reader 的安装路径,/t是命令参数,C:\1234.pdf则是要打开的文件名,最后的username是用户的名字。
A:有两种方式,一种是采集波形数据然后输出给graph,在graph上选择显示绝对时间,并且去掉ignore time stamp选项。第二种是采集数据文件,然后用获取时间的vi获取当前时间,然后把采集的数据文件和当前vibuild成波形文件再给 graph.graph的设置和前种方法一样。这样就可以显示出时间虽采集点不断刷新的效果。
A:STANDARD和HTML是LV本身就有的报表类型,无须安装其他的文本编辑工具就可以打印。STANDARD是LV内建的一种报表格式,可以打印但不能存盘,也就是说我们的报表没有电子版。HTML是网页格式的文件,可以用浏览器打开,其实相当于LV帮我们编写HTML代码,这种格式是不能直接打印的,需要先指定网页路径才能打印出来。还要注意,如果是一段程序是用了report generation的vi,在打包成exe文件或llb文件时,需要加入两个动态vi:_excel dynamic vi和 _word dynamic vi。如果生成的报表采样了模板需要自支持文件里添加相应模板。
A:推荐一种以前基本被忽略的文件结构——TDM FILE格式来存,这种文件格式基于二进制的方式,而在存储过程中可以加入很多的外部信息进去,例如free text;free interger等等,所以存这样的应用还是挺合适的。
A:如果主程序执行同一个子vi,是同时两次或多次执行时,在不选用时,就会依次使用这个子vi;如果选用,则这个子vi就会并行执行,提高程序运行速度。
A:如果在LABVIEW解开程序的框图的密码,关闭以后该程序,不退出labview,这个程序如果再次被打开会一直可以查看他的框图程序,原因是lv 没有关闭,所以密码会一直存在内存当中,所以再次打开会依然看到程序框图,如果要实现每次打开都是加密的,只要在一次打开后,把labview也关掉,下次再想要查看程序框图就需要输入密码。
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 To Data .vi设为控件相对应的控件类型后,输出到前面板,这就可实现取VI控件的值;
5)最后调用Close Reference.vi关闭VI Server。
A:因为采集状态中使用start task和 read 两个vi并且循环执行,当采集已经开始后再使用start task就会重复开始相同的资源,导致资源冲突产生错误。建议start部分单独作为一个状态,在循环执行的状态中只使用read.vi。
A:在File\VI Property\Window Appearance\Customize里有Show scrollbar的选项。
A:Chart属性Format And Precision选Absolute Time,显示方式改System Time Format 和System Data Format。程序框图里Get Data/Time In Seconds获取当前时间,转换为双精度浮点型后输入到Waveform Chart的属性节点Xscale. Offset。属性节点Xscale. Format设为模式7。
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里看到。
A:在window appearance里面选择default floating 和modal这三项,将主程序的选项设在较低的优先级而子程序设得高一点应该可以了。
A:使用Excel Get Data.vi并在参数data type上使用二维字符数组可把Excel内数据以字符串的方式读出。
A:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开始续存数据。
A:1)用ActiveX技术,将LV作为一个ActiveX服务器。可以参考National Instruments\Labview 7.1\examples\apps\freqresp.llb VI库里面的Frequency Response.vi例子程序。2)使用Report Generation工具包,它屏蔽了底层的ActiveX,使用比较简单,不过需要购买。3)保存为文本方式,后缀为.xls,这样子也可以用 Excel打开,不过不能用Excel修改保存,要不然会自动修改为Excel文档,以后也不能用LV对其进行操作。
A:table中显示的是字符串,显示小数还是整数是在转换成字符串而未放入table之前的过程中完成的,因此可以将整数小数分别转换成字符串后再合并输出到table中即可。
A:选择一个classic simple string控件,使用工具模板的染色工具,在弹出的对话框中选择右上角“T”;一样的transparent,然后给这个控件染色就可以了。
A:存储vi外加一个case结构,并以布尔报警灯作为判断,如果为真值,存储,为false,不存。回放有两种形式,即:可以把试验数据存储,然后回调。也可以把graph存为图片。
A:创建Table的属性节点,属性ColHdrVis=T显示行头,ColHdrs[]连接一个字符串数组,需要将循环次数i加1,然后通过 Number To Fractional String转化为字符类型,精度为0。添加移位寄存器,赋初值为空字符串数组,build array上端输入接移位寄存器,下端接数字,右端接ColHdrs[]和移位寄存器另外一端。
A:LV7.1的版本,在Application Builder中Installer页面选择:Advanced/Serial Port Support。
A:可以选择数据类型(TYPE)为Adapt To Type,然后在输出或输入端口连接一个Cluster,这个Cluster的定义和原函数中结构的定义一样。选择Adapt To Type后,连接到端口的数据类型是什么,与函数接口的数据类型就是什么。
A:使用带控制参量的属性节点可以实现在子VI中修改主VI属性的目的,由于控件的值(Value)也是控件的属性之一,因此可以使用控制参量是新以上要求。在子VI中,使用带有控制参量的属性节点,将要传递到主VI的数据写入这个属性(Value)中,将控制参量要设置为Control,并且在子VI的连接器中进行定义;在主VI中,为接收子VIshuju的控件建立一个控制参量,将这个控制参量连接到子VI,即可达到在主VI中实时获取子VI数据的要求。
A:对于通知事件,程序可以感知事件的发生并且响应该事件,然后再处理在事件结构中定义的任务;对于过滤事件,程序感知事件发生后首先处理在事件结构中定义的任务,然后根据时间结构中的设定(Discard?)决定是否响应该事件。举例来说,时间为Panel Close,在事件发生时弹出一个对话框。如果是通知事件,首先响应事件关闭了前面板,因此没有办法处理“弹出对话框”的任务;如果是过滤事件,首先处理 “弹出对话框”的任务,然后根据事件结构中的Discard的值判断是否关闭前面板,若Discard为T,则不关闭,若为F,则关闭。
A:可以在主程序框图之前,将主程序前面板隐藏,调用子程序,推出子程序后,再显示主程序前面板。这可以通过VI属性节点来实现,先调用一个属性节点,右键选择Select Class/VI Server/VI,然后在属性中选择Front Pannel Window/State属性,分为设为Hide和Standard。Demo程序见项目进程管理中AE-01labview编程技术讨论的“主界面隐藏”。
A:右键控件创建Invoke Node,选择方法为“Get Panel Image”;另外,调用Graphics &Sound/Graphics Formats下面的VI,将第二步获得的图像写入相应格式文件中。
A:在lv中如果使用了MATLAB的话,生成EXE文件的时候需要加一个名为马特script.dll的文件作为支持文件,此外在目标PC上必须安装MATLAB软件。
A:1)在Tools/Options/VI Server:Configurtion下选择Protocols为TCP/IP,这样才能在网络中使用VI Server,否则只是在本机上使用VI Server。 2)在Tools/Options/VI Server:TCP/IP Access下设置可以访问的VI Server的主机IP。如果不进行设置,远程机器将无法调用需要的VI。
A:可以在LV的前面板FILE/VI properties/windows appearance/customize,去掉allow user to close window对钩,保存设置,运行后可以实现效果。
A:在Graph里面可以通过创建Local Varible并对其赋空来解决。而在Chart里可以通过创建History Data属性节点并对其赋空来解决。
A:使用移位寄存器、Build Array和Select函数就可以做到,具体方法:1)使用FOR循环,在循环边框上添加一个移位寄存器,并初始化为一维空数组,类型为I32;2)在循环内部使用Select函数,每次循环都判断数组中的一个元素,并将判断结果(布尔量类型)送入Select的“s”输入端;3)每次循环都使用 Build Array函数将左端的移位寄存器直接连接到Select函数的“f”输入端,这样Select函数的输入端就是所有满足条件的元素的索引值;4)将 Select函数的输出端连到右端的移位寄存器上。这样程序结束后,For循环的右端移位寄存器的数据就是需要的索引值。
回答:反馈节点箭头的起始端相当于移位寄存器的右端,箭头的末端相当于寄存器的左端。区别在于移位寄存器的左端元素可以通过下拉下拉方式增加,而反馈节点的端口是无法增加的。
A:右键点击子VI,选择SUBVI NODE……然后再选择第2项SHOW……就是当子VI被调用时,显示前面板。
A:主界面VI properties中windows appearance里customs设定windows behavior为normal了,因此主界面保持在最前端,应该设为default。
A:在程序框图内使用并行循环。每一个可能要运行的子VI(打开其窗口)及其运行条件(按键)各占一个循环。各个循环相互独立,互不干扰。在考虑同时关闭各个窗口时,需要使用全局变量。
A:首先我们可以通过Operate菜单中的Change To Run/Edit Mode命令,设置VI为运行或编辑模式。面板控件的移动只在编辑模式下有效。在运行模式下是不能移动任何控制的位置的。第二种方法是,选择指定的控件(可多选),然后在菜单的Reorder下拉菜单下,选择LOCK命令,来锁住指定的控件。这样,除非使用Unlock命令解锁。否则是无法移动指定控件的位置。
A:这类问题的主要原因是子VI中存在着循环。如果子VI中的循环不能推出,子VI节点就一直在运行。对于LV的数据流编程机制来讲,一个节点没有执行完,它的所有输出端口就不会有有效数据输出。解决方法:一是把子VI中的循环提出到主VI里来。二是使用全局变量,并在主VI中使用并行循环来控制子VI 的结束。
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就可以控制控件是否显示了
A:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开始续存数据。
A:可以应用一个Event Structure来做,添加两个事件(一个是鼠标点击,另一个是鼠标离去)。通过在这两个事件中分别赋给Graph的PlotArearSize属性节点不同的值,来改变Graph的大小。
A:需要调用Windows API函数GetDriveTypeA,其函数返回值盘符类型的数据类型为长整形,输入参数为检测盘符。调用CLFN.vi选择\windows\ system32\kernel32.dll,选择GetDriveTypeA,设置Return Type为Numeric Signed 32-bit Integer;再添加参数nDrive,设置参数类型为STRING和格式为C String Pointer。运行时在输入端填上要检测的U盘盘符,返回结果为时表示为DRIVE_REMOVABLE即为可移动的U盘