前言
作为一个刚刚开始接触硬件的萌新,所以希望能够通过自己的踩坑记录,让后来者能够减少踩坑的次数。有讲的不对的,或者有其他建议的,希望大佬们不吝赐教。
快速开始
安装
安装keysight I/O suite。
pyvisa依赖I/O库来跟硬件设备进行通信,所以我们需要一个visa库来进行命令的转发
1.安装链接:https://www.keysight.com.cn/cn/zh/lib/software-detail/computer-software/io-libraries-suite-downloads-2175637.html。 2.只需要安装IOLS即可,另外一个驱动提供了其他的功能,不在本次的讨论范围。(关于安装的话,没有特别需要注意的,安装的位置默认是在/opt/keysight下)
安装pyvisa
因为在linux上,所以为了不影响其他用户,这里使用-U进行非全局安装。
pip install -U pyvisa
Demo
获取已连接设备
import pyvisa as visa
rm= visa.ResourceManager()
list_instr = rm.list_rrsources()
print(list_instr)
这里有一个坑,就是在rm= visa.ResourceManager() ,这里如果不传入参数,pyvisa会自行寻找存在的visa库,进行连接,但是我自己在安装完成之后,环境变量没有自动设置,所以就会报错。报错内容是:ValueError: No class registered for InterfaceType.gpib, INSTR 。 这时候就需要手动去指定我们需要使用的visa库,这里安装的keysight visa库的路径默认是/opt/keysight/iolibs/libktvisa32.so :
-
第一种办法是在rm= visa.ResourceManager(visa_path) 在创建rm 对象的时候手动传入 rm= visa.ResourceManager('/opt/keysight/iolibs/libktvisa32.so')
-
第二种就是设置环境变量,因为pyvisa在扫描的时候,实际上会首先扫描PYVISA_LIBRARY 这个环境变量是否存在,有的话,就会使用这个环境变量指定的visa库进行后续工作。 export PYVISA_LIBRARY = /opt/keysight/iolibs/libktvisa32.so
最后我这边的结果如图所示:
连接在上一步查询到的设备
fgen = rm.open_resource('GPIB0::1::INSTR')
print(fgen.query('*IDN?'))
补充
如果没有真实设备的话,实际上可以安装pyvisa-sim,这个是跟pyvisa同一个团队开发的提供simulator功能的python库。
自此,一个简单的Demo就完成了。 感谢观看。
|