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 只知道簡單的數據類型。沒有辦法傳輸時間或任何其他更復雜的數據類型,除非可以將其打包為更簡單的東西,例如包含時間戳的字符串。
添加回答
舉報