概述
在使用OpenOPC库开发一个opc client过程中,遇到一个需求,需要获取当前节点的所有叶子和所有分支,但是分支的叶子不需要获取,但是使用OpenOPC.list接口只能获取分支或者通过flat参数获取全部的叶子,都不符合需求,无奈只好list接口的实现进行研究,最后做了适当修改,达到了目的。此过程让自己对opc的相关接口也有了一些更深入的理解,在此稍作整理,包含对OpenOPC接口参数的理解和对OPC DA标准接口的理解。
接口说明
OpenOPC接口
- ilist(self, paths=‘*’, recursive=False, flat=False, include_type=False)
函数功能:获取指定paths下的子节点(分支或者叶子)。
参数说明:
paths: 层级列表,支持多节点。
recursive: 是否递归展开,如果设置为True,则获取子分支并且递归展开子分支,直至最底层的叶子节点;如果设置为False,则只获取下一层级的子分支。
flat: 是否扁平获取,也就是不包含层级结构。如果设置为True,会获取server下全部的叶子节点,不包含层级信息。这里的实现很奇怪,看代码,如果flat为True,会获取server全部的叶子节点,paths不起作用,因为我的测试环境叶子节点太多,使用flat模式需要极长的时间,所以我也没有继续研究