gpt4 book ai didi

python - 如何设置 pyvisa 异常处理程序?

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:08 29 4
gpt4 key购买 nike

我尝试使用 python 3 和 pyvisa 1.8 与 GPIB 设备进行通信。

但是如何区分不同类型的异常。

例如:

try:
visa.ResourceManager().open_resources('COM1')
exception visa.VisaIOError:
<some code>

当打开失败时,它会生成一个通用异常 VisaIOError,但我怎么知道,是端口繁忙还是端口不存在还是其他?

喜欢:

try:
visa.ResourceManager().open_resources('COM1')
exception <1>:
# device busy
exception <2>:
# device does not exist
exception ...

我应该在位置 <1><2> 等处正确捕获不同类型的异常?

谢谢

最佳答案

如果您以某种方式向 Visa 提供错误数据,Visa 也会引发 ValueErrors 和 AttributeError。我认为它会引发 IOError,尽管我从未见过这种情况。

但是,是的,它主要引发 VisaIOError。

您可以做一些事情来获取有关异常的更多信息:

_rm = visa.ResourceManager()
try:
_rm.open_resources('COM1')
exception visa.VisaIOError as e:
print(e.args)
print(_rm.last_status)
print(_rm.visalib.last_status)

您可以将这些状态代码与 visa.constants.StatusCode 中的各种常量进行比较

if _rm.last_status == visa.constants.StatusCode.error_resource_busy:
print("The port is busy!")

last_status 和 visalib.last_status 有时会给出相同的状态代码 - 但有时它们不会,因此您可能应该同时检查它们。

请注意,我实例化了 ResourceManager。你不必这样做,但有些事情你可以用实例做,而你不能用类做,另外,如果你给它一个简短的名字,它会减少输入。

关于python - 如何设置 pyvisa 异常处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041142/

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