2012-05-16 3 views
2

Я пытаюсь импортировать visa в Python и взаимодействовать с GPIB для управления устройством. Название устройства, которое я использую, - "GPIB0::9::INSTR", и я думаю, что с этим не должно быть никаких проблем.Использование визы для взаимодействия с GPIB всегда дает мне VisaIOError

Я побежал следующий код в 2.7.3 Python Shell

>>> from visa import * 
>>> a = instrument("GPIB0::9", timeout = 20) 
>>> a.write("*IDN?") 
>>> print a.read() 

Traceback (most recent call last): 
    File "<pyshell#53>", line 1, in <module> 
    print a.read() 
    File "C:\Python27\lib\site-packages\pyvisa\visa.py", line 433, in read 
    return self._strip_term_chars(self.read_raw()) 
    File "C:\Python27\lib\site-packages\pyvisa\visa.py", line 407, in read_raw 
    chunk = vpp43.read(self.vi, self.chunk_size) 
    File "C:\Python27\lib\site-packages\pyvisa\vpp43.py", line 840, in read 
    visa_library().viRead(vi, buffer, count, byref(return_count)) 
    File "C:\Python27\lib\site-packages\pyvisa\vpp43.py", line 398, in check_status 
    raise visa_exceptions.VisaIOError, status 
VisaIOError: VI_ERROR_TMO: Timeout expired before operation completed. 

Выше ошибка система дала мне. На самом деле в начале я установил Timeout равным 3, он показывает это errot. Но после того, как я изменил значение на 20, как показано выше, он все равно не работает.

Может кто-нибудь мне помочь?

+0

Пробовал ли вы пропустить «тайм-аут» или установить «timeout = None»? Согласно http://pyvisa.sourceforge.net/pyvisa.html#sec-timeouts – jadkik94

+0

@ jadkik94 Ну, после того, как я изменил 'timeout' как' None', как вы сказали, кажется, что система работает в бесконечном цикле .... Значит ли «таймаут» максимальное время, разрешенное для каждой инструкции? –

+0

Думаю. Это то, что говорят документы в части Timeouts. Я не знаю, вот почему это просто комнент не ответ. – jadkik94

ответ

-1

Для каждого конкретного инструмента у него будет своя собственная команда для управления ими. См. Руководство пользователя устройства.

0

Существуют различные проблемы, которые могут привести к таймауту. Сначала вы должны проверить, поддерживает ли ваше устройство запрос *IDN?. Это стандартная команда IEEE-488.2, поэтому есть вероятность, что она поддерживается (если не проверить свое руководство для команд).

Затем вы должны проверить, что вы настройки связи, в частности символ окончания и EOI.

Если вы используете неправильный символ окончания, виза будет продолжать читать и, наконец, тайм-аут.

Примечание: Вы можете использовать функцию запроса pyvisa, если используете запрограммированную команду (это комбинированная запись и чтение).

import visa 

# If you've got just one gpib card installed, you can ommit the 0. 
# ASsuming the EOI line should be asserted and a termination character 
# of '\n' 
instrument = visa.instrument('GPIB::9', term_chars='\n', send_end=True) 
# use ask to write the command and read back the response 
print instrument.ask('*IDN?') 
0
import visa 

rm = visa.ResourceManager() 
devices = rm.list_resources() 
comm_channel = rm.open_resource(devices[0])  #assuming you only have 1 address to worry about 

print(comm_channel.query("*IDN?")) 

Этот модуль использует PYVisa в и многие функции, которые она может предложить с соединительном/запись/чтение и с USB/GPIB устройства.

 Смежные вопросы

  • Нет связанных вопросов^_^