2024-07-02
GR5526 GUI专题(4) - Lvgl字体的位图数组合并转换为bin文件的说明
写技术文章
精选推荐
无敌浩克
PyVISA 是一个Python 包,使您能够独立于接口(例如GPIB、RS232、USB、以太网)控制各种测量设备。
详细的PyVISA介绍请参考:https://pyvisa.readthedocs.io/en/latest/index.html
总体概述
测量仪器的编程可能是痛苦的。有许多不同的协议,通过许多不同的接口和总线系统(例如 GPIB、RS232、USB、以太网)发送。对于您想要使用的每种编程语言,您必须找到支持您的设备及其总线系统的库。
为了缓解这种情况,虚拟仪器软件架构(VISA)规范在 90 年代中期被定义。VISA 是一种用于对包含 GPIB、VXI、PXI、串行、以太网和/或 USB 接口的仪器系统进行配置、编程和故障排除的标准。
NI-VISA用户手册请参考链接: https://www.ni.com/docs/zh-CN/bundle/ni-visa/page/user-manual-welcome.html
安装
PyVISA 是 VISA 库的前端。它在 Python 3.6+ 上运行。
您可以使用pip安装它:
$ pip install -U pyvisa
后端
为了让 PyVISA 工作,您需要有一个合适的后端。PyVISA 包含一个封装National Instruments 的 VISA库的后端。但是,您需要自己下载并安装该库(请参阅NI-VISA安装)。不同供应商有多种 VISA 实现。PyVISA 针对National Instruments 的 VISA和 Keysight IO Library Suite进行了测试,这两个套件都可以免费下载(您不需要开发环境,只需要驱动程序库)。
配置后端
目前有两种可用的后端:一种是 pyvisa 中包含的后端,它使用 IVI 库(包括 NI-VISA、Keysight VISA、R&S VISA、tekVISA 等),另一种是 pyvisa-py 提供的后端,这是一个纯 python 实现VISA 库。如果未指定后端,并且已安装IVI 库,则 pyvisa 将使用 IVI 后端。如果失败,它会使用 pyvisa-py 后端。
您还可以通过将参数传递给 ResourceManager 来选择所需的后端,如 pyvisa-py 所示:
pyvisa.ResourceManager('@py')
与您的仪器通信
我们以最为通用的‘NI-VISA’库来介绍如何与您的仪器通信(请参阅NI-VISA安装)。
1,1,运行‘NI-MAX’,会自动显示与您的电脑直接连接的可用VISA资源,如下图显示连接了UART口通用设备,USB设备和网络设备信息。
2,2,选择需要测试连接的设备,选择‘打开VISA测试面板’
点击‘Input/Output’,通过‘Basic I/O’发送标准SCPI指令‘*IDN?’询问仪器状态,若仪器正常成功连接,会回复相关信息,比如下图Agilent 33500B系列信号发生器回复如下:‘Agilent\sTechnologies,33521B,MY52700860,2.09-1.19-2.00-52-00’
3, 3,若需要连接本地或者远程网络设备,可以手动添加网络设备
点击‘添加网络设备’之后选择‘Manual Entry of LAB Instrument’,再点击‘下一步’
输入需要连接的仪器IP地址,注意若是本地网络设备,需要将您电脑的IP网段设置和仪器一致。然后点击‘完成’
如下是成功连接的CMW网络设备,可以选择‘打开VISA测试面板’测试与仪器的连接
如下成功连接的CMW仪器的回复信息:‘Rohde&Schwarz,CMW,1201.0002k75/102630,3.8.13’
在Python环境中查看VISA资源
依据之前‘NI-MAX’管理的VISA资源,可以在Python环境中查看是否能成功链接。
import pyvisa
rm = pyvisa.ResourceManager()
rm_address = rm.list_resources()
print(rm_address, type(rm_address))
在控制台查看print打印信息如下:
('USB0::0x0957::0x2B07::MY52700860::INSTR', 'TCPIP0::10.18.8.14::inst0::INSTR', 'TCPIP0::169.254.219.185::inst0::INSTR', 'TCPIP0::169.254.5.21::INSTR', 'TCPIP0::169.254.224.9::inst0::INSTR', 'ASRL12::INSTR', 'ASRL17::INSTR', 'ASRL80::INSTR') <class 'tuple'>
Pyvisa资源管理器会回复一个元组参数,里面包含所有可用的VISA资源。
常用的Pyvisa资源操作指令有如下两条:
写指令:write()
询问或者读指令:query()
具体指令内容请查阅对应仪器的编程指导。
SCPI指令也有很多通用的控制指令,比如获取仪器信息(*IDN?),复位仪器状态(*RST)等等。
列出所有的VISA资源之后,可以打开您需要连接的仪器,传入需要控制的仪器地址即可:
instrument_address='USB0::0x0957::0x2B07::MY52700860::INSTR'
my_instrument = rm.open_resource(instrument_address)
print(my_instrument.query('*IDN?'))
print(my_instrument SCPI version:', my_instrument.query(':SYSTem:VERSion?'))
my_instrument.write('*RST')
控制台print打印如下信息:
Agilent Technologies,33521B,MY52700860,2.09-1.19-2.00-52-00
my_instrument SCPI version: 1994.0
这样您的仪器就可以通过Python控制了!
打开微信,使用“扫一扫”即可关注