This is example 10. This example demonstrates the following:
-
Starting a recording
-
Stopping a recording
This example is based on example 6. With additional calls for starting and stopping a recording.
Source code
Source file: example10.c
processInput()
The following single character commands are implemented here:
q
: quit
o
: open/close device
u
: show/hide control window
x
: toggle show gui on setup mode
X
: toggle show gui on data mode
i
: enter idle mode
s
: enter setup mode
z
: enter data mode
r
: start/stop recording
m
: toggle show mode-change events
When you press r
then eyevec_start_recording()
or 'eyevec_stop_recording()`
will be called depending on the current eye-tracker mode.
static int processInput(EyeVec* eyevec, ClientData* clientdata, int ch)
{
.
.
.
else if (ch == 'r') {
EyeVecTrackerMode trackermode = clientdata->trackermode; (1)
if (trackermode == EYEVEC_TRACKER_MODE_RECORDING) { (1)
err = eyevec_stop_recording(eyevec); (2)
printError("eyevec_stop_recording()", err);
}
else if (trackermode == EYEVEC_TRACKER_MODE_DATA) {
err = eyevec_start_recording(eyevec); (3)
printError("eyevec_start_recording()", err);
}
}
.
.
.
}
1 | Get current eye-tracker mode and check if currently recording. |
2 | Stop ongoing recording. |
3 | Start recording. |
Running
After a succesful build run the program:
-
Press
x
to calleyevec_set_show_gui_on_setup_mode()
. This sets the show-gui-on-setup-mode flag to make the user-interface show on setup mode enter. If however you prefer to keep the user-interface visible at all times while testing pressu
to calleyevec_show_control_window()
. If you don’t want to calleyevec_show_control_window()
explicity but do want the user-interface to show when in data mode, pressX
to calleyevec_set_show_gui_on_data_mode()
. This sets the show-gui-on-data-mode flag to make the user-interface show on data mode enter. -
Press
o
to calleyevec_open()
. Eye-tracker should go from off mode to idle mode. -
Press
s
to calleyevec_enter_setup_mode()
. Eye-tracker should go from idle mode to setup mode and the user-interface should appear. Now perform a baseline measurement and calibration in the user-interface. -
In the user-interface press
Esc
or click Proceed make the eye-tracker go from setup mode to data mode (callingeyevec_enter_data_mode()
would also work). The user-interface should disappear (unless you pressedu
orX
in step 1). -
Press
r
to calleyevec_start_recording()
. Eye-tracker should go from data mode to recording mode. -
Press
r
to calleyevec_stop_recording()
. Eye-tracker should go from recording mode to data mode. -
Press
q
to quit.
Output might look like this (empty lines added for clarity):
eyevec_create_thread(): OK
eyevec_initialize(): OK
Type q to quit, ? for help.
[x]
eyevec_set_show_gui_on_setup_mode(true): OK
[o]
onModeChange:
eventtime: 1750599913360258
oldmode: TRACKER_MODE_OFF
newmode: TRACKER_MODE_IDLE
eyevec_open(): OK
[s]
onModeChange:
eventtime: 1750599915107289
oldmode: TRACKER_MODE_IDLE
newmode: TRACKER_MODE_SETUP
eyevec_enter_setup_mode(): OK
onModeChange:
eventtime: 1750599926899312
oldmode: TRACKER_MODE_SETUP_BASELINE
newmode: TRACKER_MODE_SETUP
onModeChange:
eventtime: 1750599951457075
oldmode: TRACKER_MODE_SETUP_CALIBRATION
newmode: TRACKER_MODE_SETUP
onModeChange:
eventtime: 1750599958745368
oldmode: TRACKER_MODE_SETUP
newmode: TRACKER_MODE_DATA
[r]
onModeChange:
eventtime: 1750599962420359
oldmode: TRACKER_MODE_DATA
newmode: TRACKER_MODE_RECORDING
eyevec_start_recording(): OK
[r]
eyevec_stop_recording(): OK
onModeChange:
eventtime: 1750599969300468
oldmode: TRACKER_MODE_RECORDING
newmode: TRACKER_MODE_DATA
[q]
eyevec_cleanup(): OK
eyevec_destroy_thread(): OK
Since we did not open an eye-tracking data output file and also are not processing online eye-tracking events or eye samples, the recorded data will simply be discarded. How to handle online eye samples and fixation events etc. will be shown in separate example pages.