LabVIEW中VI Scripting 特定对象解析

该 LabVIEW 程序通过三条并行代码路径,借助 VI Scripting 功能,以特定方式解析程序框图对象,展示了不同方法在处理对象嵌套及特定范围对象时的差异。

  • 上方文字:三条并行代码路径展示了解析程序框图的不同方式。第一条路径使用 "All Objects []" 属性。需注意,此属性不会解析嵌套对象。第二条路径使用 "Traverse for GObjects VI",它能够解析嵌套对象。第三条路径同样使用 "Traverse for GObjects VI",但通过 "Other" 参数指定要解析的特定框图对象(在本示例中是一个 "For 循环")。在第三条代码路径中,仅返回指定 For 循环内的对象。

  • 程序框图:

    • 左上角 "Test - Using Traverse.vi" 是该 VI 的名称。

    • 第一条路径:获取 VI 的程序框图(通过 "VI Diagram" 和 "TopLevelDiagram" ),使用 "All Objects []" 属性获取对象,通过 "GObj"(获取对象类名 "ClassName" )连接到 "PARSE TRA"(推测是解析相关操作)。

    • 第二条路径:直接获取 "GObject" ,通过 "GObj"(获取对象类名 "ClassName" )连接到 "Traverse All"(推测是遍历所有对象相关操作)。

    • 第三条路径:获取 "ForLoop" ,将其连接到 "Traverse for GObjects VI" 的 "Other" 参数,通过 "GObj"(获取对象类名 "ClassName" )连接到 "Traverse For Loop Only"(推测是仅遍历 For 循环内对象相关操作)。

    • 下方文字:"Other" 的遍历目标仅会解析连接到 "Traverse for GObjects VI" 的 "Other Refnum"(其他引用句柄)。

程序解释
  1. 第一条路径:运用 "All Objects []" 属性获取程序框图对象。此方式是从顶层程序框图获取对象列表,其特定之处在于仅关注最外层对象,不会深入解析嵌套对象。例如在一个具有多层嵌套子 VI 和循环结构的复杂程序框图中,它仅能获取顶层的函数节点、子 VI 等,而子 VI 内部或循环结构内部的对象不会被涉及。适用于只需处理顶层对象,对内部嵌套结构无需求的场景。

  2. 第二条路径:采用 "Traverse for GObjects VI" ,其特定优势是能递归遍历程序框图,涵盖所有嵌套对象。在包含多层嵌套循环结构和子 VI 的程序框图中,无论是最外层还是最内层的节点、连线、结构等对象,都能被精准解析。适用于需要全面分析整个程序框图,不放过任何层级对象的情况。

  3. 第三条路径:同样基于 "Traverse for GObjects VI" ,但通过 "Other" 参数指定特定对象(本示例为 For 循环)。其特定功能是仅解析指定 For 循环内部的对象。在有多个循环结构和复杂节点的程序框图中,若仅想获取某特定 For 循环内的对象,这种方式就能精准实现,限定了遍历范围,只聚焦于指定对象内的元素。

优点
  • 特定需求适配性强:三种方式分别针对不同特定需求,提供了不同粒度的对象解析方案。若只需处理顶层结构,"All Objects []" 属性即可满足;要全面剖析整个程序框图,"Traverse for GObjects VI" 全遍历方式适用;而仅关注特定结构内对象时,带 "Other" 参数的 "Traverse for GObjects VI" 能精准操作。这种适配性使开发者在面对不同复杂程度和特定需求的程序框图时,都能高效获取所需对象信息。

  • 特定场景灵活性高:借助不同的属性和 VI 组合,可适应多种 LabVIEW 程序结构。无论是简单的单层程序框图,还是多层嵌套、包含大量子 VI 的复杂结构,都能依据特定场景选择合适的解析方法。方便开发者在程序开发、维护、调试等不同阶段,针对特定场景对程序框图对象进行操作和分析。

  • 便于理解与特定拓展:以并行代码路径展示不同方式,直观清晰,便于开发者理解不同方法的特定差异和适用场景。在此基础上,开发者可根据特定实际需求,进一步拓展功能,比如在获取特定对象后添加针对性的属性分析、修改操作等。

相关推荐
LabVIEW开发1 天前
VI Server 操控 LabVIEW 工程
labview知识·labview功能·labview程序
LabVIEW开发5 天前
LabVIEW动态调用VI
labview·labview知识·labview功能·labview程序
LabVIEW开发11 天前
LabVIEW Occurrence功能
labview·labview知识·labview功能·labview程序
LabVIEW开发13 天前
LabVIEW基于.NET 对象系统资源监控
labview·labview知识·labview功能
LabVIEW开发14 天前
LabVIEW浏览器ActiveX事件交互
labview·labview知识·labview功能·labview程序
LabVIEW开发15 天前
LabVIEW调用外部DLL
windows·labview·labview知识·labview功能·labview程序
LabVIEW开发18 天前
LabVIEW 波形图表横坐标显示当前日期
labview·labview功能·labview程序
LabVIEW开发19 天前
LabVIEW振动信号处理与分析功能
labview·labview知识·labview功能
LabVIEW开发21 天前
LabVIEW与FPGA超声探伤
fpga开发·labview·labview功能
LabVIEW开发23 天前
LabVIEW 网络流通信功能
labview知识·labview功能·labview程序