3

我想创建一个接受整数、浮点数、布尔值、字符串或枚举作为输入节点(但只有一个节点)的 VI,然后在我的 VI 中检测输入类型,以便我可以以不同方式使用数据. 谁能指出我正确的方向,我正在考虑变体,但不确定如何去做。

我希望我的 VI 的工作方式与使用模板类型的 C++ 函数或重载函数的工作方式基本相同。

谢谢,埃蒙

4

3 回答 3

5

一些额外的选项:

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

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

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

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

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

于 2012-07-26T21:13:05.777 回答
0

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

于 2012-07-27T15:20:32.473 回答