原标题:LabVIEW开发者必读的问答汇总,搞定疑难杂症全靠它了!
不知道大家还记不记得小编上周分享的《24个LabVIEW初学者常见问题以及解答汇总》呀?上次分享之后有一些小伙伴表示很有用,现在小编就来分享第二弹啦~
上一篇的内容戳这里:干货!24个LabVIEW初学者常见问题及解答汇总
25、在子vi运行过程中,如何将数据实时传递到调用它的主vi中,而不是等待子VI运行结束后才在主VI中获得子Vi的输出数据?
回答:使用带控制参量的属性节点可以实现在子VI中修改主VI属性的目的,由于控件的值(Value)也是控件的属性之一,因此可以使用控制参量适应以上要求。
在子VI中,使用带有控制参量的属性节点,将要传递到主VI的数据写入这个属性(Value)中,将控制参量要设置为Control,并且在子VI的连接器中进行定义;在主VI中,为接收子VIshuju的控件建立一个控制参量,将这个控制参量连接到子VI,即可达到在主VI中实时获取子VI数据的要求。
26、事件结构中两种事件类型,一个是通知事件(Notify),另一个是过滤事件(Filter),这两种事件的区别是什么?
回答:对于通知事件,程序可以感知事件的发生并且响应该事件,然后再处理在事件结构中定义的任务;对于过滤事件,程序感知事件发生后首先处理在事件结构中定义的任务,然后根据时间结构中的设定(Discard?)决定是否响应该事件。举例来说,时间为Panel Close,在事件发生时弹出一个对话框。如果是通知事件,首先响应事件关闭了前面板,因此没有办法处理“弹出对话框”的任务;如果是过滤事件,首先处理“弹出对话框”的任务,然后根据事件结构中的Discard的值判断是否关闭前面板,若Discard为T,则不关闭,若为F,则关闭。
27、LV7.1主程序已经完成,想在主程序运行之前,先执行一个别的界面,当退出该界面的时候,再显示主界面,如何实现?
回答:可以在主程序框图之前,将主程序前面板隐藏,调用子程序,推出子程序后,再显示主程序前面板。这可以通过VI属性节点来实现,先调用一个属性节点,右键选择Select Class/VI Server/VI,然后在属性中选择Front Pannel Window/State属性,分为设为Hide和Standard。Demo程序见项目进程管理中AE-01labview编程技术讨论的“主界面隐藏”。
28、将LV7.1前面板控件(graph)的内容保存成图像文件,在LV中如何编程实现?
回答:右键控件创建Invoke Node,选择方法为“Get Panel Image”;另外,调用Graphics &Sound/Graphics Formats下面的VI,将第二步获得的图像写入相应格式文件中。
29、在LV程序中使用matlab,生成exe文件以后,发现文件可以运行但是无法弹出运行界面。
回答:在lv中如果使用了MATLAB的话,生成EXE文件的时候需要加一个名为马特.dll的文件作为支持文件,此外在目标PC上必须安装MATLAB软件。
30、LV7.1使用VI Server的方式,在一台机器上调用另一台机器上的VI并运行,需要做哪些设置?(两台机器在同一个网络中)
回答: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。
31、在LV7.1中如何在运行程序后,前面板上去掉windows的关闭按钮。
回答:可以在LV的前面板FILE/VI properties/windows appearance/customize,去掉allow user to close window对钩,保存设置,运行后可以实现效果。
32、LV7.1中如何清除前面板的Graph,即在每次运行时,让Graph重新显示数据而不显示历史数据。
回答:在Graph里面可以通过创建Local Varible并对其赋空来解决。而在Chart里可以通过创建History Data属性节点并对其赋空来解决。
33、LV7.1中怎样将一个数组中所有满足条件的元素的索引值提取出来,保存成一个新的数组?
回答:使用移位寄存器、Build Array和Select函数就可以做到,具体方法:
1)使用FOR循环,在循环边框上添加一个移位寄存器,并初始化为一维空数组,类型为I32;
2)在循环内部使用Select函数,每次循环都判断数组中的一个元素,并将判断结果(布尔量类型)送入Select的“s”输入端;
3)每次循环都使用Build Array函数将左端的移位寄存器直接连接到Select函数的“f”输入端,这样Select函数的输入端就是所有满足条件的元素的索引值;
4)将Select函数的输出端连到右端的移位寄存器上。这样程序结束后,For循环的右端移位寄存器的数据就是需要的索引值。
35 移位寄存器和反馈节点的区别?
回答:反馈节点箭头的起始端相当于移位寄存器的右端,箭头的末端相当于寄存器的左端。区别在于移位寄存器的左端元素可以通过下拉下拉方式增加,而反馈节点的端口是无法增加的。
36、如何让子VI的前面板也显示出来?
回答:右键点击子VI,选择SUBVI NODE……然后再选择第2项SHOW……就是当子VI被调用时,显示前面板。
37、弹出窗口无法进行任何操作,并且被主界面挡住,如何解决?
回答:主界面VI properties中windows appearance里customs设定windows behavior为normal了,因此主界面保持在最前端,应该设为default。
38、在程序中实现按对应键弹出窗口,在窗口已打开情况下继续可打开其他窗口?
回答:在程序框图内使用并行循环。每一个可能要运行的子VI(打开其窗口)及其运行条件(按键)各占一个循环。各个循环相互独立,互不干扰。在考虑同时关闭各个窗口时,需要使用全局变量。
39、在调度Vi的时候,经常无意地把面板上的一些控件移动了位置。还要花很大功夫去重新布置这些面板控件。有没有办法让已经设计好的控件的位置固定不动?
回答:首先我们可以通过Operate菜单中的Change To Run/Edit Mode命令,设置VI为运行或编辑模式。面板控件的移动只在编辑模式下有效。在运行模式下是不能移动任何控制的位置的。第二种方法是,选择指定的控件(可多选),然后在菜单的Reorder下拉菜单下,选择LOCK命令,来锁住指定的控件。这样,除非使用Unlock命令解锁。否则是无法移动指定控件的位置。
40、为什么子VI节点的输出端口没有数据传递出来?
回答:这类问题的主要原因是子VI中存在着循环。如果子VI中的循环不能推出,子VI节点就一直在运行。对于LV的数据流编程机制来讲,一个节点没有执行完,它的所有输出端口就不会有有效数据输出。解决方法:一是把子VI中的循环提出到主VI里来。二是使用全局变量,并在主VI中使用并行循环来控制子VI的结束。
41、怎样在LABVIEW中实现全屏显示?
回答: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文件作数据续存?
回答:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开始续存数据。
43、LV当用鼠标点击Graph时,该Graph的大小变化了,当鼠标离去后Graph的大小恢复到原来情况?
回答:可以应用一个Event Structure来做,添加两个事件(一个是鼠标点击,另一个是鼠标离去)。通过在这两个事件中分别赋给Graph的PlotArearSize属性节点不同的值,来改变Graph的大小。
44、如何用LABVIEW编程检测U盘?
回答:需要调用Windows API函数GetDriveTypeA,其函数返回值盘符类型的数据类型为长整形,输入参数为检测盘符。调用CLFN.vi选择windowssystem32kernel32.dll,选择GetDriveTypeA,设置Return Type为Numeric Signed 32-bit Integer;再添加参数nDrive,设置参数类型为STRING和格式为C String Pointer。运行时在输入端填上要检测的U盘盘符,返回结果为时表示为DRIVE_REMOVABLE即为可移动的U盘。
在学习LabVIEW的过程中,还有很多小伙伴对知识点把握不透彻,对未来的职业规划也没有明确的方向,为此小编特地为大家带来龙哥直播第三期《畅聊labview视觉工程师职业发展前景》,在6月13号(本周四晚)19:50,龙哥将和大家一起探讨如何进行labviwe视觉职业规划,感兴趣的小伙伴不要错过哟~赶紧扫码免费参与吧!
直播详情
主题:龙哥与你面对面探讨如何labviwe视觉职业规划
1) LabVIEW学习需要什么学历基础?
2) 如何零基础进入LabVIEW视觉或自动化测试领域?
3) 线上学习和上线学习如何选择?
4) 学到什么程度可以开始LabVIEW视觉岗位求职?
5) 如何形成LabVIEW视觉学习的良性循环?
【直播时间】6.13晚19:50
【免费报名】限额200名
18123773580,备注直播报名↓↓↓
责任编辑: