LabVIEW虚拟仪器项目开发与实践
上QQ阅读APP看书,第一时间看更新

3.5 枚举类型与下拉列表

枚举类型(Enum)和下拉列表(Ring)是基本数据类型的特例。在枚举类型的控件中,开发人员可将所有可能的选项与整型数据关联。一旦为枚举类型控件添加了所有选项,则该控件的类型可以被看作是一个整数类型(其实是整数类型的子集)的控件来操作。

下拉列表是可将数值与字符串或图片建立关联的数值对象。下拉列表控件以下拉菜单的形式出现,用户可在循环浏览的过程中进行选择。下拉列表和图片列表框控件从功能上来看与枚举框类似,也可以将各种选项映射到数值,但是使用枚举框时,数值由系统自动指定,而下拉列表和图片列表框控件中选项对应的数值可由用户指定。枚举类型控件与下拉列表控件的不同之处如下。

(1)枚举类型控件的数据类型包括控件中所有数值及其相关字符串的信息,下拉列表控件仅仅是数值型控件。

(2)枚举类型控件的数值表示法有8位、16位和32位无符号整型,下拉列表控件可有其他表示法。

(3)用户不能在枚举类型控件中输入未定义数值,也不能给每个项分配特定数值。如需要使用上述功能,应使用下拉列表控件。

(4)只有在编辑状态才能编辑枚举型控件,可在运行时通过属性节点编辑下拉列表控件。

(5)将枚举类型控件连接至条件结构的选择器接线端时,LabVIEW将控件中的字符串与分支条件作比较,而不是比较控件的数值。在条件结构中使用下拉列表控件时,LabVIEW将控件项的数值与分支条件作比较。

(6)将枚举类型控件连接至条件结构的选择器接线端时,可右击结构并选择为每个值添加分支,为控件中的每项创建一个条件分支。如连接一个下拉列表控件至条件结构的选择器接线端,必须手动输入各分支。

其中(5)、(6)为用户使用枚举控件保存各种命令提供了便捷。例如,可以将一些测试命令保存在枚举类型控件中,然后将其链接至分支结构,就可构成功能模块选择器,如图3-17所示。若再进一步将枚举类型通过类型定义将“严格类型定义”封装为组件,就能确保对枚举类型控件更新一次,可同步至所有程序。这种特性为用户开发大型程序的消息或命令选择工具提供了方便。

图3-17 使用枚举类型实现模块选择器

此外,枚举类型控件还有以下几个特别之处。

(1)所有算术运算函数(除递增和递减函数外)都将枚举控件当作无符号整数。

(2)递增函数将最后一个枚举值变为第一个枚举值,递减函数将第一个枚举值变为最后一个枚举值。

(3)将有符号整型强制转换为枚举型时,负数将被转换为第一个枚举值。

(4)超出值域的正数值将被转换成最后一个枚举值,超出值域的无符号整数总是被转换成最后一个枚举值。

(5)如果将一个浮点值连接到一个枚举显示控件,LabVIEW将把该浮点值强制转换为最接近的数值,在枚举显示控件中显示。LabVIEW也以上述同样方法处理超出值域的值。

(6)如果将枚举类型控件与任何数值相连,LabVIEW会将该枚举值强制转换为数值。

(7)如需将枚举输入控件与枚举显示控件连接,显示控件和输入控件中的项必须相互匹配。但是,显示控件的项可以多于输入控件的项。

这些特性使得枚举类型的数据在大型模块化的程序设计中扮演重要角色,后续章节将讲述这些功能在实际中的应用。