def init_tracker(self):
        self.tracker = eyelinker.EyeLinker(
            self.experiment_window, self.experiment_name + '_' +
            self.experiment_info['Subject Number'] + '.edf', 'BOTH')

        self.tracker.initialize_graphics()
        self.tracker.open_edf()
        self.tracker.initialize_tracker()
        self.tracker.send_tracking_settings()
from psychopy import visual

import eyelinker


monitor = monitors.Monitor('test_monitor', width=53, distance=70)
monitor.setSizePix([1920, 1080])

win = visual.Window([800, 600], units="pix", color=[0, 0, 0], monitor=monitor)

text_stim = visual.TextStim(win, 'Beginning EyeLinker test...')
text_stim.draw()
win.flip()

# Will attempt to default to MockEyeLinker if no tracker connected
tracker = eyelinker.EyeLinker(win, 'test.edf', 'BOTH')

# initialize
tracker.initialize_graphics()
tracker.open_edf()
tracker.initialize_tracker()
tracker.send_tracking_settings()
print('Initalization tests passed...')
time.sleep(1)
win.flip()

# most basic functionality
tracker.display_eyetracking_instructions()
tracker.setup_tracker()  # forced setup
tracker.calibrate()  # choice given
tracker.send_status('Recording...')
예제 #3
0
    def run(self):
        self.chdir()

        print('Note: EDF file will be overwritten if identical subject numbers are used!')
        ok = self.get_experiment_info_from_dialog(self.questionaire_dict)

        if not ok:
            print('Experiment has been terminated.')
            sys.exit(1)

        self.save_experiment_info()
        self.open_csv_data_file()
        self.open_window(screen=0)
        self.display_text_screen('Loading...', wait_for_input=False)

        self.tracker = eyelinker.EyeLinker(
            self.experiment_window,
            'CDET' + self.experiment_info['Subject Number'] + '.edf',
            'BOTH'
        )

        self.tracker.initialize_graphics()
        self.tracker.open_edf()
        self.tracker.initialize_tracker()
        self.tracker.send_calibration_settings()

        for instruction in self.instruct_text:
            self.display_text_screen(text=instruction)

        self.tracker.display_eyetracking_instructions()

        conditions = ['FreeGaze', 'Fixated']
        random.shuffle(conditions)

        for condition in conditions:
            if condition == 'FreeGaze':
                self.display_text_screen(text=freegaze_instruct_text)
            else:
                self.display_text_screen(text=fixated_instruct_text)

            for block_num in range(self.number_of_blocks):
                block = self.make_block()
                self.tracker.setup_tracker()
                self.display_text_screen(text='Get ready...', wait_for_input=False)
                psychopy.core.wait(2)
                for trial_num, trial in enumerate(block):
                    self.tracker.send_message('BLOCK %d' % block_num)
                    self.tracker.send_message('TRIAL %d' % trial_num)
                    status = '%s: Block %d, Trial %d' % (condition, block_num, trial_num)
                    self.tracker.send_status(status)
                    self.tracker.start_recording()
                    data = self.run_trial(trial, block_num, trial_num)
                    self.tracker.stop_recording()
                    data.update({'Condition': condition})
                    self.send_data(data)

                self.save_data_to_csv()

                if block_num + 1 != self.number_of_blocks:
                    self.display_break()

                    if condition == 'FreeGaze':
                        self.display_text_screen(text='Remember:\n\n' + freegaze_instruct_text)
                    else:
                        self.display_text_screen(text='Remember:\n\n' + fixated_instruct_text)

        self.display_text_screen(
            'The experiment is now over, please get your experimenter.',
            bg_color=[0, 0, 255], text_color=[255, 255, 255],
            wait_for_input=False)

        psychopy.core.wait(10)

        self.quit_experiment()