PyVisa教程-用Python控制儀器【5,Resource類】

原文鏈接:https://pyvisa.readthedocs.io/en/stable/

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參數通知設備。

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