打开VI引用函数
- 更新时间2025-07-30
- 阅读时长12分钟
返回对由磁盘上文件路径、名称字符串或现有引用指定的VI、自定义控件或全局变量的引用。

输入/输出
类型说明符VI引用句柄(仅用于类型)
—
类型说明符VI引用句柄(仅适用于自定义类型)确定VI引用的数据类型和连线板信息。LabVIEW忽略该输入端的实际值。 默认状态下,函数返回通用VI引用。 如果将该函数的VI引用输出使用在“通过引用调用”或“开始异步调用”节点,则必须连线严格类型VI引用至该输入端。 如果将严格类型VI引用连接至该输入端,VI路径指定的接线板必须与该输入端匹配。
应用程序引用(本地)
—
VI路径
—
vi path 接受要引用的 VI 的 路径 、包含要引用的 VI 名称的字符串或要引用的 VI 的 VI 引用。 如连线路径,LabVIEW可搜索内存中此前通过同一目标路径加载的VI。如连线名称字符串,字符串必须匹配终端内存中VI的完整分隔名称。如内存中无匹配的VI,LabVIEW可尝试通过磁盘上的文件加载VI。如果LabVIEW无法找到文件,将发生错误。 如为相关路径,在未保存调用方VI时,VI视该路径相对于调用方VI或应用程序。 注:
如通过应用程序引用指定远程应用程序实例,路径可在远程机器的文件系统中进行解释。如路径使用本地计算机的路径分隔符,在请求到达远程计算机后,可转换为远程计算机上的路径分隔符。 例如,要从基于 Windows 的应用程序中引用 Linux 上 My HD/LabVIEW Vis/foo.vi 中的 VI,请使用 My HD:\LabVIEW Vis\foo.vi路径。相反,要在运行 Windows 的计算机上通过 Linux 应用程序引用 C :\labview\foo.vi 中的 VI,则应连接路径 C/labview/foo.vi。 如果布线路径或同时布线 VI 和应用程序引用,LabVIEW 会等到用户界面空闲时才从磁盘加载 VI。如果在没有应用程序引用的情况下连接名称字符串或 VI 引用,LabVIEW 不需要等到用户界面处于空闲状态,因为它不会从磁盘加载 VI。LabVIEW只在内存中搜索指定名称的VI。 注: LabVIEW 不支持使用 "Open VI Reference(打开 VI 参考)"函数打开使用名称的克隆 VI 参考。使用该函数打开VI副本的引用将导致LabVIEW崩溃。
选项
—
选项决定了VI引用引用的VI特性,包括是否可以异步调用VI。默认值为0x0。 通过组合下列选项标签的子集创建选项。
错误输入(无错误)
—
错误输入表明该节点运行前发生的错误条件。该输入将提供标准错误输入功能。
密码("")
—
密码是VI密码,该VI的引用将被打开。 如果要编辑密码保护的目标VI,请将密码连接至该输入端。连线正确的密码时,函数返回VI的授权引用。如连接至该接线端的密码不正确,则该函数返回错误和无效的VI引用。如目标VI不受密码保护,LabVIEW将忽略该输入端。如果未将密码连接至该输入端且目标VI有密码保护,打开VI引用函数返回一个有效引用句柄,但不能使用该句柄编辑VI。注: 您还可以使用 VI 服务器引用 来获取经过验证的 VI 引用。
VI引用
—
VI引用是与已请求VI关联的引用句柄。 如函数不可用,则VI引用为非法引用句柄。
错误输出
—
错误输出包含错误信息。该输出提供标准错误输出功能。 |
“打开VI引用”函数为通过引用调用、开始异步调用和等待异步调用节点的动态调用准备了VI引用句柄。类型说明符VI引用句柄(仅用于类型)和选项输入端用于准备一个动态执行的引用。
打开动态VI调用的引用
要使用“通过引用调用”节点或“开始异步调用”节点动态调用指定VI,下列变量必须使用正确的数据:
- 类型说明符VI引用句柄(仅用于类型)-连线严格类型的VI引用至该输入。
- 选项-决定0x08、0x40、0x80和0x100选项标签是否适用于调用被引用VI的方法。
打开严格类型引用的准则
如果将严格类型VI引用接线至类型说明符VI引用句柄(仅用于类型),则VI路径指定的VI必须符合下列准则:
- VI不能断开。
- 只有VI可重入时才可作为顶层VI。
- VI的连线板必须与 类型说明符VI引用句柄(仅用于类型)的连线板相匹配。
打开可重入VI的引用
打开可重入VI的引用时,需注意下列细节:- 如果未指定0x40为选项之一,可重入目标VI的动态调用将串行执行。
- 如果使用0x40选项标签并行地执行可重入目标VI的多个实例,VI引用将指向目标VI,而非目标VI的副本。然而,“通过引用调用”节点和“开始异步调用”节点都调用目标VI的副本。因此,当调用VI引用指定的VI服务器属性或方法时,属性或方法都不影响这些节点实际调用的副本VI。
- 当比较同一个可重入VI的两个引用时,等于?函数返回TRUE。要确定多个引用是否指向同一个可重入VI的相同实例,可使用“强制类型转换”函数使引用转换为32位带符号整数。然后,使用“等于?”函数比较两个整数。
中止打开的引用
可在VI的前面板窗口中止所有打开的VI引用,也可使用中止VI方法中止VI引用。但是,根据打开引用的选项,异步执行的VI引用有下列重要的注意事项:
- 0x80-仅当前面板按下中止按钮,或在VI上调用了中止VI方法,调用但是不收集(call-and-forget)结果的VI会中止。否则,即使关闭了引用或中止了调用方VI,VI还是会一直运行到结束。
- 0x100-调用且收集结果VI (Call-and-collect)在下列条件下中止:
- 中止了打开调用且收集结果VI引用的VI。在该情况下,LabVIEW会中止VI的所有运行的实例。
- 手动中止了VI的特定实例。在该情况下,只有一个“等待异步调用节点”返回错误,表示被调的VI中止执行。其他“等待异步调用”节点继续等待。
- 在调用且收集结果的VI引用上调用中止VI方法。在该情况下,LabVIEW会中止VI的所有当前运行的实例。相应数量的“等待异步调用”节点将返回错误。
关闭打开的引用
通过该函数获得的引用使用结束后,通过关闭引用函数关闭该引用。正确地关闭引用使LabVIEW可释放用于维持该引用使用的相关资源,因此,有助于内存分配优化和性能提高。否则,直到打开该引用的VI停止运行时,LabVIEW才关闭该引用。
在独立应用程序中打开一个VI引用
要动态地在开发计算机的独立程序中打开一个VI,VI路径应使用相对路径。
其他信息
- 如果设置了执行:打开时运行、执行:加载时显示前面板、执行:调用时显示前面板属性或目标VI的VI属性对话框的对应选项,LabVIEW将忽略这些设置。
- 要打开一个新的 Facade VI 引用,请将 FacadeVI 类连接到 类型说明符 VI Refnum(仅适用于类型)。
范例
请参考LabVIEW附带的下列范例文件。
- labview\examples\Application Control\VI Server\Asynchronous Call By Reference\Asynchronous Call and Collect (Using Option 0x40).vi
- labview\examples\Application Control\VI Server\Asynchronous Call By Reference\Asynchronous Call and Forget.vi
- labview\examples\Application Control\VI Server\Asynchronous Call By Reference\Asynchronous Call and Collect.vi
类型说明符VI引用句柄(仅用于类型)
—
应用程序引用(本地)
—
VI路径
—
选项
—
错误输入(无错误)
—
密码("")
—
VI引用
—
错误输出
—