返回对由磁盘上文件路径、名称字符串或现有引用指定的VI、自定义控件或全局变量的引用。


icon

输入/输出

  • cvirn.png 类型说明符VI引用句柄(仅用于类型)

    类型说明符VI引用句柄(仅适用于自定义类型)确定VI引用的数据类型和连线板信息。LabVIEW忽略该输入端的实际值。

    默认状态下,函数返回通用VI引用。

    如果将该函数的VI引用输出使用在“通过引用调用”或“开始异步调用”节点,则必须连线严格类型VI引用至该输入端。

    如果将严格类型VI引用连接至该输入端,VI路径指定的接线板必须与该输入端匹配。

  • caprn.png 应用程序引用(本地)

    应用程序引用是对LabVIEW应用程序实例的引用。

    默认情况下,LabVIEW使用调用VI的应用程序实例。可通过打开应用程序引用函数获得其它应用程序实例的引用。如果将另一个应用程序实例的引用连接至应用程序引用输入,vi路径表示在运行应用程序实例的计算机的文件系统中的位置。
  • cpath.png 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崩溃。
  • ci32.png 选项

    选项决定了VI引用引用的VI特性,包括是否可以异步调用VI。默认值为0x0

    通过组合下列选项标签的子集创建选项

    选项标签说明信息
    0x01 记录修改-如果通过VI服务器已对VI进行了修改,要使VI标题旁出现星号(*),请使用该选项标签。只有在编辑模式下,LabVIEW才能记录修改。
    0x02 打开模板进行编辑-使用该选项标签打开原始.vit文件。如不选择该选项标签,LabVIEW将打开该模板VI的新实例。对实例的编辑不影响原有的.vit文件。该选项标签不会影响非模板文件。
    0x04 提示用户保存-满足下列条件时,使用该选项标签提示用户在VI引用关闭时保存更改:
    • 引用指向的VI或其子VI包含未保存的更改。
    • 该VI无其它打开的引用。
    • 引用指向的VI可以从内存中释放。VI在下列情况下可从内存中释放:无其它VI调用该VI;VI的前面板已关闭;VI不属于打开的项目库等。
    0x08

    准备重入运行-希望获得目标VI重入副本的引用而非目标VI本身的引用时,使用该选项标签。VI的重入副本允许用户打开多个同一VI的前面板,或并行运行同一VI的多个副本。对于目标VI的每个引用,LabVIEW都会单独创建目标VI的副本。此副本不是常规子VI调用所使用的共享副本池的一部分。

    如连线类型说明符VI引用句柄(仅用于类型)输入,LabVIEW将忽略该标签,因为如提供了类型说明符,则当目标VI为重入时,始终可获取重入副本。如果目标VI不支持重入,LabVIEW将返回错误"1096"。

    提示 配合运行VI方法使用该标签可并行执行多个重入副本。使用开始异步调用节点(非“运行VI”方法)异步运行目标VI。除了提供简洁的接口和更好的性能,“开始异步调用”节点可以通过对应的等待异步调用节点接收目标VI的输出。
    0x10 提示查找丢失的子VI-使用该选项标签提示用户允许LabVIEW搜索丢失的子VI。
    0x20 隐藏加载对话框-查找引用VI的丢失子VI时,阻止LabVIEW显示加载对话框。
    注: 该选项标签不影响LabVIEW提示用户查找缺失的VI。
    0x40 在重入VI上启用同步调用-如需要多次使用“引用节点调用”或“开始异步调用”节点以实现并行地运行可重入目标VI的多个副本。例如,在For循环中通过配置循环并行使用这些节点,请使用该选项标签。该选项标签启用并行执行,因为它授权各“通过引用调用”节点访问VI副本的数据空间。如不使用该选项标签,对同一目标VI的调用每次只执行一次,其他调用必须等待访问该数据空间。

    0x40选项标签仅在下列条件下有效:

    • 目标VI是可重入的且共享副本
    • 目标VI是可重入的,用户可包含0x80或0x100选项标签。
    注: 如果0x40选项标签对于目标VI或其他包含的选项标签是无效的,LabVIEW返回错误1591。
    0x80 准备调用并忽略输出-如果要通过“开始异步调用”节点异步地调用目标VI且忽略VI返回的时间和内容,请使用该选项标签。请勿设置该选项标签为0x08或0x100。
    注: 如果该选项标签用于远程VI的引用,LabVIEW将返回错误1578。
    0x100 准备调用并收集输出-如果要通过“等待异步调用”节点收集指向目标VI的异步调用结果,请使用该选项节点。如果使用了该选项标签,在每次以“开始异步调用”节点开始的调用中,必须包含“等待异步调用”节点,这样可确保LabVIEW不会在内存中一直保留任何已开始的调用。请勿将该选项标志与 0x08 或 0x80 一起使用。
    注: 如果该选项用于远程VI的引用,LabVIEW将返回错误1578。
  • cerrcodeclst.png 错误输入(无错误)

    错误输入表明该节点运行前发生的错误条件。该输入将提供标准错误输入功能。

  • cstr.png 密码("")

    密码是VI密码,该VI的引用将被打开。

    如果要编辑密码保护的目标VI,请将密码连接至该输入端。连线正确的密码时,函数返回VI的授权引用。如连接至该接线端的密码不正确,则该函数返回错误和无效的VI引用。如目标VI不受密码保护,LabVIEW将忽略该输入端。如果未将密码连接至该输入端且目标VI有密码保护,打开VI引用函数返回一个有效引用句柄,但不能使用该句柄编辑VI。
    注: 您还可以使用 VI 服务器引用 来获取经过验证的 VI 引用。
  • ivirn.png VI引用

    VI引用是与已请求VI关联的引用句柄。

    如函数不可用,则VI引用非法引用句柄
  • ierrcodeclst.png 错误输出

    错误输出包含错误信息。该输出提供标准错误输出功能。

  • “打开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才关闭该引用。

    注: 关闭使用0x80选项标签打开的引用不会终止被引用的VI。

    在独立应用程序中打开一个VI引用

    要动态地在开发计算机的独立程序中打开一个VI,VI路径应使用相对路径。

    其他信息

    范例

    请参考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