diff --git a/GazeWebSocketServer/GazeServer.cs b/GazeWebSocketServer/GazeServer.cs
index f431e96..ad87bcd 100644
--- a/GazeWebSocketServer/GazeServer.cs
+++ b/GazeWebSocketServer/GazeServer.cs
@@ -11,6 +11,7 @@ namespace GazeWebSocketServer
class GazeServer
{
private WebSocketServer wssv;
+ public Boolean isRunning = false;
public GazeServer(Int32 port, String endpoint)
{
wssv = new WebSocketServer(port);
@@ -20,6 +21,7 @@ namespace GazeWebSocketServer
public void Start()
{
wssv.Start();
+ isRunning = true;
}
public void Publish(GazeData gazeData)
diff --git a/GazeWebSocketServer/GazeWebSocketServer.csproj b/GazeWebSocketServer/GazeWebSocketServer.csproj
index 3b325fb..d5600a9 100644
--- a/GazeWebSocketServer/GazeWebSocketServer.csproj
+++ b/GazeWebSocketServer/GazeWebSocketServer.csproj
@@ -39,6 +39,8 @@
+
+
diff --git a/GazeWebSocketServer/Program.cs b/GazeWebSocketServer/Program.cs
index 045f672..a12ad77 100644
--- a/GazeWebSocketServer/Program.cs
+++ b/GazeWebSocketServer/Program.cs
@@ -5,6 +5,8 @@ using WebSocketSharp;
using WebSocketSharp.Server;
using Tobii.Research;
using TrackerBridge;
+using System.Windows.Forms;
+using System.Drawing;
namespace GazeWebSocketServer
{
@@ -16,21 +18,48 @@ namespace GazeWebSocketServer
ConfigurationData.InitializeUnexistingWithDefaults();
ConfigurationData config = ConfigurationData.ParseToObject();
- TobiiEyeTracker tobiiEyeTracker = new TobiiEyeTracker(config.TrackerSerialNumber);
- tobiiEyeTracker.ConnectionEvent += OnConnectionEstablished;
- tobiiEyeTracker.ConnectionTimeout += OnConnectionTimeout;
- tobiiEyeTracker.GazeDataAvailable += OnGazeDataAvailable;
- tobiiEyeTracker.Connect();
+ if (args[0] == "-d")
+ {
+ Task.Run(() => SimulateGazeData(300));
+ }
+ else
+ {
+ TobiiEyeTracker tobiiEyeTracker = new TobiiEyeTracker(config.TrackerSerialNumber);
+ tobiiEyeTracker.ConnectionEvent += OnConnectionEstablished;
+ tobiiEyeTracker.ConnectionTimeout += OnConnectionTimeout;
+ tobiiEyeTracker.GazeDataAvailable += OnGazeDataAvailable;
+ tobiiEyeTracker.Connect();
+ }
gazeServer = new GazeServer(config.WebSocketPort, config.WebSocketEndpoint);
gazeServer.Start();
Console.ReadLine();
}
+ private static void SimulateGazeData(UInt16 frequencyHz)
+ {
+ TimeSpan period = new TimeSpan(Convert.ToInt64((1.0 / frequencyHz) * 10e7));
+ while (true)
+ {
+ DateTime start = DateTime.Now;
+ Point mousePosition = Control.MousePosition;
+ GazeData data = new GazeData(mousePosition.X, mousePosition.Y, mousePosition.X, mousePosition.Y, 0, 0);
+ if (gazeServer != null && gazeServer.isRunning)
+ {
+ gazeServer.Publish(data);
+ }
+ TimeSpan delay = period - (DateTime.Now - start);
+ Thread.Sleep(delay.Ticks >= 0 ? delay.Milliseconds : 0);
+ }
+ }
+
private static void OnGazeDataAvailable(TobiiEyeTracker sender, GazeData data)
{
Console.WriteLine(data);
- gazeServer.Publish(data);
+ if (gazeServer != null && gazeServer.isRunning)
+ {
+ gazeServer.Publish(data);
+ }
}
private static void OnConnectionTimeout(TobiiEyeTracker sender)
diff --git a/TrackerBridge/GazeDataProcessor.cs b/TrackerBridge/GazeDataProcessor.cs
index ca6545a..2817f09 100644
--- a/TrackerBridge/GazeDataProcessor.cs
+++ b/TrackerBridge/GazeDataProcessor.cs
@@ -21,10 +21,10 @@ namespace TrackerBridge
public GazeData Extract(GazeDataEventArgs e)
{
- GazeData data = new GazeData(e.LeftEye.GazePoint.PositionOnDisplayArea.X*screenWidth,
- e.LeftEye.GazePoint.PositionOnDisplayArea.Y*screenHeight,
- e.RightEye.GazePoint.PositionOnDisplayArea.X*screenWidth,
- e.RightEye.GazePoint.PositionOnDisplayArea.Y*screenHeight,
+ GazeData data = new GazeData(e.LeftEye.GazePoint.PositionOnDisplayArea.X * screenWidth,
+ e.LeftEye.GazePoint.PositionOnDisplayArea.Y * screenHeight,
+ e.RightEye.GazePoint.PositionOnDisplayArea.X * screenWidth,
+ e.RightEye.GazePoint.PositionOnDisplayArea.Y * screenHeight,
e.DeviceTimeStamp,
e.SystemTimeStamp);
return data;