2016-07-19 2 views
2

Я использую порт RS-232 для связи с KeithleyInstruments (протокол SCPI) и имею проблему. Я могу отправить команду записи, но когда я отправляю команду запроса, она показывает следующую ошибку.VI_ERROR_TMO (-1073807339)

import visa 
rm = visa.ResourceManager() 
inst = rm.list_resources() 
print inst 
# print inst --> (u'USB0::0x05E6::0x2200::9060025::INSTR', u'ASRL1::INSTR', u'ASRL6::INSTR', u'ASRL7::INSTR', u'ASRL10::INSTR', u'GPIB0::16::INSTR') 
keithleyInst= rm.open_resource('ASRL7::INSTR') 
print keithleyInst.write("*rst") 
print keithleyInst.write(":meas:temp?") 
print keithleyInst.query(":meas:temp?") 

Error:

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

ответ

1

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

Если он еще раз после извлечения дополнительной записи, попробуйте установить очень долго тайм-аут, как:

keithleyInst.timeout = 5000 

Чтобы дать ему 5 секунд, чтобы ответить. Вы всегда можете сократить это, как только у вас есть работа.

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

Попробуйте связаться с прибором с помощью программы терминала или измерений National Instruments & Программа автоматизации, чтобы точно узнать, какой символ прекращения отправляется (если он отправляет что-либо).

Вы можете изменить окончание символа VISA ожидает от

keithleyInst.read_termination = '\r' 

или что-то подобное.

+0

Я пробовал без записи и с таймаутом (25000 мс), но он все еще не работает. –