必需: VI脚本

可使用VI脚本查看和编辑未知VI对象。和其他VI脚本操作一样,必须先打开目标VI的引用。但是,直到运行时才了解目标VI的内容,不能使用打开VI对象引用函数通过对象标签定位对象。相反,可使用遍历图形对象VI,识别同一个类下的所有对象。然后从返回的数组中查找要操作的对象。

使用的对象

VI脚本任务需用到下列对象:

操作步骤

准备:关于下列步骤的范例,见labview\examples\Application Control\VI Scripting\Finding and Modifying Objects目录下的Obtaining Unknown Object References VI。

  1. 获取包含要查看或编辑对象的目标VI的引用

    范例详细信息

    在该例中,打开VI引用函数提供对目标VI路径控件指定的VI的引用。用户只需指定一个VI路径就可打开一个目标VI。另外,脚本VI也可在一组子VI上进行上述操作。

  2. 确定要获取对象的类和位置。
    1. VI - 将该引用连接至遍历图形对象VI的VI引用句柄
    2. VI中的位置 - 在目标VI中,对象可以在前面板、程序框图、簇、结构中。必须在遍历图形对象VI的遍历目标输入中指定位置。

      范例详细信息

      在该例中,脚本VI需要操作控件接线端,属于程序框图对象。脚本VI指定遍历范围为BD

      注: 如要遍历的对象在簇或结构框图中,从遍历目标输入的可选枚举列表中选择Other。将簇或结构的引用连接至遍历图形对象VI的其他引用句柄接线端。
    3. 对象的类名 - 关于要操作的对象的类名,请参考常见VI对象的组成部分

      范例详细信息

      在该例中,脚本VI获取的是控件接线端引用,脚本VI使用控件接线端的类名。

  3. 将第2步获取的信息连接至遍历图形对象VI,用其获取目标对象的引用。
  4. 在返回的数组中找到要操作的对象。

    范例详细信息

    在该例中,脚本VI使用For循环引用数组中遍历各个元素。

  5. 使用转换为特定的类函数将返回的引用强制转换为特定的类。遍历图形对象VI返回图形对象引用数组,而不是类名下的成员的引用。不过,可使用转换为特定的类函数,将返回的引用安全强制转换为类名指定的类。转换为具体的类可使用更多的属性和方法。

    范例详细信息

    在该例中,返回的引用转换为控件接线端引用。这种强制转换是有意义的。因为图形对象类上标签:可见属性不可用,只需把控件接线端:标签:可见属性改为TRUE,即可实现控件接线端标签可见。上述强制转换不会出现错误,因为遍历图形对象VI已专门搜索过控件接线端对象。

  6. 将引用连接至属性节点调用节点,获取或设置引用对象的信息。

    范例详细信息

    在该例中,脚本VI使用属性节点设置各个控件接线端引用指向控件的“标签:可见”属性为TRUE

  7. 使用关闭引用函数,在引用使用结束时关闭各个对象引用。

说明和建议

  • 必要时检查引用的类 - 如连接父类的名称至遍历图形对象VI,返回的引用数组是父类下的子类,但是可能不是同一个子类的成员。例如,如使用遍历图形对象VI搜索“循环”类的所有对象,VI返回所有For循环和While循环的引用。可使用下列方法检查引用的类:
    • 使用转换为特定的类函数,将返回的引用强制转换为特定的类。如函数不返回错误,引用和特定的类一致。
    • 比较各个返回引用的类名属性和要匹配的类名,验证结果是否一致。
  • 关闭所有打开的引用 - 打开太多引用会影响VI的速度。关于更多性能详情,请参考关闭VI和对象引用

其他范例

关于使用“遍历查找图形对象”VI的范例,见labview\examples\Application Control\VI Scripting\Finding and Modifying Objects目录下的Using Traverse VI。