1 回答

TA貢獻1805條經(jīng)驗 獲得超9個贊
在Labview中解析XML
在 LV 中解析 XML 有點棘手,但也不是那么困難。也許,你嘗試一下?
此代碼循環(huán)遍歷所有通道,提取屬性name
和virtual
,并從它們的子通道中RollingAvg
提取屬性do_rolling_avg
。
也許,首先獲取節(jié)點的所有屬性/值的列表,然后處理生成的數(shù)組更方便:
現(xiàn)在,重要的是在最后關(guān)閉所有引用以避免內(nèi)存泄漏,這里這樣做是快速而骯臟的。
此外,如果未找到某些內(nèi)容,搜索 VI 將拋出錯誤。(你的 Python 也會這樣做)。如有必要,應(yīng)添加一些錯誤處理。
如果你堅持使用Python
如今,可以選擇直接從 LV 運行 Python。我不知道這一點,我的 LV 是 2017 年的。在那里,可以使用System Exec.vi
在命令行上運行任何命令,并將其輸出讀回 LV:
最后,Python 打印的內(nèi)容將以字符串形式返回。我會使用 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)定義一個簇,并使用Unflatten from JSONVI填充它。集群元素的名稱必須與 JSON 代碼中的名稱匹配。
然而,JSON 只知道簡單的數(shù)據(jù)類型。沒有辦法傳輸時間或任何其他更復(fù)雜的數(shù)據(jù)類型,除非可以將其打包為更簡單的東西,例如包含時間戳的字符串。
添加回答
舉報