当通过VI 服务器来终止VI时,为什么会出现错误(错误号1000)?



主要软件:
主要软件版本: 7.1
主要软件修正版本:
次要软件: N/A

问题: 使用一个主VI来调用子VI,由于子VI的工作方式,停止它的唯一方法就是终止VI。当我打开该子VI的引用并使用调用节点终止VI,发生了以下 错误:

Error 1000 occurred at Open VI Reference
Possible Reason(s): LabVIEW: The VI is not in a state compatible with this operation.

为什么会出现这种情况?我该如何在主VI里终止子VI?

解答: 虽然你调用的子VI在运行,它并没有在它自己的执行状态下运行,这只是执行主VI的一部分。VI的执行取决于被调用子VI的执行,所以是无法终止一个子VI的执行的。虽然主VI的两部分(子VI和VI服务器终止指令)可能以并行的方式运行,但子VI并没有自己在执行;它是调用方的一部分。

想要从另一个VI里来终止子VI,它必须以VI的形式来运行而不是子VI的形式。因此,你需要通过VI服务器来运行子VI,使用 调用节点 运行VI 。同时,你还需要设置 Wait until done 选项为False 来去除该VI的数据依赖性。这样,你可以通过另一个VI来运行并终止这个VI。然而,这样做主要的问题是,增加了将数据传递到调用方的困难性。必须使用 Set Control ValueGet Control Value 来将数据传递到调用方。


相关链接:
KnowledgeBase 28IAHMDM: Common VI Server Errors
LabVIEW Help: Programmatically Controlling VIs
Developer Zone Example: Programmatically Opening and Running One VI from Another Using VI Server

附件:





报告日期: 10/15/2002
最近更新: 09/28/2008
文档编号: 2QEGGE8O