创建自适应VI
- 更新时间2025-08-27
- 阅读时长3分钟
创建自适应VI,可对任意可接收的数据类型执行相同的操作,而无需为每种数据类型保存单独的VI副本。如果同一个操作用于不同的数据类型,无需针对数据类型进行额外改动,可使用自适应VI。如同一个操作必须在多种数据类型上实现,或接线端在不同的数据类型上有区别,可使用多态VI。
可通过下列方式创建自适应VI:
- 如需新建空白的自适应VI,可选择文件»新建,并在新建对话框中选择自适应VI。
- 如需将现有VI转换为自适应VI,可将文件扩展名设置为.vim。如现有VI未配置为内嵌至其调用VI,自适应VI将出现断线。必须配置自适应VI为内嵌,方法是:选择文件>>VI属性>>执行,勾选在调用VI中内嵌子VI和预先分副本重入执行选项,并取消勾选允许调试和启用自动错误处理选项。 注: 仅可将标准VI转换为自适应VI。无法将多态VI、全局VI或XControl功能转换为自适应VI。
当在程序框图上放置自适应VI时,输入和输出显示默认数据类型。如将输入控件、显示控件或常量连线至输入或输出,该输入或输出将调整至已连线的数据类型。
例如,在排序二维数组自适应VI中,二维数组输入和排序后的二维数组输出接收除引用句柄外任意数据类型的二维数组,其默认数据类型为二维变体数组。如连线二维字符串数组至二维数组,二维数组和排序后的二维数组的数据类型同时变为二维字符串数组。但是,如连线一维数组至二维数组,由于该自适应VI未实现为接收一维数组,VI将出现断线。
可使用类型专用结构和检查类型VI和函数创建用于下列用途的专用的自适应VI:
- 在自适应VI中为指定数据类型自定义代码段
- 强制自适应VI仅接受部分数据类型
- 强制自适应VI拒绝特定数据类型
例如,二维数组排序自适应VI的索引输入可以是一个整数,也可以是一个整数数组。可使用类型专用结构来处理这两种不同的输入,使自适应VI可应付两种输入类型。索引输入强制转换有符号32位整数以外的整型为有符号32位整数。您只能使用检查是否为整型VI强制索引接受有符号32位整数。
因为自适应VI本质上是多态的,所以它们可接受任何不会导致语法错误的数据类型。NI建议您在自适应VI中允许强制转换,以获得更好的代码重用性。仅当应用程序满足下列条件之一时,需要限制自适应VI可接受的数据类型:
- 强制转换导致显著的性能负担。
- 指定的数据类型在应用程序的环境中无意义。