Ich benutze Pyserial (+ Python 2.7), um die Eye-Tracking-Koordinaten eines Eye-Trackers einzulesen (CRS Live-Track als serieller Port). Mit dem folgenden Code kann ich den Tracker erfolgreich starten, eine Koordinatenlinie lesen/speichern, den Tracker anhalten und schließen. Mein Problem ist, dass ich ständig die Koordinaten einlesen muss, während ich andere Aufgaben wie die Anzeige von Stimuli ausführe. So wie es aussieht, kann ich nichts tun, während ich Daten einlese ('trial1 = ser.readline'). Ich muss warten, bis ich die Daten eingelesen habe, bevor ich fortfahre. Gibt es eine Möglichkeit, die Daten von der seriellen Schnittstelle kontinuierlich einzulesen, während ich Stimuli zeige/Antworten sammle etc.?Pyserial/Eye-tracker: Lesen von der seriellen Schnittstelle während der Anzeige von Stimuli
Ich muss den Tracker einschalten, die Daten für die Dauer des Versuchs sammeln und dann Tracker aus.
import serial, time
ser = serial.Serial(
port='COM3',
baudrate=9600,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS,
)
x = ser.is_open #check port is open
if x:
print "port is open"
print "port name is: %s" %(ser.name) #check which port
ser.flushInput()
ser.flushOutput()
running = True
while running:
ser.write('$Raw\r') #start eye-tracker
trial1 = ser.readline() #read a line
###i need to do stuff here###
ser.write('$Stop\r') #stop eye-tracker
running = False
ser.flushInput()
ser.flushOutput()
print trial1 #print coordinates output
ser.close()
Prost, Steve