- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个 PyVISA 程序,该程序与功率分析仪和其他两个设备对话。我可以使用以下方法成功查询分析器:
import pyvisa
my_instrument = pyvisa.ResourceManager().open_resource('USB0::0x0B21::0x0025::39314C383030313939::INSTR')
print(my_instrument.query(':NUMeric:VAL?'))
我想这样包装:
import pyvisa
class YOKO( pyvisa.resources.usb.USBInstrument ):
def __init__(self):
pyvisa.ResourceManager().open_resource('USB0::0x0B21::0x0025::39314C383030313939::INSTR')
我在一个单独的文件中实例化类,并调用相同的查询 - 但无济于事。我经历了一些语法变体,但我不断收到错误:
AttributeError: 'YOKO' object has no attribute 'visalib'
有人知道我做错了什么吗?如何包装 PyVISA 设备?
最佳答案
1) YOKO的__init__
的第一行调用USBInstrument的__init__
。这样做应该注意将 visalib
设置为其预期值。 (参见:Why aren't Python's superclass __init__ methods automatically invoked?)
2) 我不建议对 pyvisa 工具进行子类化。相反,我会将 pyvisa 仪器对象实例化为您自己的仪器基类的属性(即使用封装而不是继承)。当您建立自己的乐器类集合时,会发生三件事:
A) 你会发现你想要稍微改变 pyvisa 方法的行为;例如,您可能想要配置自己的每个协议(protocol)的最小超时。您可以通过简单地覆盖方法来实现这一点,但是您可能会破坏依赖于 pyvisa 仪器未改变行为的调用代码。
B) 你会想出你自己的方法/属性名称,这些名称不小心踩到了 pyvisa 仪器方法; pyvisa 有很多这样的东西,它们的名字漂亮、直观,容易引起冲突。
C) 当您进入诸如协作仪器集或实时数据流之类的事情时,您会希望仪器具有不同数量的轻量级行为。基本上,您最终会得到超越单纯仪器 I/O 的语义和业务逻辑,并且很自然地将这些逻辑放入每个仪器对象中。如果您将实际的 pyvisa 仪器对象保留为您自己的仪器类的一个属性(如果需要,可以保持完全未初始化),您将有更多的自由来添加这些语义和逻辑。
第 2 项是非常主观的,但它是基于我过去几次沿着完全相同的道路走下去的经验:D
关于python - 在类中包装 pyvisa 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31013641/
我正在尝试使用 Python 后端 rm=ResourceManager('@py') 设置 pyvisa。 当我启动 rm.list_resources() 我收到以下错误: libgpib: er
我正在尝试使用 Pyvisa 从我的 Keithly 2701 DMM 的一个 channel 中捕获数据。 我通过 temp = keithly.ask('SCPI COmmand') 获得静态一次
我在树莓派2上安装pyvisa-py pn时出现错误,就是 ImportError: cannot import name rname 在我运行命令之后 rm = visa.ResourceManag
我正在尝试将示波器文件从 Tektronix 传输到 PC。不幸的是,我不断收到超时错误。我的写作工作但在阅读原始格式时我被卡住了。这是我的代码: import visa import time sc
我正在PyCharm Community Edition 2016.1.4上运行带有pyvisa 1.8的Python 3.5.1。 下面列出了“ python -m Visa info”的结果。 尝
我对 python 和仪器控制还是新手,我面临着一些尚未找到答案的问题。我正在使用 PyVisa 通过 rs232 控制单色仪(Spectral Products dk240)。(Python 3.5
我正在使用 pyVISA 来控制 GPIB 网络中的一些仪器。当我创建资源管理器时,我的 GPIB 网络中的所有仪器都进入远程模式,因此前面板显示被锁定并且不更新。当我关闭资源管理器时,仪器仍处于远程
我尝试使用 python 3 和 pyvisa 1.8 与 GPIB 设备进行通信。 但是如何区分不同类型的异常。 例如: try: visa.ResourceManager().open_res
我刚刚安装了 PyVISA使用 pip import visa rs = visa.ResourceManager() 我收到这个错误 Traceback (most recent call last
我正在开发一个 PyVISA 程序,该程序与功率分析仪和其他两个设备对话。我可以使用以下方法成功查询分析器: import pyvisa my_instrument = pyvisa.Resource
我正在使用是德科技波形发生器和 pyVisa,我注意到如果我的代码没有成功完成并结束,我需要对设备执行硬重置以再次尝试我的代码。 我曾尝试在 __del__ 方法下重置设备,以便设备处于已知状态,但似
二进制库:未找到错误。 我在 Windows 10 上从 Git Bash 运行并使用 pip 安装软件包。 我从他们的网站安装了 Ni-VISA 以及 pyVISA 和 pyVISA-py 软件包。
我想通过 GPIB 同时触发多个测量设备。有一个可与 LabVIEW 配合使用的 GPIB 函数“GET”,我想将其与 pyVISA 一起使用。 我可以使用 pyVISA 发送这个全局 GET 命令吗
我正在尝试使用 PyVISA 控制 GPIB 上的仪器(非常古老的霍尔测量设备)。我知道它可以与labview一起使用,在那里我发现了哪些地址执行什么操作以及一些带有跟踪器的基本命令,但没有什么乐趣。
我正在尝试通过 Python 与一个非常古老的仪器(CCD 相机)进行通信。仪器制造商于 1999 年出版的 GPIB 编程手册仅提供了基本命令列表。它还描述了 GPIB 通信的一些标准程序。 我之前
我想从外部控制我的 Keithley 6485 皮安表,方法是通过 RS232toUSB 将它连接到我的 Linux PC (CentOS 6.9) 并使用 pyvisa 在 python(2.7.1
所以我已经像这样初始化了 GPIB 仪器: import pyvisa rm = pyvisa.ResourceManager() kk = rm.open_resource('GPIB0::1::I
我正在尝试使用 Python 中的 pyVisa 通过以太网连接连接到温度室。该设备只允许通过端口 2049 进行连接。我可以通过 PuTTY 连接到它。或 HyperTerminal ,但是当我在
我正在尝试通过 Raspberry Pi 与 LeCroy WaveRunner 640Zi 示波器通信,它们通过 USB 电缆连接。我已经在 Windows 下做到了,但现在我无法让它在 Linux
我编写了一个数据采集程序/脚本,可与我们合作开发的设备配合使用。问题是我只能从此设备读取数据。无法写入,因此无法使用串行“?IDN*”命令来知道这是什么设备。 定义该设备的唯一内容是其“型号”,可以在
我是一名优秀的程序员,十分优秀!