1 回答
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
在Labview中解析XML
在 LV 中解析 XML 有點(diǎn)棘手,但也不是那么困難。也許,你嘗試一下?
此代碼循環(huán)遍歷所有通道,提取屬性name和virtual,并從它們的子通道中RollingAvg提取屬性do_rolling_avg。

也許,首先獲取節(jié)點(diǎn)的所有屬性/值的列表,然后處理生成的數(shù)組更方便:

現(xiàn)在,重要的是在最后關(guān)閉所有引用以避免內(nèi)存泄漏,這里這樣做是快速而骯臟的。
此外,如果未找到某些內(nèi)容,搜索 VI 將拋出錯(cuò)誤。(你的 Python 也會(huì)這樣做)。如有必要,應(yīng)添加一些錯(cuò)誤處理。
如果你堅(jiān)持使用Python
如今,可以選擇直接從 LV 運(yùn)行 Python。我不知道這一點(diǎn),我的 LV 是 2017 年的。在那里,可以使用System Exec.vi在命令行上運(yùn)行任何命令,并將其輸出讀回 LV:

最后,Python 打印的內(nèi)容將以字符串形式返回。我會(huì)使用 JSON,它可以輕松地將 dict 轉(zhuǎn)換為 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中,根據(jù)JSON結(jié)構(gòu)定義一個(gè)簇,并使用Unflatten from JSONVI填充它。集群元素的名稱必須與 JSON 代碼中的名稱匹配。

然而,JSON 只知道簡單的數(shù)據(jù)類型。沒有辦法傳輸時(shí)間或任何其他更復(fù)雜的數(shù)據(jù)類型,除非可以將其打包為更簡單的東西,例如包含時(shí)間戳的字符串。
添加回答
舉報(bào)
