第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用Python將XML作為任務(wù)/集群讀取到LabVIEW以配置DAQ

使用Python將XML作為任務(wù)/集群讀取到LabVIEW以配置DAQ

一只名叫tom的貓 2024-01-04 17:14:53
我正在嘗試加載一個(gè) XML 文件,該文件將用于在 LabVIEW 中配置我的 DAQ。因此,當(dāng)我查看選項(xiàng)時(shí),我有:我的 XML 通道配置是動(dòng)態(tài)的 - 這意味著一個(gè) XML 可能有 3 個(gè)通道,另一個(gè) XML 可能有 >100 個(gè)通道。對我來說,用 Python 解析 xml 并將數(shù)據(jù)作為結(jié)構(gòu)/任務(wù)傳遞給 LabVIEW 會(huì)更容易。例如對于 XML 通道<Channels>        <Channel name="CH_PH1" enable="True" visible="False" virtual="False" units="A" physical_channel="PXI1Slot2/ai0" b_factor="0" m_factor="1033.221069" measurement_type="VOLTAGE" type="D" max_value="0.1" min_value="-0.1">          <RollingAvg do_rolling_avg="False" rolling_avg_frame_sec="0" />        </Channel>        <Channel name="CH_PH2" enable="True" visible="False" virtual="False" units="A" physical_channel="PXI1Slot2/ai1" b_factor="0" m_factor="1073.772766" measurement_type="VOLTAGE" type="D" max_value="0.1" min_value="-0.1">          <RollingAvg do_rolling_avg="False" rolling_avg_frame_sec="0" />        </Channel>        <Channel name="P_CH" enable="True" visible="False" virtual="True" units="V" formula="CH_PH1*CH_PH2" doTotalEnergy="False">          <RollingAvg do_rolling_avg="False" rolling_avg_frame_sec="0" />        </Channel>        <Channel name="P_PH_Total" enable="True" visible="False" virtual="True" units="V" formula="CH_PH1+CH_PH2" doTotalEnergy="False">          <RollingAvg do_rolling_avg="False" rolling_avg_frame_sec="0" />        </Channel></Channels>我的 Python 代碼用于解析 xml:def xml():    import xml.etree.ElementTree as ET    tree = ET.parse(r'C:\Users\LAB_PTG\Desktop\Cosmo_v0.93.6\nidaq.xml')    root = tree.getroot()    P={}    C={}    for Channel in root.iter('Channel'):        z=(Channel.attrib)        if z['virtual']=='False':            P.update({z['name']:(z['physical_channel'],z['enable'],z['m_factor'],z['max_value'])})        else:            C.update({z['name']:(z['formula'])})    print(P,C)需要幫助:如何在LabVIEW中執(zhí)行代碼?如何在LabVIEW中處理DICT?或者有更好的解決方案來傳遞數(shù)據(jù)嗎?使用 paras 數(shù)據(jù)動(dòng)態(tài)配置 DAQmx 通道我沒有設(shè)法在 LabVIEW 中創(chuàng)建 xml 解析器,因?yàn)樗鼜?qiáng)制執(zhí)行更多硬編碼并具有固定的限制。我的目標(biāo)是 LV DAQmx 繼續(xù)采樣示例,并用解析的 xml 替換配置。
查看完整描述

1 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

在Labview中解析XML

在 LV 中解析 XML 有點(diǎn)棘手,但也不是那么困難。也許,你嘗試一下?

此代碼循環(huán)遍歷所有通道,提取屬性namevirtual,并從它們的子通道中RollingAvg提取屬性do_rolling_avg。

https://img1.sycdn.imooc.com/6596773f0001fdfe07880465.jpg

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

https://img1.sycdn.imooc.com/6596774d0001c3d303320113.jpg

現(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:

https://img1.sycdn.imooc.com/6596775d000143e902820149.jpg

最后,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 代碼中的名稱匹配。

https://img1.sycdn.imooc.com/6596776e00016ad805310250.jpg

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



查看完整回答
反對 回復(fù) 2024-01-04
  • 1 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)