LabVIEW将子VI混淆在不同的路径中但具有相同的名称?

时间:2014-04-26 04:04:29

标签: labview

我正在使用其他人写的一些子VI,所以这是一个历史问题。

我遇到的问题是,如果两个不同的子VI不同,存储在不同的位置,但恰好具有相同的名称。

有时似乎LabVIEW会混淆其中两个并且链接从一个跳到另一个,因为两个子VI不同,这会产生错误。

所以我的问题是:这是真的吗? LabVIEW通过文件名而不是绝对文件路径调用子VI。或者我描述的是不真实的东西,可能是由其他问题引起的。

谢谢!

1 个答案:

答案 0 :(得分:5)

这里有两个不同的东西。第一个是LV记住放置某个东西的每个文件的位置,并且有三种方法可以存储该路径(假设我没有忘记任何路径):

  1. 逻辑。这些是像vi.lib这样的文件夹,其中基本文件夹由名称表示(因此路径存储为" | vilib | \ ... \ myVI.vi")。这允许您在转到其他LV版本时调用正确的文件。
  2. 相对。这就是LV正常保存路径的方式,因此如果VI A调用VI B并且它们位于同一文件夹中,则A中B的路径将存储为" .. \ B.vi"。
  3. 绝对。我相信这仅适用于存储在不同卷中的VI,但与第一个规则不匹配。
  4. 如果由于某种原因LV没有找到它应该存在的文件,它将占用已经在内存中的文件或尝试在其他地方搜索它,此时你得到一个搜索对话框。

    第二件事是,任何时候内存中只能有一个具有特定名称的VI。如果您加载了两个名称相同的VI,则会发生冲突并且必须解决它,正如您所见。这不是LV的混淆,只是每个调用VI引用另一个具有相同名称的VI和加载它们的顺序。从技术上讲,我认为LV本可以使用完整的路径来允许重复的名称,但我相信这个决定至少可以追溯到20年,所以现在它不会被改变,当你成功时肯定会出现问题考虑到现在您可以通过名称引用内存中的VI。它还有一些其他技术优点。

    如果你确实有需要具有相同名称的VI,那么你最想要做的就是命名它们。过去,这通常是通过使用前缀或后缀实际更改名称来完成的。这些天,您通常会将VI放在库中(例如.lvlib或.lvclass)。这不会修改文件名,但它确实成为其完全限定名称的一部分,这是决定冲突的因素,因此它允许您拥有多个具有相同名称的VI。在类的情况下,这实际上是一个要求,因为它是用于确定哪些VI将覆盖的机制。