
3.1 基本数据类型
LabVIEW支持多种基本的数据类型和灵活的用户自定义类型。表3-1列出了LabVIEW支持的各种数据类型,同时列出了不同数据类型的输入控件或显示控件在VI后面板上的图标及系统指定的默认值。
表3-1 LabVIEW支持的各种数据类型

续表

续表

LabVIEW支持非常丰富的数据类型,为了便于理解,我们可对这些数据类型进行分类。通常将布尔、整型、浮点型及时间等与数值相关的数据统称为数值类型,将簇和类称为自定义类型,而将自定义类型以外的类型统称为基本类型。数值类型提供了多种可供选择的数据范围,以便设计人员在不同计算精度、范围和存储空间方面权衡选择,表3-2列出了LabVIEW支持的各种数值类型。
表3-2 LabVIEW支持的各种数值类型

续表

每个整型量(Integer)有带符号(Signed)和无符号(Unsigned)两种形式,每种形式有8位、16位、32位、64位4种大小,这些整数可以在输入控件或显示控件中以二进制、八进制、十六进制或十进制显示(在输入控件或显示控件的右键菜单中选择显示模式)。默认情况下,整型数值控件的类型为32位有符号类型。
从在计算机内部的存储形式来看,LabVIEW用8位整型量表示布尔(Bool)类型,但是与整型量不同的是,它只有TRUE(非0值)和FALSE(0值)两种取值,代表逻辑上的真和假。
枚举类型(Enum)是基本数据类型的一种。在“枚举”类型的控件中,设计者可将所有可能的选项与整型数对应,一旦为枚举类型控件添加了所有选项,则该控件的类型可以被当作一个整数类型(其实是整数类型的子集)的控件来操作。值得一提的是,文本环、下拉菜单和图片列表框控件从功能上来看与枚举框类似,也可以将各种选项映射到数值,但是使用枚举框时,数值由系统自动指定,而文本环、下拉菜单和图片列表框控件中选项对应的数值可由用户指定,如图3-1所示。

图3-1 枚举框选项对应的数值由系统自动指定
浮点数(Floating Point)有单精度(Single)、双精度(Double)和扩展精度(Extended)三种以及十进制小数形式和指数形式两种表示方式。十进制数形式表示如0.25、0.735等;指数形式一般为:a E n(a为十进制数,n为十进制整数,E为阶码),其值为a×10n,例如,2.1E5(等于2.1×105)。默认情况下,浮点数值控件的类型为双精度类型。
字符串(String)是一组顺序排列的可见或不可见的ASCII字符集合,用于在程序中处理文本信息,是程序中较为常用的信息传递、存储方式。
数组(Array)是同类型元素的集合,可以是一维或者多维,每维最多可有231–1个元素。可以通过数组索引访问其中的每个元素,索引的范围是0~n–1,其中n是数组中元素的个数。第一个元素的索引号为0,第二个为1,以此类推。数组的元素可以是基本数据类型,如数值、字符串、枚举等,也可以是簇、类对象等复杂的数据类型,但数组中所有元素的数据类型必须一致,并且不能是数组类型本身。
簇(Cluster)是另一种数据类型,类似于C/C++语言中的stuct,它的元素可以是不同类型的数据。使用簇可以把分布在流程图中各位置的数据元素组合起来,这样可以减少连线的拥挤程度,减少子VI的连接端子的数量。波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。
引用(Refnum)和I/O名(I/O Name)是开放硬件资源的参考,如一个文件、仪器或设备、网络连接、图像,LabVIEW程序、VI或者控件。它们的功能类似于指向数据结构的指针,用于描述资源。虽然这两个参考类似,但控件却大不相同。具体来说,I/O名直观地显示一个值而引用则不显示。VISA、IVI和DAQmx Name控件提供它们所引用的硬件的信息。
除了以上类型外,LabVIEW还支持扩展的浮点数类型、复数类型和时间戳等扩展类型,这些数据类型极大地方便了程序的数据处理。
在实际中,同一控件可能对应多种不同的数据类型,设计人员根据操作的直观性和存储的高效性选择控件类型和数据类型。图3-2给出了LabVIEW控件与数据类型的对应关系。控件类型位于顶部水平一栏,按照操作和数据简易的顺序从左到右排列,数据类型位于左边竖直一列,按照存储效率的顺序从上到下排列。表中的单元格表示每个控件类型与数据类型的兼容性。用此表按操作的简化和存储效率原则优化选择控件和数据类型。根据所需的数据类型选择合适的、能表示该数据的控件类型。从顶部左边开始,依次估计每个控件类型。如果数据元素是两个对立状态,则选择布尔控件。如果需要提供一列数字选择项,首先考虑配有数值的文本下拉列表或枚举框。优先选择满足操作要求的控件,然后从上往下探寻与其兼容的数据类型,直到找到能满足理想功能的数据类型。结果是控件和数据类型组合后均能提供最简便的操作和最大存储效率。这里先提供一个概览,读者可在实际使用中,以此表格为基础,参阅LabVIEW的详细帮助,熟悉表中所列的控件属性、数据类型和操作方法,逐步提高开发技能。

图3-2 LabVIEW控件和数据类型兼容图