各位好,
我是剛入門新手,想問下儀器控制時,visa和pyvisa兩個庫有什么區別嗎?我用visa.ResourceManager()就不行,用pyvisa.ResourceManager()就可以,我看論壇上很多代碼都是用visa庫的,我用的是PyCharm解釋器。
uj5u.com熱心網友回復:
1 VISA簡介 / VISA IntroductionVISA(Virtual Instrument Software Architecture,簡稱為VISA),即虛擬儀器軟體結構,是VXI plug&play聯盟制定的I/O介面軟體標準及其規范的總稱。VISA提供用于儀器編程的標準I/O函式庫,稱為VISA庫。VISA函式庫駐留在計算機系統內,是計算機與儀器的標準軟體通信介面,計算機通過它來控制儀器。
作為通用I/O標準,VISA提供了統一的設備資源管理、操作和使用機制,它獨立于硬體設備、介面、作業系統和編程語言,具有與硬體結構無關的特點。VISA的這一特性使之適用于各種儀器介面,無論儀器使用的串口還是其他任何一種總線,諸如GPIB、VXI、PXI和LXI等,都具有相同的操作函式,從而實作了控制操作上的統一。Visa基于自底向上的結構模型,創造了一個統一形式的I/O控制函式集。一方面,對初學者或是簡單任務的設計者來說,Visa提供了簡單易用的控制函式集,在應用形式上相當簡單;另一方面,對復雜系統的組建者來說,Visa提供了非常強大的儀器控制功能與資源管理。
2 PyVISA庫 / PyVISA Library
PyVISA是Python的一個包,使Python能夠獨立于介面(如GPIB,RS232,USB,Ethernet)控制各種測量設備。PyVISA極大的簡化了對儀器的控制方式,僅僅需要幾行代碼即可以實作對儀器的操作。
2 PyVISA環境搭建
需要利用Python實作對儀器的控制,首先需要對環境進行相應的配置,基本在于以下幾點,
1. 確保系統中有visa32.dll檔案的存在;
2. 安裝相應的儀器驅動軟體;
3. 安裝pyvisa包。
其中,visa32.dll檔案一般存放的位置在c:/windows/system32/visa32.dll,而儀器的驅動可到相應官網進行下載,而pyvisa包則可以使用pip進行安裝,
pip install pyvsia
3 PyVISA基本用法
下面介紹一下pyvisa用于儀器控制的基本使用方式,十分簡單,詳細的使用方式可以參考官方說明。
首先匯入visa模塊,定義一些基本資訊,包括visadll的位置,以及儀器控制方式及其資訊,如TCP/IP的IP地址,GPIB的埠號資訊等,按照指定格式進行填充。
接著利用visadll檔案創建一個visa的實體物件,有了這個實體物件就可以連接儀器。利用創建的visa物件生成連接實體,此處以GPIB和TCPIP為例。
利用連接實體就可以開始與儀器進行通信了,通信的介面函式主要有以下3種,write() /read() /query(),具體使用哪一種需要根據每種儀器的通信協議命令集查詢命令的屬性,為寫/讀/讀寫等。有了介面函式就可以利用對應的命令集進行命令的發送。而具體的命令則可以通過相應的儀器手冊進行查詢。
import visa #這里的visa是pyvisa,因為pyvisa就是python的visa在python里直接寫作visa,寫做import pyvisa也一樣
visa_dll = 'c:/windows/system32/visa32.dll'
tcp_addr = 'TCPIP::192.168.1.1::inst0::INSTR'
gpib_addr = 'GPIB0::12::INSTR'
# Create an object of visa_dll
rm = visa.ResourceManager(visa_dll)
# Create an instance of certain interface(GPIB and TCPIP)
tcp_inst = rm.open_resource(tcp_addr)
gpib_inst = rm.open_resource(gpib_addr)
# Command '*IDN?' can fetch instrument info
# Using write()/read()/query() function to make communication with device
# according to the command type
print(tcp_inst.query('*IDN?'))
print(gpib_inst.query('*IDN?'))
uj5u.com熱心網友回復:
對于你說的:“我用visa.ResourceManager()就不行,用pyvisa.ResourceManager()就可以,我看論壇上很多代碼都是用visa庫的,我用的是PyCharm解釋器。”
可能是你沒引入pyvisa這個包,
或者,你寫的是
import pyvisa
pyvisa.ResourceManager
直接改為:
import visa
visa.ResourceManager
就好了
uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
已經匯入visa庫的,用visa.ResourceManager(slef.visa_all)就會有如下錯誤:self.visa_resource_manger = visa.ResourceManager(self.visa_dll)
AttributeError: module 'visa' has no attribute 'ResourceManager'
如果匯入的是pyvisa庫,用pyvisa.ResourceManager(self.visa_dll)就不會有問題。還是沒有弄明白兩者之間的差異
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/82710.html
上一篇:Animate問題
