PyVisa教程-用Python控制仪器【7,PyVISA结构】
PyVISA在三个层次上实现了方便的Pythonic编程。1. 低级别:一个包含visa库接口的容器。该容器定义了每个函数的参数类型和返回值类型,打通了Python类和外部接口类型。一般不需要直接调用这些函数。这么做就意味着需要提升Layer 2的封装与定义了。所有level 1的函数均为VisaLibraryBase的静态方法。并不是所有低级别的函数在所有后台上都实现了。为了...
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:
|
然后,可以访问visalib下的VisaLibrary实体。
例如,VISA函数viMapAddress。在低级别layer中为viMapAddress,在中级别中为map_address。
可以通过名称区分低级别和中级别函数。低级别函数和共享库中的方法具有相同的名称,并被冠以前缀vi。中级别函数具有更Python化但可识别的名称。一般,首字母大写并以vi为前缀的名称变为下划线间隔的小写字母的名称。在API章节有对此级别函数的详细介绍。
低级别
可以用静态方法直接访问低级别函数,例如:
|
调用这些函数需要了解函数声明和对应python接口。避免这些,可以用VisaLibrary对象的中级别函数。
中级别
VisaLiability对象实现了外部库一一对应的封装函数。
每一个中级别函数封装了一个低级别函数。例如:
|
封装库解决了调用约定和类型转换。
更多推荐
所有评论(0)