-->

Eyetracker Software

Experimentalsteuerung (ivx_udp.h)
Auswertungs-Skripte
beformat1.pl
beformat2.pl
beformat3.pl
eda_convert.pl
Hier einige Links, etwas Quellcode und Erlaeuterung zu den in der Arbeitsgruppe verwendeten Programmen, Bibliotheken etc. Alle folgende bezieht sich auf eine Programmierumgebung DOS/LINUX+C/DJGPP+Allegro+Watt-32. (Vgl. EyetrackerDokumentation:Programmierumgebung)

Experimentalsteuerung (ivx_udp.h)

Fuer die Kommunikation zwischen Experimentalsteuerungsprogramm und iView X-Programm wurde ein kleines Interface geschrieben, das die low-level-Routinen zur UDP-Kommunikation kapselt. Es ist lauffaehig unter DOS+djgpp+watt-32 und Unix/Linux+Allegro.

Die Schnittstelle kommt als Pseudo-header-Datei, d.h. als .h-Datei, die einfach am Anfang des Experimentalsteuerungsprogramms per #include eingebunten werden kann. Wegen des geringen Umfangs und regelmaessiger Aenderungen schien es nicht lohnenswerte daraus eine vollbluetige C-Bibliothek zu bauen.

Das Header-file liegt hier.

Eine kommentierte [http://www.math.uni-bielefeld.de/~hkaelber/psycho/demo_ivx.zip][Demo]] zeigt eine vereinfachte Anwendung des Interface, mit der man einen Punkt durch Augenbewegungen ueber den Bildschirm steuern kann. Die folgende knappe Gebrauchsanleitung ist daraus entnommen:

Howto...use ivx_udp.h
---------------------
1. socket am Ende von init_system initialisieren
   defaults fuer socket-init sind:
   init_iviewsocket("192.168.1.10", 4444, "192.168.1.1", 4444)
2. An entsprechender Stelle iview (d.h. recording und streaming) starten.
   (in dieser Datei von start_iview() erledigt)
3. Kalibrierungsbildschirm anzeigen: manual_calib() (s.u., Anm.)
4. Daten an socket screiben: z.B. send_udp("ET_REC\n")
   (immer '\n'-terminieren!)
5. Daten von socket lesen: (alle Lesevorgaenge speichern den Inhalt
   des gelesenen Pakets in udp_buffer)
   a. "blind" naechstes Paket aus der UDP-queue lesen: receive_udp()
      (liefert 1 bei Erfolg; -1 bei Misserfolg); deprecated! liefert meistens
      ein um einige ms veraltetes Paket.
   b. "schlau" (was man will) _zeitaktuelles_ Paket lesen:
      receive_current_udp2(timer_counter)
      > braucht Zeiger auf (irgendeinen) timer_counter
      > wartet auf naechstes noch ankommendes (!) Paket;
      > gibt Meldung (in dbgFile), wenn laenger als kritischer Wert
        (CRITICAL_RECV_TIME) gewartet (was absolute Ausnahme ist!)
   c. "noch schlauer" Koordinaten, die im aktuellen Paket uebermittelt wurden
      anfordern: get_gaze_position(int *, int*, int *timer_counter)
6. An passender Stelle iview (d.h .recording und streaming) stoppen
   (in dieser Datei von stop_iview() erledigt)
7. socket (in shutdown_system) schliessen: shutdown_iviewsocket()

Auswertungs-Skripte

beformat1.pl

http://www.math.uni-bielefeld.de/~hkaelber/psycho/beformat1.pl

Vergleicht Roh- und begaze-event-Daten-file und fuegt von begaze gefressene MSGs in das event-file ein. Bei allen beformat-Skripten kann nicht davon ausgegangen werden, dass sie out-of-the-box fuer alle IVX-Datensaetze funktionieren. Ihr Ergebnis sollte geprueft werden.

usage: beformat1.pl BEGAZE_FILE RAWDATA_FILE OUTPUT_FILE

beformat2.pl

http://www.math.uni-bielefeld.de/~hkaelber/psycho/beformat2.pl

Gleiche Funktionalitaet wie beformat1.pl plus spaltenweise Umformatierung sodass jeder Parameter von Sakkaden-, Fixations- und Blink-events seine eigene Spalte hat.

beformat3.pl

http://www.math.uni-bielefeld.de/~hkaelber/psycho/beformat3.pl

Gleiche Funktionalitaet wie beformat2.pl plus spaltenweise Umformatierung sodass jeder Parameter von save_result-Messages seine eigene Spalte hat (d.h. ist experimentspezifisch!)

eda_convert.pl

http://www.math.uni-bielefeld.de/~hkaelber/psycho/eda_convert.pl

Fuegt in ein event-File die Messages ein, die fuer eine Weiterverarbeitung durch den Eyedata-Analyser benoetigt werden. Setzt die vorherige Anwendung von beformat1.pl voraus und matcht das set-Ende auf eine "save_result"-Message, was evtl. angepasst werden muss.