允许vi节点接受任何输入类型

时间:2012-07-26 17:22:45

标签: templates labview variant

我想创建一个VI,它接受一个I​​nteger,float,bool,string或enum作为输入节点(但只有一个节点),然后在我的VI中检测输入类型,这样我就可以使用数据以不同的方式。任何人都可以指出我正确的方向,我正在考虑变种,但不确定如何去做。

我希望我的VI基本上能够像使用模板类型的C ++函数或重载函数一样工作。

谢谢, 埃蒙

3 个答案:

答案 0 :(得分:5)

其他一些选项:

  1. 应该有一些运输VI告诉您变体中的数据类型是什么。这应该简化之前的建议,因为您只需从案例结构开始并在每个案例中转换为一种类型。 VI应该在vi.lib中,我相信一个名为VariantDataType的文件夹,或者可能在Utility文件夹中。
  2. 创建一个多态VI - 它基本上是一组VI(每种数据类型一个),它们使用poly VI连接。将其放入图表中后,LV会根据您使用的电线类型自动选择正确的VI。这样做的最大优点是代码简单明了。

答案 1 :(得分:2)

您可以使用变体。 LabVIEW变体允许任何数据类型作为输入。要对变体执行任何有用的操作,您需要使用“Variant to Data”并将变量转换为可用的数据类型。

现在,完成您正在做的最简单的方法是简单地遍历您想要使用的各种数据类型,并为所有数据类型调用“Variant to Data”并检查错误。只有正确的数据类型才会运行而不会产生错误。

还有其他方法可以动态转换变体,但它们要复杂得多(使用更多数据编码变体或手动编写解析器)。

LabVIEW没有很好的模板或重载功能(你可以使用重载但它只适用于LabVIEW对象,大多数LabVIEW数据类型不是对象)。

答案 2 :(得分:0)

Polimorphic vi听起来是一个很好的解决方案,但在这种情况下,您需要将数据连接到vi,以便编译器知道在运行之前预期的数据类型。它不适用于在运行时向vi发送不同数据类型的情况。扫描变体将起作用,或者您可以创建具有数据类型描述和变体数据的字符串/枚举的集群,然后接收器vi将知道数据类型。 Yair,非常有趣,这是我第一次听到检查变体中的数据类型,这些vis在vi.lib \ Utility \ VariantDataType中,但我在调色板中看不到它们。