首页 理论教育 Lab VIEW数据结构:布尔型、数组与簇

Lab VIEW数据结构:布尔型、数组与簇

时间:2023-06-21 理论教育 版权反馈
【摘要】:3)布尔型Lab VIEW使用8个数据位来存储布尔型数据。布尔型数据常用来表示数字数据,例如用于前面板输入控件中,使其成为带有一定机械动作的开关,从而控制条件结构等执行结构。数组将相同类型的数据集合在一个数据结构中,而簇则将多种类型的数据集合在一个数据结构中。图3-19带有9个初始化元素的二维数组在一个二维数组中,若初始化某一列中的元素之后,该列及其前面的未初始化的列都将自动初始化,并被赋予相应数据类型的默认值。

Lab VIEW数据结构:布尔型、数组与簇

1)字符串型

字符串是一串可显示或不可显示的ASCII字符,它提供了一种不依赖于平台的消息和数据格式,主要应用包括:

●创建简单的文本消息。

●通过发送文本命令控制仪器,并以ASCII或者二进制字符串的格式返回数据值,这些值可以被转换为数值型数据。

●将数值数据存储在硬盘上。如要在ASCII文件中存储数值型数据,就必须在数据存储至硬盘前将数值型数据转换为字符串型数据。

●通过对话框引导用户。

在前面板上,字符串可以通过表格、标签、文本输入框来表示。Lab VIEW内置的VI和函数,可以对字符串进行各种操作,如格式化字符串、解析字符串及其他编辑等。使用时,采用粉色来表示字符串数据。

2)数值型

Lab VIEW中数值型数据包括浮点数、定点数、整数、无符号数以及复数。其中,双精度数和单精度数以及复数在Lab VIEW中都以橙色表示,所有整数则以蓝色表示。

注意:各种数值型数据的不同之处在于存储和表示数据时所使用的位数。

3)布尔型

Lab VIEW使用8个数据位来存储布尔型数据。在Lab VIEW中可使用布尔型来表示0和1、真和假。若8位都是0,则布尔值为假;只要有任一位非0,则布尔值为真。布尔型数据常用来表示数字数据,例如用于前面板输入控件中,使其成为带有一定机械动作的开关,从而控制条件结构等执行结构。同时,布尔控件还常用作退出While循环结构的条件。在Lab VIEW中,采用绿色代表布尔型数据。

4)动态数据类型

大多数的Express VI均可接受和/或返回动态数据类型,以深蓝色来表示。

使用“转换至动态数据”和“从动态数据转换”VI,可以转换下列数据类型的浮点数值或布尔数据:

●一维波形数组

●一维标量

●一维标量数组-最新值

●一维标量-单通道

二维标量数组-列为通道

●二维标量-行为通道

●单一标量

●单一波形

动态数据类型可连接至较为合适的表示数据的显示控件,如图形、图表、数值、布尔显示控件等。然而,由于动态数据必须自动转换以匹配所连接的显示控件,故Express VI常常会导致程序框图的执行速度变慢。

5)数组型

在某些特定应用中,将相互关联的数据归为一组,更方便处理。在Lab VIEW中,可以使用数组和簇将相互关联的数据集合在一起。数组将相同类型的数据集合在一个数据结构中,而簇则将多种类型的数据集合在一个数据结构中。

数组由元素和维度组成。元素是数组中的数据。维度是数组的长度、高度或深度。一个数组可以是一维或多维的,而且每一维在内存允许的情况下可以有多达(231-1)个元素。可以创建布尔值、数值、路径、字符串、波形以及簇的数组。对一组相似的数据进行操作或进行重复计算时,可考虑使用数组。在存储波形或循环结构所产生的数据,即每个周期产生一个元素时,数组是理想的选择。

注意:Lab VIEW中的数组索引都以0为起始。无论数组的维度如何,第一个元素的索引均为0。

数组中的元素是有序的,因此可通过索引访问数组中任意元素。索引从0开始,即索引的范围是0到n~1,其中n是数组中元素的个数。例如,设数组元素为一年的12个月,n=12,因此索引范围为0~11。其中“三月”是第三个月,其索引值为2。

图3-15 数值数组控件

①索引框;②元素框

图3-15所示为一个数值数组的范例。数组中的第一个元素(3.00)的索引为1,第二个元素(1.00)的索引为2。图中未显示索引为0的元素,因为索引显示控件选择了元素1。在索引框中所显示的值,是指最左上角的元素的索引值。

(1)创建数组输入控件和显示控件

如图3-16所示,在前面板上添加一个数组框,然后将数据对象或元素(如数值或字符串控件)拖入其中,即可添加输入控件或显示控件的数组。

如将一个无效的输入或显示控件拖入数组框中,则无法实现该操作。

在程序框图中使用数组前,必须在数组框中插入对象,否则数组的接线端为空,不会产生任何相关的数据类型。

图3-16 将数值控件拖入数组框内

图3-17 二维数组

(2)二维数组

前面的例子都是一维数组。而二维数组则是以网格的方式存储数据。它需要一个列索引和一个行索引来定位一个元素,且二者都是以0作为起始索引。图3-17给出了一个8列8行的二维数组,其中包含8×8=64个元素。

如要在前面板上添加一个多维数组,右键点击索引显示框,并选择快捷菜单中的“添加维度”。此外,也可以改变索引框的大小,直至出现所需维数。

(3)初始化数组

初始化数组即定义各个维度中元素的个数与内容。数组可以进行初始化,也可以不进行初始化。一个未初始化的数组包含固定的维数,但不包含任何元素。如图3-18所示为一个未经初始化的二维数组控件。请注意其元素均无法选择,表明此数组是未经初始化的。

图3-18 未经初始化的二维数组

图3-19 带有9个初始化元素的二维数组

在一个二维数组中,若初始化某一列中的元素之后,该列及其前面的未初始化的列都将自动初始化,并被赋予相应数据类型的默认值。如图3-19所示,在以0为起始的第2列中输入4,则第0,1,2列将自动被初始化为0,即数值数据类型的默认值。

(4)创建数组常量

若要在程序框图上创建一个数组常量,可在函数选板上选择“数组常量”,并将数组框放置到程序框图中,然后在数组框内放置字符串常量、数值常量、布尔常量以及簇常量。数组常量用于存储常量数据或同另一个数组进行比较。

(5)自动索引数组输入

将数组连线到For循环或者While循环时,通过自动索引功能可将每次迭代与数组中的一个元素相连。此时,循环的隧道从实心方块变成空心,表明已启用自动索引功能。右键单击隧道,从快捷菜单中选择“启用索引”或“禁用索引”,可以切换隧道的状态。

(6)数组输入

若对连接至For循环输入接线端的数组启用了自动索引动能,Lab VIEW会将循环的次数自动设定为数组的大小,因此无须连接循环计数的接线端。由于For循环每次可处理数组中的一个元素,因此只要是连接至For循环的数组,Lab VIEW就会默认启用自动索引功能。如不需要一次处理数组中的一个元素,可以禁用自动索引功能。

如图3-20所示,For循环执行的次数等同于数组中的元素数量,其运行箭头是完整的。通常情况下,如果For循环的计数接线端没有连线,运行箭头就是断开的。

图3-20 使用数组决定For循环的次数

如果有多个隧道启用自动索引,或者连接了循环计数端,则循环的实际执行次数将取其中的最小值。举例来说,如有两个数组进入For循环(分别有10个、20个元素),同时将数值15连接至循环计数端,则循环的实际执行次数为10次。此时虽然可以索引第一个数组的所有元素,但是仅能索引第二个数组的前10个元素。

(7)数组输出

当自动索引一个数组的输出隧道时,每一次循环输出一个新元素到数组。因此,自动索引输出数组的大小等于循环的次数。此时,连接输出隧道和数组显示控件的连线将变粗,表明它将输出一个数组,且输出隧道中将包含一个方框。(www.xing528.com)

在循环隧道上点击右键,并在快捷菜单中选择“启用索引”或“禁用索引”,即可启用或关闭自动索引功能。While循环的自动索引功能是默认关闭的。

举例来说,若要隧道仅输出最后一次循环的值,则需要停用自动索引。

图3-21 自动索引输出

图3-22 创建一个二维数组

(8)创建二维数组

将一个For循环嵌入另一个For循环中,即可创建二维数组。如图3-22所示,外层的For循环可以创建行元素,内层的For循环可以创建列元素。

6)簇

簇可以将混合类型的数据集合在一起。Lab VIEW错误簇就是常见簇之一,它包含一个布尔值、一个数值以及一个字符串。簇类似于文本编程语言中的记录或者结构体。

将多个数据元素捆绑在一起,可以使程序框图上的连线更加简洁,减少子VI的接线端的数量。接线板最多可以有28个接线端,如果一个VI的前面板上有超过28个控件需要将值传递至另一个VI,则可以将其中的一部分集合到一个簇中,并为其分配一个接线端即可。

程序框图上的大多数簇的连线和数据类型接线端都是粉色的。错误簇的连线与数据类型接线端则是暗黄色。数值类型的簇(有时视为点)则使用棕色的连线与数据类型接线端。将棕色的数值簇连接至数值运算函数(如加运算或求方根),即可以对簇中的所有元素同时进行运算。

(1)簇中元素的顺序

虽然簇与数组中的元素均有顺序,但是使用解除捆绑函数就可将簇内的所有元素拆开。例如,可以使用“按名称解除捆绑”函数将簇内的元素按名称解除捆绑,但簇中的每一个元素必须要有标签。与数组不同,簇的大小是固定的,但与数组相同的是,一个簇里面要么全是输入控件,要么全是显示控件。簇中不能同时含有输入控件和显示控件。

(2)创建簇控件

如图3-23所示,将簇框添加到前面板上,再将数据对象或元素(可以是布尔、枚举、数组、数值、字符串、路径以及簇控件)拖拽至框内,即可在前面板上创建簇输入控件或显示控件。另外,通过拖拽鼠标游标,可以改变簇框的尺寸。

图3-24所示是一个含有3个输入控件的簇:一个字符串、一个布尔开关和一个数值控件。

(3)创建簇常量

若要在程序框图中创建簇常量,可在函数选板上选择“簇常量”,并将簇外框放置到程序框图上,然后在框内放置一个字符串常量、数值常量、布尔常量或者簇常量。簇常量用于存储常量数据或与另一个簇进行比较。

图3-23 创建簇输入控件

图3-24 簇输入控件示例

若前面板窗口中已有一个簇控件或者显示控件,同时又想在程序框图中创建一个包含同样元素的簇常量,可以将该簇从前面板窗口拖曳到程序框图中,或者在前面板窗口中右键单击该簇,从快捷菜单中选择“创建”→“常量”即可。

(4)使用簇函数

簇函数用于创建并操作簇。一般地,可执行下列操作:

●从簇中提取一个数据元素。

●向簇中添加一个数据元素。

●将簇分解为单独的数据元素。

另外,也可以使用“捆绑”函数来组装一个簇。“捆绑”与“按名称捆绑”函数可以修改簇;而“解除捆绑”与“按名称解除捆绑”则可以将簇解绑。

在程序框图上右键单击“簇接线端”,从快捷菜单中选择“簇、类与变体”选项,可在程序框图上放置“捆绑”“按名称捆绑”“解除捆绑”和“按名称解除捆绑”函数。“捆绑”或“解除捆绑函数”自动产生正确的接线端数量。“按名称捆绑”与“按名称解除捆绑”函数只显示簇中的第一个元素,但此时可通过位置调整工具来改变“按名称捆绑”和“按名称解除捆绑”函数的大小,以显示簇内的其他元素。

(5)组装簇

“捆绑”函数可以将独立的元素组装成簇,或者改变现有簇中的个别元素值,而无须更新所有元素的值。使用位置调整工具可重新设定捆绑函数的大小,或者可在元素输入端上点击右键后选择快捷菜单中的“添加输入”,如图3-25所示。

图3-25 在程序框图中组装一个簇

图3-26 使用“捆绑”函数修改一个簇

(6)修改簇

若要连接簇的输入,则只需连接需要修改的元素。如图3-26所示,其中有三个控件,如果已知簇中元素的顺序,可以使用“捆绑”函数来连线,从而更改“Command”元素的值。

也可以使用“按名称捆绑”函数,以改变或获取现有簇中的带标签元素。“按名称捆绑”函数的功能接近于“捆绑”函数,但不是按照簇中的顺序来引用元素,而是按其标签来引用元素。只能按标签访问元素。输入的数量不需要与输出簇的元素数量匹配。使用操作工具点击输入接线端,并在下拉菜单中选择一个元素。也可右键点击输入接线端,通过下拉菜单中的选项来选择元素。

如图3-27所示,可以通过“按名称捆绑”函数来修改“Command”与“Function”的值。

对于开发过程中可能发生改变的数据结构,建议使用“按名称捆绑”函数。为簇添加一个新元素或者改变元素的顺序时无须对“按名称捆绑”函数重新连线,因为这些名称仍然有效。

(7)解簇

“解除捆绑”函数用于将簇分割为独立的元素。

“按名称解除捆绑”函数用于根据用户所指定的名称,返回簇内元素。输出接线端的数量与输入簇中元素的数量不必相同。

使用操作工具点击输出接线端,在下拉菜单中选择一个元素。也可右键点击输出接线端,通过下拉菜单中的选项来选择元素。

以图3-28为例,如对簇使用“解除捆绑”函数,则该簇具有的4个输出端点与簇中的4个控件相对应。本例中,用户必须知道簇内元素的顺序,才能将簇分解后的布尔控件与簇内的开关控件对应起来。元素从0开始,顺序为从上到下。若使用“按名称解除捆绑”函数,则输出接线端的数量可以任意指定,并可根据元素的名称存取独立的元素,而无须依照其顺序。

图3-27 使用“按名称捆绑”函数修改簇

图3-28 解除捆绑和按名称解除捆绑

7)枚举

枚举包含输入控件、常量与显示控件,是多种数据类型的集合。枚举代表成对的值,是一个字符串和一个数值。枚举中可以包含一组或多组的值。举例来说,若创建一个枚举类型称为“Month”,则“Month”变量的值对可能为January-0、February-1,直到December-11。图3-29显示了枚举输入控件的属性对话框中的值对。只要在枚举控件处点击右键,选择编辑项即可直接使用此功能。

图3-29 Month枚举控件属性对话框

图3-30 Month枚举控件

①前面板控件;②选择一个项;③程序框图对象

与字符串相比,由于枚举便于在程序框图上操作数字,所以用途比较广泛。图3-30显示了上述Month枚举控件、所选的值对以及相应的程序框图接线端。

8)探针工具

使用探针工具,可在VI运行时检查连线实时传递的值。

如程序框图比较复杂,操作繁多,且每一步都可能返回错误的值,此时可以使用探针工具。探针工具结合执行过程高亮显示、单步执行以及断点,可用于确定是否产生了数据错误以及错误发生在哪里。高亮显示执行过程、单步调试或在断点处暂停时如有数据产生,探针会立即更新并在探针监视窗口中显示数据。执行过程由于单步执行或断点而在某一节点处暂停时,可用探针探测刚刚执行的连线,查看流经该连线的数值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈