/ / pyvisa restituisce errori, ma linux-gpib funziona - python, python-2.7, ubuntu, visa, gpib

pyvisa dà errori ma Linux-gpib funziona - python, python-2.7, ubuntu, visa, gpib

Sto cercando di controllare un generatore di forme d'onda arbitrarie Agilent 33120A usando pyvisa sotto Ubuntu 13.04 (Raring Ringtail). Ho installato e configurato tutto ciò che è necessario per comunicare con lo strumento utilizzando il nostro adattatore NI GPIB-USB-B da laboratorio. Il firmware dell'adattatore è caricato, così come i moduli del kernel da linux-gpib.

Posso fare con successo alcune uscite a secco, ad es. correndo # ibtest (strumento da riga di comando), posso scrivere *IDN? al dispositivo e ricevo l'ID del dispositivo: "HEWLETT-PACKARD,33120A,0,8.0-5.0-1.0". Ho anche testato con successo altri comandi, come l'impostazione di tensione e frequenza e così via. Funziona.

Il problema è che pyvisa lancia sempre a VisaIOError... Non ho idea di come farlo funzionare. Corro python-2.7 come root, in modo che (per ora) non abbia a che fare con i privilegi di accesso. Questo è il codice e l'output:

import visa
>>> visa.vpp43.visa_library.load_library("/usr/lib/x86_64-linux-gnu/libvisa.so.0")
>>> visa.get_instruments_list()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/pyvisa/visa.py", line 254, in get_instruments_list
vpp43.find_resources(resource_manager.session, "?*::INSTR")
File "/usr/lib/python2.7/dist-packages/pyvisa/vpp43.py", line 583, in find_resources
instrument_description)
File "/usr/lib/python2.7/dist-packages/pyvisa/vpp43.py", line 398, in check_status
raise visa_exceptions.VisaIOError, status
pyvisa.visa_exceptions.VisaIOError: VI_ERROR_RSRC_NFOUND: Insufficient location information or the requested device or resource is not present in the system.

La libreria viene caricata correttamente. Non è nemmeno necessario, ma carico la libreria esplicitamente per essere sicuro. Ovviamente, pyvisa non trova nessuno strumento. Ho anche provato ad aprire esplicitamente il mio strumento board=0, pad=10, sad=0 usando uno di questi comandi:

visa.instrument("GPIB::10")
visa.instrument("GPIB0::10")
visa.instrument("GPIB::10::0")
visa.instrument("GPIB0::10::0")

Ma la stessa eccezione di cui sopra è generata.

In sostanza, tutto è impostato, ma pyvisa non vede nulla.

Versioni usate:

Sto sperando in alcuni suggerimenti.

risposte:

2 per risposta № 1

pyvisa è un wrapper Python su NI-VISA. Per quanto ne so, non è possibile usarlo pyvisa con linux-gpib. Ma linux-gpib viene fornito con i suoi wrapper Python. Semplicemente import Gpib e tu sei bravo ad andare, per esempio,

>>>import Gpib
>>>device = Gpib.Gpib(pad=10)
>>>device.write("*IDN?")
>>>device.read()
"HEWLETT-PACKARD,33120A,0,8.0-5.0-1.0"

Immagino che tu stia scrivendo una sorta di sceneggiatura di misura schiavo potrebbe essere utile per te (disclaimer: io sono l'autore di slave). Cerca di semplificare la comunicazione del dispositivo. Inoltre viene fornito con i propri wrapper per linux-GPIB.