多态VI可适用不同的数据类型。多态VI是具有相同模式连线板的子VI的集合。集合中的每个VI都是多态VI的一个实例,每个实例都有至少一个输入或输出接线端接收的数据类型与其他实例不同。

例如,读取键VI就是一个多态VI。其默认值接线端可以接收的数据类型有布尔、双精度浮点数、32位有符号整型、路径、字符串或32位无符号整型。

对于大多数多态VI,使用哪个实例将由连接到VI输入端的数据类型决定。如果多态VI中没有任何实例与其连接的数据类型兼容,则会出现断线。如连接到多态VI输入端的数据类型没有确定使用哪个实例,则必须手动选择实例。如在多态VI中手动选择某个实例,该VI将不再是多态VI,因为它将只接收和返回所选实例的数据类型。

如需手动选择实例,右键单击多态VI,在快捷菜单中选择选择类型,然后选择所需实例。同时也可使用操作工具单击多态VI选择器,然后从快捷菜单中选择实例,如下图所示。

右键单击程序框图上的多态VI,从快捷菜单中选择显示项»多态VI选择器,显示多态VI选择器。如需使多态VI重新接收所有可处理的数据类型,可右键单击多态VI并从快捷菜单中选择选择类型»自动,或用操作工具单击多态VI选择器并从快捷菜单中选择自动

需要对不同数据类型执行相同的操作,或必须在不同的数据类型之间实现不同的操作时,可创建多态VI。如果要对不同数据类型以相似方式实现操作而无需针对特定数据类型进行大量自定义,则应创建自适应VI

例如,如需对单精度浮点数、数值数组或波形执行同样的数学运算,需要创建三个独立的VI:数值运算、数组运算和波形运算。当需要执行该操作时,根据不同的输入数据类型选择其中的一个VI放置在程序框图上。

创建和使用一个多态VI代替手动选择VI。

下列多态Compute VI包含上述三个VI实例,如下图所示。

1 运算
2 数字运算
3 数组运算
4 波形运算

根据程序框图上连接至Compute子VI的数据类型,Compute VI以静态的方式链接相应的VI实例,如下图所示。

1 运算
2 数字运算
3 数组运算
4 波形运算

与绝大多数VI不同,多态VI没有程序框图或前面板。

创建多态VI时需考虑以下问题:

  • 多态VI中所包含的所有VI必须具有相同的连线板模式,因为多态VI的连线板与创建多态VI所使用的VI的连线板是一致的。
  • VI的连线板的输入和输出接线端必须是相对应的。例如,如果某VI的接线端是输入,则其他VI的这个位置的接线端也必须是输入或者不使用该接线端。
  • VI的连线板的接线端个数可以不尽相同。
  • 多态VI中的VI不必有相同数量的子VI和函数。
  • 多态VI不能用于其他多态VI中。
  • 不可在多态VI中包含自适应VI (.vim)。

如果希望由连接到多态VI输入端的数据类型来决定使用哪个实例,而又不希望让用户知道该VI为多态VI,在创建多态VI时注意以下几点:

  • 隐藏多态VI选择器,因为用户无需手动选择实例。
  • 创建多态VI图标,当光标移至多态VI上时,即时帮助窗口不会显示每个实例的图标。
  • 为多态VI创建图标,当光标移至多态VI上时,即时帮助窗口不会显示每个实例的图标。包括对多态VI的说明,无需说明调用的实例。

在程序框图上放置多态VI时,LabVIEW可在内存中加载该多态VI。如通过多态VI窗口修改多态VI,且关闭窗口时不保存改动,内存中仍将保留所做的改动。如关闭VI再重新打开,对多态VI所做的修改将丢失。

当为一个含有多态子VI的VI编写说明信息时,该多态VI和它的实例将会同时出现在说明信息中的子VI部分。

相关信息

创建多态VI

在自适应VI和多态VI间进行选择