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; } }
/*************************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(); } } } }
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; } } }
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()); }
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; }
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(); }
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); }
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(); }
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(); })); }; }
/// <summary> /// Gets an eye position data stream. /// </summary> /// <returns>The data stream.</returns> public EyePositionDataStream CreateEyePositionDataStream() { var dataStream = new EyePositionDataStream(); RegisterDataStreamObserver(dataStream); return dataStream; }
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; }