如果将字符串转换为数值,LabVIEW仅可以转换用于表示数值的字符串,而仍将其其余值保存为字符串。同样由于浮点算术运算可能存在四舍五入误差,因此浮点数不能作为选择器标签的值,若将一个浮点数连接到条件分支,LabVIEW将对其进行舍入到最近的偶数值。图5-26 求平方根的程序框图分支1图5-27 求平方根的程序框图分支2图5-28 显示错误LabVIEW的条件结构与其他语言的条件结构相比,简单明了,结构简单,不但相当于Switch语句,还可以实现if…......
2023-11-26
在讲解事件结构前,先介绍一下事件的有关内容。首先,什么是事件?事件是对活动发生的异步通知。事件可以来自于用户界面、外部I/O或程序的其他部分。用户界面事件包括鼠标单击、键盘按键等动作。外部I/O事件则诸如数据采集完毕或发生错误时硬件定时器或触发器发出信号。其他类型的事件可通过编程生成并与程序的不同部分通讯。LabVIEW支持用户界面事件和通过编程生成的事件,但不支持外部I/O事件。
在由事件驱动的程序中,系统中发生的事件将直接影响执行流程。与此相反,过程式程序按预定的自然顺序执行。事件驱动程序通常包含一个循环,该循环等待事件的发生并执行代码来响应事件,然后不断重复以等待下一个事件的发生。程序如何响应事件取决于为该事件所编写的代码。事件驱动程序的执行顺序取决于具体所发生的事件及事件发生的顺序。程序的某些部分可能因其所处理的事件的频繁发生而频繁执行,而其他部分也可能由于相应事件从未发生而根本不执行。
另外,使用时间结构的原因是因为在LabVIEW中使用用户界面事件可使前面板的用户操作与程序框图执行保持同步。事件允许用户每当执行某个特定操作时执行特定的事件处理分支。如果没有事件,程序框图必须在一个循环中轮询前面板对象的状态以检查有否发生任何变化。轮询前面板对象需要较多的CPU时间,且如果执行太快则可能检测不到变化。通过事件响应特定的用户操作则不必轮询前面板即可确定用户执行了何种操作。LabVIEW将在指定的交互发生时主动通知程序框图。事件不仅可减少程序对CPU的需求、简化程序框图代码,还可以保证程序框图对用户的所有交互都能作出响应。
使用编程生成的事件,可在程序中不存在数据流依赖关系的不同部分间进行通讯。通过编程产生的事件具有许多与用户界面事件相同的优点,并且可共享相同的事件处理代码,从而更易于实现高级结构,如使用事件的队列式状态机。
事件结构是一种多选择结构,能同时响应多个事件,传统的选择结构没有这个能力,只能一次接受并响应一个选择。事件结构位于函数选板的结构子选板上。
事件结构的工作原理就像具有内置等待通知函数的条件结构。事件结构可包含多个分支,一个分支即一个独立的事件处理程序。一个分支配置可处理一个或多个事件,但每次只能发生这些事件中的一个事件。事件结构执行时,将等待一个之前指定事件的发生,待该事件发生后即执行事件相应的条件分支。一个事件处理完毕后,事件结构的执行亦告完成。事件结构并不通过循环来处理多个事件。与“等待通知”函数相同,事件结构也会在等待事件通知的过程中超时。发生这种情况时,将执行特定的超时分支。
事件结构由超时端子,事件结构节点和事件选择标签组成,如图5-39所示。
超时端子用于设定事件结构在等待指定事件发生时的超时时间,以毫秒为单位。当值为-1时,事件结构处于永远等待状态,直到指定的事件发生为止。当值为一个大于0的整数时,时间结构会等待相应的时间,当事件在指定的时间内发生时,事件接受并响应该事件,若超过指定的时间,事件没发生,则事件会停止执行,并返回一个超时事件。通常情况下,应当为事件结构指定一个超时时间,否则事件结构将一直处于等待状态。
事件结构节点由若干个事件数据端子组成,增减数据端子可通过拖拉事件结构节点来进行,也可以在事件结构节点上单击右键选添加或删除元素来进行。事件选择标签用于标识当前显示的子框图所处理的事件源,其增减与层叠式顺序结构和选择结构中的增减类似。
与条件结构一样,事件结构也支持隧道。但在默认状态下,无须为每个分支中的事件结构输出隧道连线。所有未连线的隧道的数据类型将使用默认值。右键单击隧道,从快捷菜单中取消选择未连线时使用默认可恢复至默认的条件结构行为,即所有条件结构的隧道必须要连线。
对于事件结构,无论是编辑还是添加或是复制等操作,都会使用的编辑事件对话框。编辑对话框的建立,可以通过在事件结构的边框上点右键,从中选择编辑本分支所处理的事件,如图5-40所示。
如图5-41所示,为一个编辑事件对话框。每个事件分支都可以配置为多个事件,当这些事件中有一个发生时,对应的事件分支代码都会得到执行。事件说明符的每一行都是一个配置好的事件,每行分为左右两部分,左边列出事件源,右边列出该事件源产生事件的名称,如图5-41中分支2只指定了一个事件,事件源是<本VI>,事件名称是键按下。
图5-39 事件结构框图
图5-40 创建编辑事件对话框(www.chuimin.cn)
图5-41 编辑事件对话框
事件结构能够响应的事件有两种类型:通知事件和过滤事件。在编辑事件对话框的事件列表中,通知事件左边为绿色箭头,过滤事件左边为红色箭头。通知事件用于通知程序代码某个用户界面事件发生了,过滤事件用来控制用户界面的操作。
通知事件表明某个用户操作已经发生,如用户改变了控件的值。通知事件用于在事件发生且LabVIEW已对事件处理后对事件作出响应。可配置一个或多个事件结构对一个对象上同一通知事件作出响应。事件发生时,LabVIEW会将该事件的副本发送到每个并行处理该事件的事件结构。
过滤事件将通知用户LabVIEW在处理事件之前已由用户执行了某个操作,以便用户就程序如何与用户界面的交互作出响应进行自定义。使用过滤事件参与事件处理可能会覆盖事件的默认行为。在过滤事件的事件结构分支中,可在LabVIEW结束处理该事件之前验证或改变事件数据,或完全放弃该事件以防止数据的改变影响到VI。例如,将一个事件结构配置为放弃前面板关闭事件可防止用户关闭VI的前面板。过滤事件的名称以问号结束,如“前面板关闭?”,以便与通知事件区分。多数过滤事件都有相关的同名通知事件,但没有问号。该事件是在过滤事件之后,如没有事件分支放弃该事件时由LabVIEW产生。
同通知事件一样,对于一个对象上同一个通知事件,可配置任意数量与其响应的事件结构。但LabVIEW将按自然顺序将过滤事件发送给为该事件所配置的每个事件结构。LabVIEW向每个事件结构发送该事件的顺序取决于这些事件的注册顺序。在LabVIEW能够通知下一个事件结构之前,每个事件结构必须执行完该事件的所有事件分支。如果某个事件结构改变了事件数据,LabVIEW会将改变后的值传递到整个过程中的每个事件结构。如果某个事件结构放弃了事件,LabVIEW便不把该事件传递给其他事件结构。只有当所有已配置的事件结构处理完事件,且未放弃任何事件时,LabVIEW才能完成对触发事件的用户操作的处理。
建议仅在希望参与处理用户操作时使用过滤事件,过滤事件可以是放弃事件或修改事件数据。如仅需知道用户执行的某一特定操作,应使用通知事件。
处理过滤事件的事件结构分支有一个事件过滤节点。可将新的数据值连接至这些接线端以改变事件数据。如果不对某一数据项连线,那么该数据项将保持不变。可将真值连接至“放弃?”接线端以完全放弃某个事件。
事件结构中的单个分支不能同时处理通知事件和过滤事件。一个分支可处理多个通知事件,但仅当所有事件数据项完全相同时才能处理多个过滤事件。
图5-42和图5-43给出了包含两种事件处理的代码示例,可以通过此例来进一步了解事件结构,如图5-42对于分支0,在编辑事件结构对话框内,响应了数值控件上“键按下?”的过滤事件,用假常量连接了“?放弃”,这使得通知事件键按下得以顺利生成,若将真常量连接了“?放弃”,则表示完全放弃了这个事件,则通知事件上的键按下不会产生,如图5-43对于分支1,用于处理通知事件键按下,处理代码弹出内容为“通知事件”的消息框。图中While循环接入了一个假常量,所以循环只进行一次就退出,这样,键按下事件实际并没得到处理。若连接真常量,则执行。
图5-42 过滤事件
图5-43 通知事件
有关LabVIEW 2012中文版虚拟仪器从入门到精通的文章
如果将字符串转换为数值,LabVIEW仅可以转换用于表示数值的字符串,而仍将其其余值保存为字符串。同样由于浮点算术运算可能存在四舍五入误差,因此浮点数不能作为选择器标签的值,若将一个浮点数连接到条件分支,LabVIEW将对其进行舍入到最近的偶数值。图5-26 求平方根的程序框图分支1图5-27 求平方根的程序框图分支2图5-28 显示错误LabVIEW的条件结构与其他语言的条件结构相比,简单明了,结构简单,不但相当于Switch语句,还可以实现if…......
2023-11-26
同步组将在程序执行完毕前始终保持活动状态。如要向一个同步组添加一个已属于另一同步组的定时结构,LabVIEW将把该定时结构从前一个组中移除,添加到新组。中止定时结构的执行,使用定时结构停止VI可通过程序中止定时结构的执行。将字符串常量或控件中的结构名称连接至定时结构停止VI的名称输入端,指定需要中止的定时结构的名称。例如,以下程序框图中,低定时循环含有定时结构停止VI。......
2023-11-26
在图7-34的右图中,程序先让两组的输入输出在For循环的边框通道上形成数组,然后打包,用一个二维数组送到XY图中显示,这种方法比较直观。要求使用XY图绘制出两者随次数增加的变化曲线。图7-40 例7-2的程序框图图7-41 例7-2的前面板显示图7-42 例7-2错误的程序框图图7-43 例7-2错误的前面板显示对于前面板中的两个曲线的显示,可以在XY图的属性中自行设置,如图7-44所示。图7-44 XY图的图形属性......
2023-11-26
图4-14 移动的对象位置4.改变对象的大小几乎每一个LabVIEW对象都有8个尺寸控制点,当对象操作工具位于对象上时,这8个尺寸控制点会显示出来,用对象操作工具拖动某个尺寸控制点,可以改变对象在该位置的尺寸,如图4-15所示。“取消锁定”的功能是解除对象的锁定状态。当用户已经编辑好一个VI的前面板时,建议用户利用“组合”或者“锁定”功能将前面板中的对象组合并锁定,防止由于误操作而改变了前面板对象的布局。......
2023-11-26
如需将文本字符串写入文本文件,可用写入文本文件函数自动打开和关闭文件。例8-1:文本文件的写入。文本文件的读取由读取文本文件VI来完成,本实例演示读取文本文件VI的使用方法。程序中,读取文本文件VI有两个重要的输入数据端口,分别是文件和计数。在实例中,读取文本文件VI读取D盘根目录下的data文件,该文件中的数据由实例8-1的程序存入,并将读取的结果在文本框中显示出来。......
2023-11-26
UDP用于执行计算机各进程间简单、低层的通信。图11-68 UDP子选板使用打开UDP函数,在端口上打开一个UDP套接字。UDP会保留为发送命令而指定的数据报的字节数。然而,鉴于UDP可靠性不如TCP,通常不会通过UDP发送大型数据报。例11-6:UDP通信实例。该例子使用UDP实现双机通信。图11-69和图11-70所示是实现UDP通信发送端的前面板和程序框图。UDP函数通过广播与单个客户端或子网上的所有计算机进行通信。......
2023-11-26
波形图用于将测量值显示为一条或多条曲线。如图7-2所示,使用波形图显示40个随机数的情况。图7-3 波形图的使用图7-4 波形图的使用波形图显示的每条波形,其数据都必须是一个一维数组,这是波形图的特点,所以要显示n条波形就必须有n组数据。本题的做法是同上一例类似,将形成的二维数组进行打包,然后送入波形。......
2023-11-26
把DAQ卡与计算机连接后,就可以开始安装驱动程序了。图10-2 NI-DAQmx安装界面之一图10-3 NI-DAQmx安装界面之二图10-4 NI-DAQmx安装界面之三图10-5 NI-DAQmx安装界面之四检查安装程序检测和选择的正确支持文件与应用软件和(或)语言的正确版本号。图10-6 NI-DAQmx安装界面之五图10-7 NI-DAQmx安装界面之六图10-8 “Measurement&Automation explorer”窗口在该窗口中,可以对本计算机拥有的NI公司的软、硬件进行管理。单击“完成”按钮,弹出创建“NI-DAQmx仿真设备”对话框。安装完成NI-DAQmx后,函数选板中将出现DAQ子选板。......
2023-11-26
相关推荐