gpt4 book ai didi

Python:使用 pyvisa 或 pyserial 获取设备 "model"

转载 作者:太空宇宙 更新时间:2023-11-03 17:17:41 30 4
gpt4 key购买 nike

我编写了一个数据采集程序/脚本,可与我们合作开发的设备配合使用。问题是我只能从此设备读取数据。无法写入,因此无法使用串行“?IDN*”命令来知道这是什么设备。

定义该设备的唯一内容是其“型号”,可以在 Windows 控制面板的“设备和打印机”中看到。如下图所示:

enter image description here

设计该设备的人能够创建一个labview简单程序,通过NI-VISA通过名为“Intf Inst Name”的东西从设备中提取该名称,即“接口(interface)信息:接口(interface)描述”。

如果我获取此型号名称并将其与 pyvisa 设备名称进行比较,我将能够自动检测我们的设备是否存在,这是一件很重要的事情,以防发生 USB 断开连接。这是因为 VISA 通过一个名称打开设备,该名称在每台计算机上都可能不同,但这个名称“GPS DATA LOGGER”在任何地方、始终都是相同的。

我需要这个解决方案是跨平台的。这就是为什么我需要使用 pyvisa 或 pyserial。尽管任何跨平台替代方案都可以。

我的问题很简单:如何使用 pyvisa/pyserial 查找与设备型号对应的型号名称(在我的例子中为“GPS DATA LOGGER”)?

请询问您可能需要的任何其他信息。

<小时/>

更新

我了解到有一个名为“VI_ATTR_INTF_INST_NAME”的“属性”pyvisa 可以获取此名称,但我不知道如何使用它。有谁知道如何读取这些属性?

最佳答案

我找到了方法。不幸的是,它涉及打开计算机中的每个 VISA 设备。我编写了一个小型 pyvisa 函数,它将通过注释为您完成任务。该函数返回包含作为参数提及的模型名称/描述符的所有设备:

import pyvisa

def findInstrumentByDescriptor(descriptor):
devName = descriptor

rm = pyvisa.ResourceManager()
com_names=rm.list_resources()
devicesFound = []

#loop over all devices, open them, and check the descriptor
for com in range(len(com_names)):
try:
#try to open instrument, if failed, just skip to the next device
my_instrument=rm.open_resource(com_names[com])
except:
print("Failed to open " + com_names[com])
continue
try:
# VI_ATTR_INTF_INST_NAME is 3221160169, it contains the model name "GPS DATA LOGGER" (check pyvisa manual for other VISA attributes)
modelStr = my_instrument.get_visa_attribute(3221160169)

#search for the string you need inside the VISA attribute
if modelStr.find(devName) >= 0:
#if found, will be added to the array devicesFound
devicesFound.append(com_names[com])
my_instrument.close()
except:
#if exception is thrown here, then the device should be closed
my_instrument.close()

#return the list of devices that contain the VISA attribute required
return devicesFound



#here's the main call
print(findInstrumentByDescriptor("GPS DATA LOGGER"))

关于Python:使用 pyvisa 或 pyserial 获取设备 "model",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33499952/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com