我正在使用其他人写的一些子VI,所以这是一个历史问题.
我遇到的问题是,如果两个不同的子VI不同,存储在不同的位置,但恰好具有相同的名称.
似乎有时LabVIEW会混淆它们中的两个并且链接从一个跳到另一个,因为两个子VI是不同的,这会产生错误.
所以我的问题是:这是真的吗?LabVIEW通过文件名而不是绝对文件路径调用子VI.或者我描述的是不真实的东西,可能是由其他问题引起的.
谢谢!
这里有两个不同的东西.第一个是LV记住放置某个东西的每个文件的位置,并且有三种方法可以存储该路径(假设我没有忘记任何):
如果由于某种原因LV没有找到它应该存在的文件,它将占用已经在内存中的文件或尝试在其他地方搜索它,此时你会得到一个搜索对话框.
第二件事是,任何时候内存中只能有一个具有特定名称的VI.如果您加载两个具有相同名称的VI,您将遇到冲突并且必须解决它,如您所见.这不是LV的混淆,只是每个调用VI引用另一个具有相同名称的VI和加载它们的顺序.从技术上讲,我认为LV本来可以使用完整的路径来允许重复的名称,但我相信这个决定至少可以追溯到20年,所以它现在不会改变,当你考虑到它时肯定会有问题.现在你可以通过名字引用内存中的VI.它还有一些其他技术优点.
如果你确实有需要具有相同名称的VI,那么你最想要做的就是命名它们.过去,这通常是通过使用前缀或后缀实际更改名称来完成的.这些天,您通常会将VI放在库中(例如.lvlib或.lvclass).这不会修改文件名,但它确实成为其完全限定名称的一部分,这是决定冲突的因素,因此它允许您拥有多个具有相同名称的VI.在类的情况下,这实际上是一个要求,因为这是用于确定哪些VI将覆盖的机制.