PyVisa教程-用Python控制仪器【5,Resource类】

10 篇文章 68 订阅

Resources

一个resource代表一种仪器(测量设备)。有很多种从resources派生的类,表示各种不同的设备(如GPIB,串口)。每个都包含特定方法和参数集,用来和设备进行交互。

无需直接 创建,可以从open_resource()的ResourceManager方法的返回值获取。通常,有两种派生自resource类,MessageBasedResource(基于消息的设备)和RegisterBasedResource(基于寄存器的设备)。

Python类会自动选择resource,亦可以指定resource的Python类类型。

>>> from pyvisa.resources import MessageBasedResource

>>> inst = rm.open('ASRL1::INSTR', resource_pyclass=MessageBasedResource)

下面的章节介绍了常用的Resource方法和经常用的消息类型设备(如串口,GPIB)。需要更详细的信息,请阅读API章节。

Resource类的方法

session

每个到仪器的控制通道,有一个特定的session头。如下面代码:

>>> my_device.session

10442240

如果通道关闭,则会收到一个异常。

>>> inst.close()

>>> inst.session

Traceback (most recent call last):

...

pyvisa.errors.InvalidSession: Invalid session handle. The resource might be closed.

超时

绝大多数的VISO输入输出操作都会有时间约束。如果超时时间已经设定,所有需要超过改时间的命令都将被终止,并产生异常。仪器超时时间一般以毫秒(ms)为单位。

对于所有PyVisa对象,超时时间设置如下:

my_device.timeout = 25000

这里,my_device指一个设备,一个接口或者其他的什么,它的超时时间为25s。设置无限的超时时间,可以将该值设置为None或无限大(float(“+inf”)),亦或者:

del my_device.timeout

设置超时为立即,可以设置该值为0或负值。(事实上,任何小于1的值均被理解为立即)

现在任何resource的操作运行不会超过设定的超时时间,除了有需要特殊设置的。

基于消息设备的参数

块长度chunk length

读取设备的数据,首先要将数据存放在某处。不巧,PyVISA在读取设备前需要设置存放空间,这表示需要知道设备将传输的数据量。但是,这不可能预先知道。

因此,PyVISA是一块一块的读取数据的。每个块默认为20kB。如果仍有数据需要读取,PyVSIA将重复并将结果合并,然后返回数据。20kB对于大多数情况已经足够,大多数情况一次读取即可。

所有这些都是自定进行的,这场情况下无需考虑。有些设备不能以块的方式传输数据,如果有些设备这样操作存在问题,可以提升块的大小。

my_instrument.chunk_size = 102400

以上代码将块大小改为100kB。

终止符

PC需要检测何时设备完成消息传送。根据总线系统的不同,实现该检测有多重不同的方法。大多数情况下,采用默认的终止符即可。有些情况下,需要更改PyVISA默认的终止符。

终止符可以是单个字符,也可以是字符的组合。当这个字符或这个字符组合出现在输入字符流,读操作将被终止,读取的消息被传递给调用的应用。下一个读操作开始于输入字符流的上一个结束符。PyVISA提供终止符分离后的消息(数据)。

可以设置每个仪器的终止符。

my_instrument.read_termination = '\r'

'\r'为换行符。

亦可以在创建仪器/设备对象时给出:

my_instrument = rm.open_resource("GPIB::10", read_termination='\r')

默认的终止符取决于总线系统。对于GPIB,为空。对于RS232,为换行符。

可以设置终止符到输出信息中,并用write_termination参数通知设备。

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值