Esempio n. 1
0
 public void StartGazeDataStreams(GazePointCallback gazePointCallback, FixationCallback fixationCallback, EyePositionCallback eyePositionCallback)
 {
     if (gazePointCallback != null)
     {
         if (gazePointDataStream == null)
         {
             gazePointDataStream = eyeXHost.CreateGazePointDataStream(Tobii.EyeX.Framework.GazePointDataMode.Unfiltered);
         }
         gazePointDataStream.Next += InvokeGazePointEvent;
         GazePointEvent           += gazePointCallback;
         GazePointEvent           += RecordGazePoint;
     }
     if (fixationCallback != null)
     {
         if (fixationDataStream == null)
         {
             fixationDataStream = eyeXHost.CreateFixationDataStream(FixationDataMode.Sensitive);
         }
         fixationDataStream.Next += InvokeFixationEvent;
         FixationEvent           += fixationCallback;
         FixationEvent           += RecordFixation;
     }
     if (eyePositionCallback != null)
     {
         if (eyePositionDataStream == null)
         {
             eyePositionDataStream = eyeXHost.CreateEyePositionDataStream();
         }
         eyePositionDataStream.Next += InvokeEyePositionEvent;
         EyePositionEvent           += eyePositionCallback;
         EyePositionEvent           += RecordEyePosition;
     }
 }
Esempio n. 2
0
        /*************************EYE_X_COMPONENT.INIT********************/

        /*
         * Receive method for the EyeX gaze data stream.
         */
        private void ReceiveGazeData(Envelope e)
        {
            using (gazeDataStream = host.CreateGazePointDataStream(GazePointDataMode.LightlyFiltered))
            {
                Console.WriteLine("EyeX data stream initiated.");

                gazePoint.Post(gazeDataStream, e.OriginatingTime);

                using (eyePositionStream = host.CreateEyePositionDataStream())
                {
                    Console.WriteLine("EyeX eye position stream initiated.");

                    eyeData.Post(eyePositionStream, e.OriginatingTime);

                    gazeDataStream.Next += (s, q) =>
                    {
                        frameDataX = q.X;
                        frameDataY = q.Y;
                    };

                    eyePositionStream.Next += (s, q) =>
                    {
                        leftEyeX = q.LeftEye.X;
                        leftEyeY = q.LeftEye.Y;
                        leftEyeZ = q.LeftEye.Z;

                        leftEyeNormalizedX = q.LeftEyeNormalized.X;
                        leftEyeNormalizedY = q.LeftEyeNormalized.Y;
                        leftEyeNormalizedZ = q.LeftEyeNormalized.Z;

                        rightEyeX = q.RightEye.X;
                        rightEyeY = q.RightEye.Y;
                        rightEyeZ = q.RightEye.Z;

                        rightEyeNormalizedX = q.RightEyeNormalized.X;
                        rightEyeNormalizedY = q.RightEyeNormalized.Y;
                        rightEyeNormalizedZ = q.RightEyeNormalized.Z;
                    };

                    Console.WriteLine("Listening for gaze data...");

                    using (FixationDataStream fixationStream = host.CreateFixationDataStream(FixationDataMode.Sensitive))
                    {
                        fixationData.Post(fixationStream, e.OriginatingTime);

                        fixationStream.Next += (s, q) =>
                        {
                            fixationX = q.X;
                            fixationY = q.Y;
                        };

                        Console.WriteLine("Recording fixation points...");
                        Console.In.Read();
                    }
                }
            }
        }
Esempio n. 3
0
        public webBro()
        {
            InitializeComponent();
            InitBrowser();

            synth.SetOutputToDefaultAudioDevice();
            synth.SpeakCompleted += synth_SpeakCompleted;

            rgx = new Regex(pattern);

            try
            {
                defaultStyle    = File.ReadAllText(".\\Data\\style.css");
                monochromeStyle = File.ReadAllText(".\\Data\\monochrome.css");
                style           = defaultStyle;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

            eyeXHost = new EyeXHost();
            eyeXHost.Start();
            stream       = eyeXHost.CreateGazePointDataStream(Tobii.EyeX.Framework.GazePointDataMode.Unfiltered);
            stream.Next += (s, e) =>
            {
                setPos((int)e.X, (int)e.Y);
            };
            position       = eyeXHost.CreateEyePositionDataStream();
            position.Next += (s, e) =>
            {
                leftClose  = e.LeftEye.X == 0 && e.LeftEye.Y == 0;
                rightClose = e.RightEye.X == 0 && e.RightEye.Y == 0;
            };

            controller = new Controller();
            listener   = new LeapEventListener(this);
            controller.AddListener(listener);

            if (File.Exists("parameters.cfg"))
            {
                StreamReader sr = new StreamReader("parameters.cfg");
                fingerMove.Checked = sr.ReadLine() == "1";
                keyCheck.Checked   = sr.ReadLine() == "1";
                borderLeft         = float.Parse(sr.ReadLine());
                borderUp           = float.Parse(sr.ReadLine());
                borderRight        = float.Parse(sr.ReadLine());
                borderDown         = float.Parse(sr.ReadLine());
                sr.Close();

                if (borderLeft != -200)
                {
                    firstLeap = false;
                }
            }
        }
Esempio n. 4
0
        public Tobii()
        {
            InitializeComponent();
            eyexhost.Start();
            lightlyFilteredGazeDataStream = eyexhost.CreateGazePointDataStream(GazePointDataMode.LightlyFiltered);
            lightlyFilteredGazeDataStream.Next += (s, e) => 視点情報格納(s, e);
            PosDataStream=eyexhost.CreateEyePositionDataStream();
            PosDataStream.Next += (s, e) =>  眼球位置_XY情報格納(s, e);

            タイマー開始();
            //System.Diagnostics.Debug.WriteLine(gaze_data.ToString());
        }
Esempio n. 5
0
 public void StopAllGazeDataStream()
 {
     SetGazeDataRecording(false, false, false);
     GazePointEvent = null;
     gazePointDataStream.Dispose();
     gazePointDataStream = null;
     FixationEvent       = null;
     fixationDataStream.Dispose();
     fixationDataStream = null;
     EyePositionEvent   = null;
     eyePositionDataStream.Dispose();
     eyePositionDataStream = null;
 }
Esempio n. 6
0
        public void startEyeTrack()
        {
            GazePointDataStream gpda = eHost.CreateGazePointDataStream(GazePointDataMode.LightlyFiltered);

            gpda.Next += new EventHandler <GazePointEventArgs>(GetPos);
            EyePositionDataStream epds = eHost.CreateEyePositionDataStream();

            epds.Next += new EventHandler <EyePositionEventArgs>(GetEyePos);

            eHost.UserPresenceChanged += new EventHandler <EngineStateValue <UserPresence> >(GetPresence);
            eHost.GazeTrackingChanged += new EventHandler <EngineStateValue <GazeTracking> >(GetGaze);

            //eHost.Start();
        }
Esempio n. 7
0
        public override Action Start()
        {
            host = new EyeXHost();
            host.Start();

            host.UserPresenceChanged            += HostOnUserPresenceChanged;
            host.EyeTrackingDeviceStatusChanged += HostOnEyeTrackingDeviceStatusChanged;
            host.UserProfileNameChanged         += HostOnUserProfileNameChanged;
            host.DisplaySizeChanged             += HostOnDisplaySizeChanged;

            gazeDataStream = host.CreateGazePointDataStream(GazePointDataMode.Unfiltered);
            eyeDataStream  = host.CreateEyePositionDataStream();

            gazeDataStream.Next += GazeDataStreamOnNext;
            eyeDataStream.Next  += EyeDataStreamOnNext;

            return(null);
        }
Esempio n. 8
0
 public Record(bool filteered, string filenameWithoutExtention, bool takeScreenshot)
 {
     this.takeScreenshot           = takeScreenshot;
     this.filenameWithoutExtention = filenameWithoutExtention;
     //Directory.CreateDirectory(filenameWithoutExtention + "_screenshots");
     eyeXHost.Start();
     if (filtered)
     {
         lightlyFilteredGazeDataStream = eyeXHost.CreateGazePointDataStream(GazePointDataMode.LightlyFiltered);
         gpdm = GazePointDataMode.LightlyFiltered;
     }
     else
     {
         gpdm = GazePointDataMode.Unfiltered;
         lightlyFilteredGazeDataStream = eyeXHost.CreateGazePointDataStream(GazePointDataMode.Unfiltered);
     }
     eyePosStream = eyeXHost.CreateEyePositionDataStream();
 }
Esempio n. 9
0
        private void Window_Loaded(object sender, RoutedEventArgs routedEventArgs)
        {
            FetchRawDpi(out rawDpiX, out rawDpiY);

            screenSize = SystemParameters.WorkArea;

            var dpiScale = VisualTreeHelper.GetDpi(this);

            conversionFactorX = (rawDpiX / dpiScale.DpiScaleX) / 25.4;
            conversionFactorY = (rawDpiY / dpiScale.DpiScaleY) / 25.4;

            D40.Width  = conversionFactorX * 40;
            D40.Height = conversionFactorY * 40;

            // There seems to be a 90mm offset for the data. It does not map to the screen height,
            // but instead seems to be realatively consistent across multiple devices.
            verticalOffset = 90 * conversionFactorY;

            eyeXHost = new EyeXHost();
            eyeXHost.Start();

            eyePositionDataStream       = eyeXHost.CreateEyePositionDataStream();
            eyePositionDataStream.Next += (s, e) =>
            {
                Dispatcher.BeginInvoke((Action)(() =>
                {
                    var sb = new StringBuilder();

                    UpdateEyeData("Left", e.LeftEye, LeftEyePositionEllipse, sb);
                    UpdateEyeData("Right", e.RightEye, RightEyePositionEllipse, sb);
                    if (e.LeftEye.IsValid && e.RightEye.IsValid)
                    {
                        sb.AppendLine($"          IPD ({e.RightEye.X - e.LeftEye.X,7:F1}mm)");
                    }

                    StatusTextBlock.Text = sb.ToString();
                }));
            };
        }
Esempio n. 10
0
 /// <summary>
 /// Gets an eye position data stream.
 /// </summary>
 /// <returns>The data stream.</returns>
 public EyePositionDataStream CreateEyePositionDataStream()
 {
     var dataStream = new EyePositionDataStream();
     RegisterDataStreamObserver(dataStream);
     return dataStream;
 }
Esempio n. 11
0
        private void Form1_Load(object sender, System.EventArgs e)
	    {
		    timer1.Interval = 25;
		    timer1.Enabled = true;
            timer2.Interval = 10000;
            timer2.Enabled = true;
            webBrowser1.Navigate("http://com.center.wakayama-u.ac.jp/~s175022/englishTest15.html");
            _eyeXHost.Start();
            stream = _eyeXHost.CreateGazePointDataStream(GazePointDataMode.LightlyFiltered);
            stream2 = _eyeXHost.CreateEyePositionDataStream();
            stream.Next += OutputGazePoint;
            stream2.Next += OutputEyePosition;

            


        }