Я до сих пор не знаком с управлением python и инструментами, и мне приходится сталкиваться с некоторыми проблемами, на которые я еще не мог найти ответы. Я использую PyVisa для управления монохроматором (Spectral Products dk240) через rs232. (Python 3.5, PyVisa 1.8)Тайм-аут тайм-аута PyVisa
Я могу написать команды и прочитать ответ, установив правильный символ окончания. Проблема в том, что иногда ответ прибора представляет собой один байт без прерывания, а затем я получаю тайм-аут (хотя я вижу ответ, который я хочу на мониторе порта).
Я попытался использовать read_raw, чтобы получить один байт, но он не работает. Вот простой вариант моего кода:
import pyvisa
rm = pyvisa.ResourceManager()
instrument = rm.open_resource('ASRL1::INSTR')
instrument.baud_rate= 9600
instrument.data_bits=8
instrument.stop_bits = pyvisa.constants.StopBits.one
instrument.parity = pyvisa.constants.Parity.none
instrument.read_termination = chr(24) #specified in the manual
instrument.write(chr(33)) # command to get the serial number
instrument.read() # this works!
instrument.write(chr(27)) # echo command
# instrument replies one byte echo (seen on port monitor)
instrument.read_raw(1) # I get a timeout here
и ошибка:
raise errors.VisaIOError(ret_value)
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
Я также попытался установить символ завершения, чтобы «ни один», поэтому виза не будет ждать его, но все-таки получить таймаут. Кроме того, я попытался прочитать серийный номер с помощью read_raw (1), но вместо одного байта я получу полный ответ от инструмента, почему?
любая помощь будет принята с благодарностью !!!