Ich bin noch neu in Python und Instrument-Controlling und ich habe einige Probleme, auf die ich noch keine Antworten finden konnte. Ich benutze PyVisa, um einen Monochromator (Spectral Products dk240) über RS232 zu steuern. (Python 3.5, PyVisa 1.8)PyVisa lesen Timeout
Ich kann Befehle schreiben und die Antwort lesen, indem ich das richtige Beendigungszeichen einstelle. Das Problem ist, dass manchmal die Geräteantwort ein einzelnes Byte ohne Terminierung ist, und dann bekomme ich ein Timeout (obwohl ich die Antwort sehe, die ich auf einem Port-Monitor haben möchte).
Ich habe versucht, read_raw zu verwenden, um das einzelne Byte zu bekommen, aber es funktioniert nicht. Hier ist eine einfache Version von meinem Code:
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
und der Fehler:
raise errors.VisaIOError(ret_value)
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
Ich habe auch versucht zu „none“ das Abschlusszeichen zu setzen, so Visum für sie nicht warten würde, aber immer noch bekomme die Zeitüberschreitung. Zusätzlich habe ich versucht, die Seriennummer mit read_raw (1) zu lesen, aber anstelle von einem Byte bekomme ich die volle Antwort vom Instrument, warum ist das?
jede Hilfe wird sehr geschätzt werden !!!