PyVISA在三个层次上实现了方便的Pythonic编程。

1. 低级别:一个包含visa库接口的容器。

该容器定义了每个函数的参数类型和返回值类型,打通了Python类和外部接口类型。

一般不需要直接调用这些函数。这么做就意味着需要提升Layer 2的封装与定义了。

所有level 1的函数均为VisaLibraryBase的静态方法。

并不是所有低级别的函数在所有后台上都实现了。为了更好地兼容性,不要使用Layer 1.所有的功能均在Layer 2中实现了。

2. 中间级:visa库的所有函数的Python实现。

这些函数调用低级别函数,增加了处理类型转换代码。这些函数拥有详细的,友好的Python类型文档。

如果没有对应的设备类,可以直接调用此级别的函数,控制VISA库特定的接口。

所有level 2的函数均为VisaLibraryBase中的封装函数。

3. 高级别:ResourceManager或Resource的基于对象的层。

ResourceManager实现了控制所连接设备的方法。可以应用此对象打开对应Resource派生类的各种设备。

Resource类和派生类实现了获取设备参数和控制设备的Pythonic方式。

大部分情况下,只需访问ResourceManager。对一个给定的设备,用open_resource()方法来实现该对象的访问。如果需要,可以使用visalib的参数访问VisaLibrary对象。

VisaLibraryBase类实现低级别的调用。对于默认的NI后台,level 1和level 2均在pyvisa.ctwrapper包中。该包包含在PyVISA中。

其他的后台只需将@符号和后台名称做为参数传递给ResourceManager即可。更多信息详见A frontend for multiple backends.

调用中级别和低级别函数

首先,访问ResourceManager:

>>> import visa

>>> rm = visa.ResourceManager()

然后,可以访问visalib下的VisaLibrary实体。

例如,VISA函数viMapAddress。在低级别layer中为viMapAddress,在中级别中为map_address。

可以通过名称区分低级别和中级别函数。低级别函数和共享库中的方法具有相同的名称,并被冠以前缀vi。中级别函数具有更Python化但可识别的名称。一般,首字母大写并以vi为前缀的名称变为下划线间隔的小写字母的名称。在API章节有对此级别函数的详细介绍。

低级别

可以用静态方法直接访问低级别函数,例如:

>>> rm.visalib.viMapAddress(<here goes the arguments>)

调用这些函数需要了解函数声明和对应python接口。避免这些,可以用VisaLibrary对象的中级别函数。

中级别

VisaLiability对象实现了外部库一一对应的封装函数。

每一个中级别函数封装了一个低级别函数。例如:

>>> rm.visalib.map_address(<here goes the arguments>)

封装库解决了调用约定和类型转换。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐