python中pyvsia和visa库的区别

hcwzchen 2019-08-31 11:03:41
各位好,
我是刚入门新手,想问下仪器控制时,visa和pyvisa两个库有什么区别吗?我用visa.ResourceManager()就不行,用pyvisa.ResourceManager()就可以,我看论坛上很多代码都是用visa库的,我用的是PyCharm解释器。
...全文
3347 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcwzchen 2020-03-04
  • 打赏
  • 举报
回复
已经导入visa库的,用visa.ResourceManager(slef.visa_all)就会有如下错误: self.visa_resource_manger = visa.ResourceManager(self.visa_dll) AttributeError: module 'visa' has no attribute 'ResourceManager' 如果导入的是pyvisa库,用pyvisa.ResourceManager(self.visa_dll)就不会有问题。还是没有弄明白两者之间的差异
  • 打赏
  • 举报
回复

weixin_45311797 2020-02-24
  • 打赏
  • 举报
回复
对于你说的:
“我用visa.ResourceManager()就不行,用pyvisa.ResourceManager()就可以,我看论坛上很多代码都是用visa库的,我用的是PyCharm解释器。”
可能是你没引入pyvisa这个包,
或者,你写的是
import pyvisa
pyvisa.ResourceManager

直接改为:
import visa
visa.ResourceManager

就好了
weixin_45311797 2020-02-24
  • 打赏
  • 举报
回复 2
1 VISA简介 / VISA Introduction

VISA(Virtual Instrument Software Architecture,简称为VISA),即虚拟仪器软件结构,是VXI plug&play联盟制定的I/O接口软件标准及其规范的总称。VISA提供用于仪器编程的标准I/O函数库,称为VISA库。VISA函数库驻留在计算机系统内,是计算机与仪器的标准软件通信接口,计算机通过它来控制仪器。

作为通用I/O标准,VISA提供了统一的设备资源管理、操作和使用机制,它独立于硬件设备、接口、操作系统和编程语言,具有与硬件结构无关的特点。VISA的这一特性使之适用于各种仪器接口,无论仪器使用的串口还是其他任何一种总线,诸如GPIB、VXI、PXI和LXI等,都具有相同的操作函数,从而实现了控制操作上的统一。Visa基于自底向上的结构模型,创造了一个统一形式的I/O控制函数集。一方面,对初学者或是简单任务的设计者来说,Visa提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,Visa提供了非常强大的仪器控制功能与资源管理。

2 PyVISA库 / PyVISA Library

PyVISA是Python的一个包,使Python能够独立于接口(如GPIB,RS232,USB,Ethernet)控制各种测量设备。PyVISA极大的简化了对仪器的控制方式,仅仅需要几行代码即可以实现对仪器的操作。

2 PyVISA环境搭建

需要利用Python实现对仪器的控制,首先需要对环境进行相应的配置,基本在于以下几点,

1. 确保系统中有visa32.dll文件的存在;

2. 安装相应的仪器驱动软件;

3. 安装pyvisa包。

其中,visa32.dll文件一般存放的位置在c:/windows/system32/visa32.dll,而仪器的驱动可到相应官网进行下载,而pyvisa包则可以使用pip进行安装,

pip install pyvsia



3 PyVISA基本用法

下面介绍一下pyvisa用于仪器控制的基本使用方式,十分简单,详细的使用方式可以参考官方说明。

首先导入visa模块,定义一些基本信息,包括visadll的位置,以及仪器控制方式及其信息,如TCP/IP的IP地址,GPIB的端口号信息等,按照指定格式进行填充。
接着利用visadll文件创建一个visa的实例对象,有了这个实例对象就可以连接仪器。利用创建的visa对象生成连接实例,此处以GPIB和TCPIP为例。
利用连接实例就可以开始与仪器进行通信了,通信的接口函数主要有以下3种,write() /read() /query(),具体使用哪一种需要根据每种仪器的通信协议命令集查询命令的属性,为写/读/读写等。有了接口函数就可以利用对应的命令集进行命令的发送。而具体的命令则可以通过相应的仪器手册进行查询。
import visa #这里的visa是pyvisa,因为pyvisa就是python的visa在python里直接写作visa,写做import pyvisa也一样

visa_dll = 'c:/windows/system32/visa32.dll'
tcp_addr = 'TCPIP::192.168.1.1::inst0::INSTR'
gpib_addr = 'GPIB0::12::INSTR'

# Create an object of visa_dll
rm = visa.ResourceManager(visa_dll)

# Create an instance of certain interface(GPIB and TCPIP)
tcp_inst = rm.open_resource(tcp_addr)
gpib_inst = rm.open_resource(gpib_addr)

# Command '*IDN?' can fetch instrument info
# Using write()/read()/query() function to make communication with device
# according to the command type
print(tcp_inst.query('*IDN?'))
print(gpib_inst.query('*IDN?'))

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧