// Used to send data from a VMWare VM running the EyeX software // with a Steelseries Sentry to a Mac OSX host over UDP. namespace MinimalGazeDataStream { using EyeXFramework; using System; using System.Net; using System.Net.Sockets; using System.Text; using Tobii.EyeX.Framework; public static class Program { public static void Main(string[] args) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPAddress addr = IPAddress.Parse("192.168.181.1"); IPEndPoint ep = new IPEndPoint(addr, 11249); using (var eyeXHost = new EyeXHost()) { // Create a data stream: lightly filtered gaze point data. // Other choices of data streams include EyePositionDataStream and FixationDataStream. using (var lightlyFilteredGazeDataStream = eyeXHost.CreateGazePointDataStream(GazePointDataMode.LightlyFiltered)) // using (var lightlyFilteredGazeDataStream = eyeXHost.CreateFixationDataStream(FixationDataMode.Sensitive)) { using (var eyeStream = eyeXHost.CreateEyePositionDataStream()) { // Start the EyeX host. eyeXHost.Start(); // Write the data to the console. lightlyFilteredGazeDataStream.Next += (s, e) => { string msg = String.Format("{{\"gaze\":[{0},{1}],\"time\": {2}}}", e.X, e.Y, e.Timestamp); byte[] sendbuf = Encoding.ASCII.GetBytes(msg); sock.SendTo(sendbuf, ep); // Console.WriteLine("G: {0}", msg); }; eyeStream.Next += (s, e) => { string msg = String.Format("{{\"leftEye\":[{0},{1},{2}],\"rightEye\":[{3},{4},{5}],\"time\": {6}}}", e.LeftEye.X, e.LeftEye.Y, e.LeftEye.Z, e.RightEye.X, e.RightEye.Y, e.RightEye.Z, e.Timestamp); byte[] sendbuf = Encoding.ASCII.GetBytes(msg); sock.SendTo(sendbuf, ep); // Console.WriteLine("E: {0}", msg); }; // Let it run until a key is pressed. Console.WriteLine("Listening for gaze data, press any key to exit..."); Console.In.Read(); } } } } } }