middleware/src/Communication/Server.cs
changeset 5 d40f84d77db4
parent 3 92f19af39024
child 8 e4e7db2435f8
--- a/middleware/src/Communication/Server.cs	Thu Mar 15 13:35:25 2012 +0100
+++ b/middleware/src/Communication/Server.cs	Mon Mar 19 10:21:56 2012 +0100
@@ -27,6 +27,9 @@
 using System.Windows.Media.Media3D;
 using Trakers.Tracking.Events;
 using System.Timers;
+using Trakers.Debug;
+using System.Resources;
+using System.Reflection;
 
 namespace Trakers.Communication
 {
@@ -34,29 +37,30 @@
     {
         //Serveur TUIO, provenant de la DLL TuioServer créé par Bespoke.
         private TuioServer server;
+        //Affichage de debug.
+        private DebugWindow debug;
 
         //Permet de savoir si un curseur pour la main gauche/droite a été créé.
         private bool leftHandCursorCreated;
         private bool rightHandCursorCreated;
         private bool messageCreated;
         private bool gestureLocked;
-
+        //Intervalle minimum entre les gestures.
         private int timerElapsing;
-
-        System.Timers.Timer _timer;
+        //Timer.
+        private System.Timers.Timer _timer;
+        //Gestionnaire de ressources.
+        private ResourceManager rm;
 
         /*
         * Constructeur : On initialise le serveur avec une adresse et un port, au début les curseurs
         * ne sont pas créés et on indique au ThreadPool une fonction de callback de manière à vérifier
         * s'il reçoit des notifications.
         */
-        public Server(String host, int port, int _timerElapsing)
+        public Server(String host, int port, int _timerElapsing, DebugWindow _debug)
         {
-            //On démarre le serveur TUIO.
-            server = new TuioServer(host, port);
-            //On initialise le threadPool (appelé toutes les N ms).
-            ThreadPool.QueueUserWorkItem(ThreadPoolCallback);
-
+            debug = _debug;
+            rm = new ResourceManager("Trakers.Properties.resources", Assembly.GetExecutingAssembly());
             //Au départ, aucune main n'est dans le champ de recherche et aucune gesture n'est détectée.
             leftHandCursorCreated = false;
             rightHandCursorCreated = false;
@@ -65,10 +69,22 @@
 
             timerElapsing = _timerElapsing;
 
-            //On instancie le timer à N ms.
-            _timer = new System.Timers.Timer(timerElapsing);
-            //Dès que le timer est expiré, on appelle _timer_Elapsed.
-            _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
+            try
+            {
+                //On démarre le serveur TUIO.
+                server = new TuioServer(host, port);
+                //On initialise le threadPool (appelé toutes les N ms).
+                ThreadPool.QueueUserWorkItem(ThreadPoolCallback);
+
+                //On instancie le timer à N ms.
+                _timer = new System.Timers.Timer(timerElapsing);
+                //Dès que le timer est expiré, on appelle _timer_Elapsed.
+                _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
+            }
+            catch (Exception)
+            {
+                debug.ExceptionLbl.Content = rm.GetString("serverCantStart");
+            }
         }
 
         /*
@@ -95,7 +111,6 @@
         */
         public void LeftHandTracked(object sender, LeftHandTrackedEventArgs e)
         {
-            return;
             //Si le curseur de la main gauche n'est pas créé, alors on le crée.
             if (!leftHandCursorCreated)
             {
@@ -114,19 +129,16 @@
         */
         public void RightHandTracked(object sender, RightHandTrackedEventArgs e)
         {
-            return;
             //Si le curseur de la main droite n'est pas créé, alors on le crée.
             if (!rightHandCursorCreated)
             {
                 server.AddTuioCursor(1, SkeletonPointToPoint3D(e.handJoint.Position));
-                //server.AddTuioString(1, "BOO");
                 rightHandCursorCreated = true;
             }
             //S'il existe, on le met simplement à jour.
             else
             {
                 server.UpdateTuioCursor(1, SkeletonPointToPoint3D(e.handJoint.Position));
-                //server.UpdateTuioString(1, "BOO");
             }
         }
 
@@ -135,7 +147,6 @@
         */
         public void LeftHandQuit(object sender, LeftHandQuitEventArgs e)
         {
-            return;
             //Si le curseur de la main gauche existe, alors on le supprime.
             if (leftHandCursorCreated)
             {
@@ -149,12 +160,10 @@
         */
         public void RightHandQuit(object sender, RightHandQuitEventArgs e)
         {
-            return;
             //Si le curseur de la main droite existe, alors on le supprime.
             if (rightHandCursorCreated)
             {
                 server.DeleteTuioCursor(1);
-                //server.DeleteTuioString(1);
                 rightHandCursorCreated = false;
             }
         }
@@ -191,8 +200,6 @@
             else
                 hand = "BOTH";
 
-            Console.Out.WriteLine(pushPull + "-" + hand);
-
             GesturePerformed(pushPull + "-" + hand);
         }
 
@@ -210,7 +217,7 @@
                 if (!messageCreated)
                 {
                     messageCreated = true;
-                    server.AddTuioString(1, code);
+                    server.AddTuioString(2, code);
                     //On démarre le timer.
                     _timer.Start();
                 }
@@ -246,7 +253,7 @@
                 {
                     //On débloque la détection de gesture et on supprime l'objet envoyant les messages OSC de gesture.
                     messageCreated = false;
-                    server.DeleteTuioString(1);
+                    server.DeleteTuioString(2);
                 }
             }
         }