
3.1 【实例7】创建数组控件
数组是由同一类型数据元素组成的大小可变的集合,LabVIEW提供了很多数组函数,能够更为方便、快捷地对数组进行运算。图3-1所示为数值输入控件数组,从图中可以看出,该数组主要由数组框和数组框里面的数值输入控件组成。

图3-1 数值输入控件数组
1.在前面板中直接创建数组控件
在前面板中直接创建数组控件的步骤分为两步。第一步是在前面板中放置数组框。如图3-2所示,数组框位于前面板控件选板的“控件→新式→数组、矩阵与簇→数组”中。单击控件选板中数组框的图标并将其拖动至前面板的空白处,再单击释放数组框,这时,数组在背面板中显示为带空括号的黑框。第二步,将有效的数据对象放入数组框中。如图3-3所示,从控件选板中选中数值输入控件,拖动控件至数组框后,单击释放控件到数组框中。由于数值输入控件在默认情况下是双精度型实数,所以背面板中的数组图标便成了颜色为橙色并带有“[DBL]”标志的图标。

图3-2 放置数组框
数组创建后,在默认的情况下只能看到一个元素。可以将光标放到数组框下部调节大小的句柄上,向下拖动句柄,数组中的其他元素也就能显示出来了(如图3-4所示)。如果想改变数组中元素的大小,只要将光标放在数组框内某个元素调节大小的句柄上,拖动鼠标调节元素的大小,这样其他所有元素也会跟着放大或者缩小了(如图3-5所示)。

图3-3 向数组框中放入有效数据

图3-4 调整数组中数据显示的多少

图3-5 调整数组内数据的大小
按照上述方法,只要将不同类型的数据放到数组框中,便可以创建其他类型的数组了。图3-6中显示了数值输入型数组、数值输出型数组、字符串型数组、开关型数组和指示灯数组。在背面板中,不同数据类型的数组图标显示的颜色不同,图标中的标志也不同。数组控件创建好后,便可以给数组控件赋值了。

图3-6 不同数据类型的数组
2.通过循环创建数组显示控件
利用结构中的For循环和While循环也可以创建数组显示控件。这里以For循环为例,介绍如何利用循环创建数组显示控件。For循环位于程序框图函数选板的“函数→编程→结构→For循环”中。如图3-7所示,放置For循环时,首先要选中For循环,单击For循环的起始位置,然后移动光标到For循环的截止位置,最后单击鼠标左键,For循环便放置到程序框图中了。For循环中的N表示要循环的总次数,For循环放置完后,要给N赋值,以指明循环的次数;i代表当前是第几次循环,i的值为0~N-1。要循环的循环体放在For循环的内部。
创建了For循环后,便可以用For循环创建数组输出控件了。如图3-8所示,首先要给循环次数N赋值。将光标放在“N”上,单击鼠标右键调出快捷菜单,选择“创建常量”,在常量中输入5,使For循环能够循环5次。数值常量也可以通过函数选板的“函数→编程→数值→数值常量”进行创建。再将常量与“N”相连。然后将i值连接到For循环的边框上。最后调出“自动索引隧道”的右键快捷菜单,选择“创建”→“显示控件”。至此,一个数组显示控件便自动创建完成了。

图3-7 在程序框图中创建For循环

图3-8 用For循环生成数组的步骤
图3-9所示的是用For循环生成数组的程序框图。运行VI,在前面板中会得到如图3-10所示的结果。运行时,读者可以将工具栏中的“高亮显示执行过程”按钮点亮来查看程序运行的数据流走向。高亮显示执行过程时,可以看到程序框图中,每次循环都会将当前循环的i值作为本次循环结果,并将其以数据流的形式传送到For循环的边框上,等到所有循环都结束后,每次循环产生的结果会以数组的形式流到For循环外部的显示控件中。

图3-9 用For循环生成数组的程序框图

图3-10 用For循环生成数组的运行结果
3.通过数组函数创建数组显示控件
LabVIEW提供了很多用于数组操作的函数和VI,其中有一个“创建数组”函数,也可以用来生成数组。图3-11所示的便是“创建数组”函数的图标,它位于函数选板的“函数→编程→数组→创建数组”中。“创建数组”函数有“连接输入”和“不连接输入”两种模式,在该函数的快捷菜单中可以选择是否“连接输入”。“创建数组”函数的左边端口为输入端口,输入端口连接元素或数组。输入端口的元素或数组必须为同一数据类型,或者能够自动转换成同一数据类型,否则便会出现编译错误。输入端口的数目可以根据需求增加或减少(用鼠标拉缩调整或者通过快捷菜单增加/删除输入)。
在“连接输入”模式下,函数将会按照顺序拼接所有输入并形成输出数组,该输出数组的维度与连接的最大输入数组的维度相同。例如,在此模式下将两个一维数组[1, 2]和[3, 4, 5]连接到“创建数组”函数的输入端,输出端的结果便是一维数组[1, 2, 3, 4, 5]。在“不连接输入”模式下,输入端要连接维度相同的数组,函数会创建比输入数组多出一个维度的数组。该函数将按顺序拼接各个数组,形成输出数组的子数组、元素、行或页。如有需要,可填充输入以匹配最大输入的大小。例如,在此模式下将上述两个一维数组[1, 2]和[3, 4, 5]连接至输入端,得到的输出为二维数组[[1, 2, 0], [3, 4, 5]]。
在这里,要创建的是一维数组。图3-12所示的便是用“创建数组”函数创建一维数组的程序框图和前面板运行结果。框图中的输入为三个标量元素,运行后会生成含有三个元素的数组。

图3-11 “创建数组”函数的图标

图3-12 用“创建数组”函数创建一维数组的程序框图和前面板运行结果