我想创建一个VI,它接受一个Integer,float,bool,string或enum作为输入节点(但只有一个节点),然后在我的VI中检测输入类型,这样我就可以使用数据以不同的方式。任何人都可以指出我正确的方向,我正在考虑变种,但不确定如何去做。
我希望我的VI基本上能够像使用模板类型的C ++函数或重载函数一样工作。
谢谢, 埃蒙
答案 0 :(得分:5)
其他一些选项:
答案 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中,但我在调色板中看不到它们。