1 回答
TA贡献1805条经验 获得超9个赞
在Labview中解析XML
在 LV 中解析 XML 有点棘手,但也不是那么困难。也许,你尝试一下?
此代码循环遍历所有通道,提取属性name
和virtual
,并从它们的子通道中RollingAvg
提取属性do_rolling_avg
。
也许,首先获取节点的所有属性/值的列表,然后处理生成的数组更方便:
现在,重要的是在最后关闭所有引用以避免内存泄漏,这里这样做是快速而肮脏的。
此外,如果未找到某些内容,搜索 VI 将抛出错误。(你的 Python 也会这样做)。如有必要,应添加一些错误处理。
如果你坚持使用Python
如今,可以选择直接从 LV 运行 Python。我不知道这一点,我的 LV 是 2017 年的。在那里,可以使用System Exec.vi
在命令行上运行任何命令,并将其输出读回 LV:
最后,Python 打印的内容将以字符串形式返回。我会使用 JSON,它可以轻松地将 dict 转换为 JSON:
import json
a=[]
a.append({'name':'CH_PH1', 'virtual':False, 'RollingAvgFrame':3.141})
a.append({'name':'CH_PH2', 'virtual':True, 'RollingAvgFrame':42.0})
print(json.dumps(a))
输出:
[{"name": "CH_PH1", "virtual": false, "RollingAvgFrame": 3.141},
{"name": "CH_PH2", "virtual": true, "RollingAvgFrame": 42.0}]
在LV中,根据JSON结构定义一个簇,并使用Unflatten from JSONVI填充它。集群元素的名称必须与 JSON 代码中的名称匹配。
然而,JSON 只知道简单的数据类型。没有办法传输时间或任何其他更复杂的数据类型,除非可以将其打包为更简单的东西,例如包含时间戳的字符串。
添加回答
举报