Ошибка тайм-аута PyVISA RS232 (источник питания Agilent) - PullRequest
0 голосов
/ 07 мая 2018

Я работаю над открытием связи с источником питания Agilent с помощью PyVISA и получаю сообщение об ошибке тайм-аута при запросе идентификатора прибора.

Мой код:

import visa 

rm = visa.ResourceManager()
res = rm.list_resources()
print("Find following resources: ")
print(res)
print("Opening " + res[-1])

inst = rm.open_resource(res[-1])
inst.timeout = 100000 # timeout 100s
inst.write_termination = '\n'
inst.read_termination = '\n'

print(inst.query('*IDN?'))

Вывод, который я получаю:

Find following resources: 
(u'ASRL5::INSTR',)
Opening ASRL5::INSTR
Traceback (most recent call last):

File "<ipython-input-10-66ffef23c46a>", line 1, in <module>
    runfile('C:/Users/Sabri/Anaconda2/untitled0.py', wdir='C:/Users/Sabri     /Anaconda2')

File "C:\Users\Sabri\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
    execfile(filename, namespace)

File "C:\Users\Sabri\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 86, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

File "C:/Users/Sabri/Anaconda2/untitled0.py", line 20, in <module>
    print(inst.query('*IDN?'))

File "C:\Users\Sabri\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", line 564, in query
    return self.read()

File "C:\Users\Sabri\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", line 413, in read
    message = self._read_raw().decode(enco)

File "C:\Users\Sabri\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", line 386, in _read_raw
    chunk, status = self.visalib.read(self.session, size)

File "C:\Users\Sabri\Anaconda2\lib\site-packages\pyvisa\ctwrapper\functions.py", line 1584, in read
    ret = library.viRead(session, buffer, count, byref(return_count))

File "C:\Users\Sabri\Anaconda2\lib\site-packages\pyvisa\ctwrapper\highlevel.py", line 188, in _return_handler
    raise errors.VisaIOError(ret_value)

VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

Я попытался указать завершающий символ как \ n для команд чтения и записи, указать скорость передачи, изменить время ожидания на «Нет» и объявить инструмент как inst = rm.open_resource («ASRL5 :: INSTR»). ') вместо inst = rm.open_resource (res [-1]). Пока ничего не получалось. Любые предложения будут с благодарностью!

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте использовать эксперт по соединению Keysight (формально Agilent).

Содержится в наборе библиотек ввода-вывода: https://www.keysight.com/main/software.jspx?cc=GB&lc=eng&ckey=2175637&nid=-33330.977662&id=2175637

После установки вы сможете добавлять приборы и проверять состояние источника питания.

Какая модель блока питания?

Примечание: у меня были ситуации, когда ПК распознавал последовательный COM-порт, но работал только после того, как я обновил драйвер вручную.

...