【问题标题】:LabView SubVI terminal with variable data type具有可变数据类型的 LabView SubVI 终端
【发布时间】:2016-04-05 14:44:00
【问题描述】:

我想创建一个具有可变数据类型的输出终端的SubVI。在SubVI 之外,终端将连接到Type Cast。我不想使用Variant 作为数据类型。

框图

这可能吗?如果可以,怎么做?

【问题讨论】:

  • 你可以尝试使用多态VI。
  • @Khachik:如果您需要在运行时选择数据类型,则无法使用多态 VI。
  • 问题中关于运行时的要求在哪里?
  • 在运行时更改数据类型并不是绝对必要的。不过,它会使代码更漂亮。在实际代码中,我使用的是“Variant to Data”而不是“Type Cast”,但它也需要一个类型。我将通过使用常量来解决这个问题。我认为甚至不可能在运行时更改类型转换的类型,因为我认为它是一个多态 VI。

标签: types type-conversion labview variant typecast-operator


【解决方案1】:

不,这是不可能的。只有一种数据类型能够承载所有数据类型。那是变体。我不知道你为什么不想使用它,但这是你唯一的选择。 Type Cast 仅适用于可转换类型(即数字和其他一些有限情况,例如将字符串转换为字节数组)。

【讨论】:

    【解决方案2】:

    您可以使用Flatten to String VI,而不是Unflatten from String VI(而不是Type Cast)。

    为什么要避免 Variant 数据类型?

    【讨论】:

    • 上面的例子被简化了。实际上我使用的是Variant。当数据从Variant 转换回多种不同的通用数据类型时,就会出现问题。我想将一种数据类型(应在运行时确定)传递给Variant To Data VI 的type 终端。
    • 我不知道你的情况的细节,所以我可能是错的,但我觉得类在这里可以帮助你很多。
    • 是的,很可能就是这样!在几乎所有其他语言中,我都会使用面向对象编程。我知道,这在 LabView 中也是可能的。我不知道为什么,但在 LabView 中我从不使用面向对象编程。
    • 如果您熟悉 OOP,那么 Labview OOP 应该(几乎)简单明了。这是一个起点:ni.com/white-paper/3573/en
    【解决方案3】:

    我一直在进行类型转换。如果我需要程序控制下的多个解决方案,我会使用案例选择器并创建所需的每种类型的实例。 case 选择器还为数据类型提供多种输出。

    【讨论】:

      猜你喜欢
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2019-04-25
      相关资源
      最近更新 更多