我正在尝试加载一个 XML 文件,该文件将用于在 LabVIEW 中配置我的 DAQ。
因此,当我查看选项时,我有:
我的 XML 通道配置是动态的 - 这意味着一个 XML 可能有 3 个通道,另一个 XML 可能有 >100 个通道。
对我来说,用 Python 解析 xml 并将数据作为结构/任务传递给 LabVIEW 会更容易。
例如对于 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中执行代码?
如何在LabVIEW中处理DICT?或者有更好的解决方案来传递数据吗?
使用 paras 数据动态配置 DAQmx 通道
我没有设法在 LabVIEW 中创建 xml 解析器,因为它强制执行更多硬编码并具有固定的限制。
我的目标是 LV DAQmx 继续采样示例,并用解析的 xml 替换配置。
Cats萌萌
相关分类