--- 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);
}
}
}