PyVisa教程-用Python控制儀器【7,PyVISA結構】

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>)

封裝庫解決了調用約定和類型轉換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章