Middleware :
Connection between middleware and front idill established with websockets.
--- a/middleware/Communication/Communication.csproj Thu Apr 12 15:33:25 2012 +0200
+++ b/middleware/Communication/Communication.csproj Thu Apr 19 11:53:06 2012 +0200
@@ -31,6 +31,9 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="Fleck">
+ <HintPath>..\lib\Fleck.dll</HintPath>
+ </Reference>
<Reference Include="Microsoft.Kinect, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\lib\Microsoft.Kinect.dll</HintPath>
@@ -48,8 +51,10 @@
</Reference>
</ItemGroup>
<ItemGroup>
+ <Compile Include="Server.cs" />
+ <Compile Include="TUIOServer.cs" />
+ <Compile Include="WSServer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Server.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
--- a/middleware/Communication/Server.cs Thu Apr 12 15:33:25 2012 +0200
+++ b/middleware/Communication/Server.cs Thu Apr 19 11:53:06 2012 +0200
@@ -16,93 +16,27 @@
* Auteur : alexandre.bastien@iri.centrepompidou.fr
*
* Fonctionnalités : Reçoit des notifications du module sous-module Tracking.
- * Traduit les notifications sous forme de messages OSC et les envoie au Front Atelier.
- * Forme des messages :
- * - Notification de main dans le champ de recherche : Point3D indiquant la position de la main dans l'espace.
+ * Centralise les deux serveurs TUIO et WS et permettent aux autres modules de faire appel
+ * à eux via cette classe.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
-using System.IO;
-using System.Net;
-using System.Net.Sockets;
-using System.Threading;
-using Tuio;
-using System.Windows;
-using Microsoft.Kinect;
using System.Windows.Media.Media3D;
-using System.Timers;
-using System.Resources;
-using System.Reflection;
namespace Trakers.Communication
{
public class Server
{
- //Serveur TUIO, provenant de la DLL TuioServer créé par Bespoke.
- private TuioServer server;
+ private TUIOServer TUIOserver;
+ private WSServer WSserver;
- //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, modLocked;
- //Intervalle minimum entre les gestures.
- private int timerElapsing;
- //Timer.
- private System.Timers.Timer _timer;
- //Dernier code envoyé.
- private String lastCode;
-
- /*
- * 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)
{
- //Au départ, aucune main n'est dans le champ de recherche et aucune gesture n'est détectée.
- leftHandCursorCreated = false;
- rightHandCursorCreated = false;
- messageCreated = false;
- gestureLocked = false;
- modLocked = false;
- lastCode = "";
-
- timerElapsing = _timerElapsing;
-
- //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);
- }
-
- /*
- * Getter du serveur.
- */
- public TuioServer getServer()
- {
- return server;
- }
-
- /*
- * Méthode appelée à l'expiration du timer pour les gestures et modes.
- */
- public void _timer_Elapsed(object sender, ElapsedEventArgs e)
- {
- //On débloque la détection de gesture.
- gestureLocked = false;
- //On débloque la notification de nouveau mode.
- modLocked = false;
- //On arrête le timer.
- _timer.Stop();
+ TUIOserver = new TUIOServer(host, 8080, _timerElapsing);
+ WSserver = new WSServer(host, 8090, _timerElapsing);
}
/*
@@ -110,15 +44,8 @@
*/
public void LeftHandTracked(Point3D pt)
{
- //Si le curseur de la main gauche n'est pas créé, alors on le crée.
- if (!leftHandCursorCreated)
- {
- server.AddTuioCursor(0, pt);
- leftHandCursorCreated = true;
- }
- //S'il existe, on le met simplement à jour.
- else
- server.UpdateTuioCursor(0, pt);
+ TUIOserver.LeftHandTracked(pt);
+ WSserver.LeftHandTracked(pt);
}
/*
@@ -126,15 +53,8 @@
*/
public void RightHandTracked(Point3D pt)
{
- //Si le curseur de la main droite n'est pas créé, alors on le crée.
- if (!rightHandCursorCreated)
- {
- server.AddTuioCursor(1, pt);
- rightHandCursorCreated = true;
- }
- //S'il existe, on le met simplement à jour.
- else
- server.UpdateTuioCursor(1, pt);
+ TUIOserver.RightHandTracked(pt);
+ WSserver.RightHandTracked(pt);
}
/*
@@ -142,12 +62,8 @@
*/
public void LeftHandQuit()
{
- //Si le curseur de la main gauche existe, alors on le supprime.
- if (leftHandCursorCreated)
- {
- server.DeleteTuioCursor(0);
- leftHandCursorCreated = false;
- }
+ TUIOserver.LeftHandQuit();
+ WSserver.LeftHandQuit();
}
/*
@@ -155,12 +71,8 @@
*/
public void RightHandQuit()
{
- //Si le curseur de la main droite existe, alors on le supprime.
- if (rightHandCursorCreated)
- {
- server.DeleteTuioCursor(1);
- rightHandCursorCreated = false;
- }
+ TUIOserver.RightHandQuit();
+ WSserver.RightHandQuit();
}
/*
@@ -168,24 +80,8 @@
*/
public void GesturePerformed(String code)
{
- //Si le code vient d'être envoyé, on passe.
- if (lastCode.Equals(code))
- return;
- lastCode = code;
- //Si une gesture a été effectuée, on bloque un certain temps.
- if (!gestureLocked)
- {
- gestureLocked = true;
-
- //On crée un message contenant le code à envoyer.
- if (!messageCreated)
- {
- messageCreated = true;
- server.AddTuioString(2, code);
- //On démarre le timer.
- _timer.Start();
- }
- }
+ TUIOserver.GesturePerformed(code);
+ WSserver.GesturePerformed(code);
}
/*
@@ -193,63 +89,8 @@
*/
public void ModeNotification(String code)
{
- //Si le code vient d'être envoyé, on passe.
- if (lastCode.Equals(code))
- return;
- lastCode = code;
- //Si on a été notifié.
- if (!modLocked)
- {
- modLocked = true;
-
- //On crée un message contenant le code à envoyer.
- if (!messageCreated)
- {
- messageCreated = true;
- server.AddTuioString(2, code);
- //On démarre le timer.
- _timer.Start();
- }
- }
- }
-
- /*
- * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications.
- * Il est à noter que si le temps de rafraîchissement des trop rapide, les messages n'ont pas
- * le temps d'être envoyés.
- */
- private void ThreadPoolCallback(Object threadContext)
- {
- while (true)
- {
- //On initialise le message OSC.
- server.InitFrame();
- //On l'envoie au client (au host et au port spécifiés dans le constructeur).
- server.CommitFrame();
- //On attend 25 ms.
- Thread.Sleep(25);
-
- //Si une gesture a été effectuée et que le délai d'attente est expiré.
- if (messageCreated && !gestureLocked && !modLocked)
- {
- //On débloque la détection de gesture et on supprime l'objet envoyant les messages OSC de gesture.
- messageCreated = false;
- server.DeleteTuioString(2);
- }
- }
- }
-
- /*
- * Getters et Setters
- */
- public void setTimerElapsing(int _timerElapsing)
- {
- timerElapsing = _timerElapsing;
- }
-
- public int getTimerElapsing()
- {
- return timerElapsing;
+ TUIOserver.ModeNotification(code);
+ WSserver.ModeNotification(code);
}
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/middleware/Communication/TUIOServer.cs Thu Apr 19 11:53:06 2012 +0200
@@ -0,0 +1,257 @@
+/*
+* This file is part of the TraKERS\Middleware package.
+*
+* (c) IRI <http://www.iri.centrepompidou.fr/>
+*
+* For the full copyright and license information, please view the LICENSE
+* file that was distributed with this source code.
+*/
+
+/*
+ * Projet : TraKERS
+ * Module : MIDDLEWARE
+ * Sous-Module : Communication
+ * Classe : TUIOServer
+ *
+ * Auteur : alexandre.bastien@iri.centrepompidou.fr
+ *
+ * Fonctionnalités : Reçoit des notifications du module sous-module Tracking.
+ * Traduit les notifications sous forme de messages OSC et les envoie au Front Atelier.
+ * Forme des messages :
+ * - Notification de main dans le champ de recherche : Point3D indiquant la position de la main dans l'espace.
+ * - Notification de gesture/mode : String.
+ * - Paramètres de config : String.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Net;
+using System.Net.Sockets;
+using System.Threading;
+using Tuio;
+using System.Windows;
+using Microsoft.Kinect;
+using System.Windows.Media.Media3D;
+using System.Timers;
+using System.Resources;
+using System.Reflection;
+
+namespace Trakers.Communication
+{
+ public class TUIOServer
+ {
+ //Serveur TUIO, provenant de la DLL TuioServer créé par Bespoke.
+ private TuioServer server;
+
+ //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, modLocked;
+ //Intervalle minimum entre les gestures.
+ private int timerElapsing;
+ //Timer.
+ private System.Timers.Timer _timer;
+ //Dernier code envoyé.
+ private String lastCode;
+
+ /*
+ * 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 TUIOServer(String host, int port, int _timerElapsing)
+ {
+ //Au départ, aucune main n'est dans le champ de recherche et aucune gesture n'est détectée.
+ leftHandCursorCreated = false;
+ rightHandCursorCreated = false;
+ messageCreated = false;
+ gestureLocked = false;
+ modLocked = false;
+ lastCode = "";
+
+ timerElapsing = _timerElapsing;
+
+ //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);
+ }
+
+ /*
+ * Getter du serveur.
+ */
+ public TuioServer getServer()
+ {
+ return server;
+ }
+
+ /*
+ * Méthode appelée à l'expiration du timer pour les gestures et modes.
+ */
+ public void _timer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ //On débloque la détection de gesture.
+ gestureLocked = false;
+ //On débloque la notification de nouveau mode.
+ modLocked = false;
+ //On arrête le timer.
+ _timer.Stop();
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main gauche entrée dans le champ.
+ */
+ public void LeftHandTracked(Point3D pt)
+ {
+ //Si le curseur de la main gauche n'est pas créé, alors on le crée.
+ if (!leftHandCursorCreated)
+ {
+ server.AddTuioCursor(0, pt);
+ leftHandCursorCreated = true;
+ }
+ //S'il existe, on le met simplement à jour.
+ else
+ server.UpdateTuioCursor(0, pt);
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main droite entrée dans le champ.
+ */
+ public void RightHandTracked(Point3D pt)
+ {
+ //Si le curseur de la main droite n'est pas créé, alors on le crée.
+ if (!rightHandCursorCreated)
+ {
+ server.AddTuioCursor(1, pt);
+ rightHandCursorCreated = true;
+ }
+ //S'il existe, on le met simplement à jour.
+ else
+ server.UpdateTuioCursor(1, pt);
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main gauche sortie du champ.
+ */
+ public void LeftHandQuit()
+ {
+ //Si le curseur de la main gauche existe, alors on le supprime.
+ if (leftHandCursorCreated)
+ {
+ server.DeleteTuioCursor(0);
+ leftHandCursorCreated = false;
+ }
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main droite sortie du champ.
+ */
+ public void RightHandQuit()
+ {
+ //Si le curseur de la main droite existe, alors on le supprime.
+ if (rightHandCursorCreated)
+ {
+ server.DeleteTuioCursor(1);
+ rightHandCursorCreated = false;
+ }
+ }
+
+ /*
+ * Méthode appelée lorsqu'une gesture a été détectée et que l'événement approprié a été lancé.
+ */
+ public void GesturePerformed(String code)
+ {
+ //Si le code vient d'être envoyé, on passe.
+ if (lastCode.Equals(code))
+ return;
+ lastCode = code;
+ //Si une gesture a été effectuée, on bloque un certain temps.
+ if (!gestureLocked)
+ {
+ gestureLocked = true;
+
+ //On crée un message contenant le code à envoyer.
+ if (!messageCreated)
+ {
+ messageCreated = true;
+ server.AddTuioString(2, code);
+ //On démarre le timer.
+ _timer.Start();
+ }
+ }
+ }
+
+ /*
+ * Méthode appelée lorsqu'on doit entrer dans un autre mode.
+ */
+ public void ModeNotification(String code)
+ {
+ //Si le code vient d'être envoyé, on passe.
+ if (lastCode.Equals(code))
+ return;
+ lastCode = code;
+ //Si on a été notifié.
+ if (!modLocked)
+ {
+ modLocked = true;
+
+ //On crée un message contenant le code à envoyer.
+ if (!messageCreated)
+ {
+ messageCreated = true;
+ server.AddTuioString(2, code);
+ //On démarre le timer.
+ _timer.Start();
+ }
+ }
+ }
+
+ /*
+ * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications.
+ * Il est à noter que si le temps de rafraîchissement des trop rapide, les messages n'ont pas
+ * le temps d'être envoyés.
+ */
+ private void ThreadPoolCallback(Object threadContext)
+ {
+ while (true)
+ {
+ //On initialise le message OSC.
+ server.InitFrame();
+ //On l'envoie au client (au host et au port spécifiés dans le constructeur).
+ server.CommitFrame();
+ //On attend 25 ms.
+ Thread.Sleep(25);
+
+ //Si une gesture a été effectuée et que le délai d'attente est expiré.
+ if (messageCreated && !gestureLocked && !modLocked)
+ {
+ //On débloque la détection de gesture et on supprime l'objet envoyant les messages OSC de gesture.
+ messageCreated = false;
+ server.DeleteTuioString(2);
+ }
+ }
+ }
+
+ /*
+ * Getters et Setters
+ */
+ public void setTimerElapsing(int _timerElapsing)
+ {
+ timerElapsing = _timerElapsing;
+ }
+
+ public int getTimerElapsing()
+ {
+ return timerElapsing;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/middleware/Communication/WSServer.cs Thu Apr 19 11:53:06 2012 +0200
@@ -0,0 +1,294 @@
+/*
+* This file is part of the TraKERS\Middleware package.
+*
+* (c) IRI <http://www.iri.centrepompidou.fr/>
+*
+* For the full copyright and license information, please view the LICENSE
+* file that was distributed with this source code.
+*/
+
+/*
+ * Projet : TraKERS
+ * Module : MIDDLEWARE
+ * Sous-Module : Communication
+ * Classe : WSServer
+ *
+ * Auteur : alexandre.bastien@iri.centrepompidou.fr
+ *
+ * Fonctionnalités : Reçoit des notifications du module sous-module Tracking.
+ * Traduit les notifications sous forme de strings et les envoie au Front IDILL via WebSocket.
+ * Forme des messages :
+ * - Notification de main dans le champ de recherche : Point3D converti en String indiquant la position de la main dans l'espace.
+ * - Notification de gesture/mode : String.
+ * - Paramètres de config : String.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using Fleck;
+using System.Timers;
+using System.Windows.Media.Media3D;
+
+namespace Trakers.Communication
+{
+ public class WSServer
+ {
+ //Server WebSocket.
+ WebSocketServer server;
+ List<IWebSocketConnection> allSockets;
+
+ //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, modLocked;
+ //Intervalle minimum entre les gestures.
+ private int timerElapsing;
+ //Timer.
+ private System.Timers.Timer _timer;
+ //Dernier code envoyé.
+ private String lastCode;
+ //Messages envoyés en WS.
+ private String rightHandMessage, leftHandMessage, gestureMessage;
+ //Messages précédents
+ private String prevRightHandMessage, prevLeftHandMessage, prevGestureMessage;
+
+ /*
+ * 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 WSServer(String host, int port, int _timerElapsing)
+ {
+ FleckLog.Level = LogLevel.Debug;
+ allSockets = new List<IWebSocketConnection>();
+ server = new WebSocketServer(port, "ws://" + host + ":" + port);
+
+ //Au départ, aucune main n'est dans le champ de recherche et aucune gesture n'est détectée.
+ leftHandCursorCreated = false;
+ rightHandCursorCreated = false;
+ messageCreated = false;
+ gestureLocked = false;
+ modLocked = false;
+ lastCode = "";
+
+ timerElapsing = _timerElapsing;
+
+ rightHandMessage = leftHandMessage = gestureMessage = "";
+
+ //On démarre le serveur WebSocket.
+ server.Start(socket =>
+ {
+ socket.OnOpen = () =>
+ {
+ Console.WriteLine("Open!");
+ allSockets.Add(socket);
+ };
+ socket.OnClose = () =>
+ {
+ Console.WriteLine("Close!");
+ allSockets.Remove(socket);
+ };
+ /*socket.OnMessage = message =>
+ {
+ Console.WriteLine(message);
+ allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
+ };*/
+ });
+
+ //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);
+
+ /*var input = Console.ReadLine();
+ while (input != "exit")
+ {
+ foreach (var socket in allSockets.ToList())
+ {
+ socket.Send(input);
+ }
+ input = Console.ReadLine();
+ }*/
+ }
+
+ /*
+ * Méthode appelée à l'expiration du timer pour les gestures et modes.
+ */
+ public void _timer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ //On débloque la détection de gesture.
+ gestureLocked = false;
+ //On débloque la notification de nouveau mode.
+ modLocked = false;
+ //On arrête le timer.
+ _timer.Stop();
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main gauche entrée dans le champ.
+ */
+ public void LeftHandTracked(Point3D pt)
+ {
+ leftHandMessage = "0-" + pt.X + ";" + pt.Y + ";" + pt.Z;
+ //Si le curseur de la main gauche n'est pas créé, alors on le crée.
+ if (!leftHandCursorCreated)
+ leftHandCursorCreated = true;
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main droite entrée dans le champ.
+ */
+ public void RightHandTracked(Point3D pt)
+ {
+ rightHandMessage = "1-" + pt.X + ";" + pt.Y + ";" + pt.Z;
+ //Si le curseur de la main droite n'est pas créé, alors on le crée.
+ if (!rightHandCursorCreated)
+ rightHandCursorCreated = true;
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main gauche sortie du champ.
+ */
+ public void LeftHandQuit()
+ {
+ leftHandMessage = "";
+ //Si le curseur de la main gauche existe, alors on le supprime.
+ if (leftHandCursorCreated)
+ leftHandCursorCreated = false;
+ }
+
+ /*
+ * Méthode appelée lors d'une notification de type : main droite sortie du champ.
+ */
+ public void RightHandQuit()
+ {
+ rightHandMessage = "";
+ //Si le curseur de la main droite existe, alors on le supprime.
+ if (rightHandCursorCreated)
+ rightHandCursorCreated = false;
+ }
+
+ /*
+ * Méthode appelée lorsqu'une gesture a été détectée et que l'événement approprié a été lancé.
+ */
+ public void GesturePerformed(String code)
+ {
+ //Si le code vient d'être envoyé, on passe.
+ if (lastCode.Equals(code))
+ return;
+ lastCode = code;
+ //Si une gesture a été effectuée, on bloque un certain temps.
+ if (!gestureLocked)
+ {
+ gestureLocked = true;
+
+ //On crée un message contenant le code à envoyer.
+ if (!messageCreated)
+ {
+ messageCreated = true;
+ gestureMessage = "2-" + code;
+ //On démarre le timer.
+ _timer.Start();
+ }
+ }
+ }
+
+ /*
+ * Méthode appelée lorsqu'on doit entrer dans un autre mode.
+ */
+ public void ModeNotification(String code)
+ {
+ //Si le code vient d'être envoyé, on passe.
+ if (lastCode.Equals(code))
+ return;
+ lastCode = code;
+ //Si on a été notifié.
+ if (!modLocked)
+ {
+ modLocked = true;
+
+ //On crée un message contenant le code à envoyer.
+ if (!messageCreated)
+ {
+ messageCreated = true;
+ gestureMessage = "2-" + code;
+ //On démarre le timer.
+ _timer.Start();
+ }
+ }
+ }
+
+ /*
+ * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications.
+ * Il est à noter que si le temps de rafraîchissement des trop rapide, les messages n'ont pas
+ * le temps d'être envoyés.
+ */
+ private void ThreadPoolCallback(Object threadContext)
+ {
+ while (true)
+ {
+ //S'il existe un message.
+ if (gestureMessage != null && !gestureMessage.Equals("") && !gestureMessage.Equals(prevGestureMessage))
+ {
+ //On l'envoie au client (au host et au port spécifiés dans le constructeur).
+ foreach (var socket in allSockets.ToList())
+ {
+ socket.Send(gestureMessage);
+ prevGestureMessage = gestureMessage;
+ }
+ }
+ //Si la main gauche est détectée.
+ if (leftHandMessage != null && !leftHandMessage.Equals("") && !leftHandMessage.Equals(prevLeftHandMessage))
+ {
+ //On l'envoie au client (au host et au port spécifiés dans le constructeur).
+ foreach (var socket in allSockets.ToList())
+ {
+ socket.Send(leftHandMessage);
+ prevLeftHandMessage = leftHandMessage;
+ }
+ }
+ //Si la main droite est détectée.
+ if (rightHandMessage != null && !rightHandMessage.Equals("") && !rightHandMessage.Equals(prevRightHandMessage))
+ {
+ //On l'envoie au client (au host et au port spécifiés dans le constructeur).
+ foreach (var socket in allSockets.ToList())
+ {
+ socket.Send(rightHandMessage);
+ prevRightHandMessage = rightHandMessage;
+ }
+ }
+
+ //On attend 25 ms.
+ Thread.Sleep(25);
+
+ //Si une gesture a été effectuée et que le délai d'attente est expiré.
+ if (messageCreated && !gestureLocked && !modLocked)
+ {
+ //On débloque la détection de gesture et on supprime l'objet envoyant les messages OSC de gesture.
+ messageCreated = false;
+ gestureMessage = "";
+ }
+ }
+ }
+
+ /*
+ * Getters et Setters
+ */
+ public void setTimerElapsing(int _timerElapsing)
+ {
+ timerElapsing = _timerElapsing;
+ }
+
+ public int getTimerElapsing()
+ {
+ return timerElapsing;
+ }
+ }
+}
--- a/middleware/Debug/App.config Thu Apr 12 15:33:25 2012 +0200
+++ b/middleware/Debug/App.config Thu Apr 19 11:53:06 2012 +0200
@@ -53,7 +53,7 @@
<value>127.0.0.1</value>
</setting>
<setting name="connexionPort" serializeAs="String">
- <value>80</value>
+ <value>8080</value>
</setting>
<setting name="timerElapsing" serializeAs="String">
<value>1000</value>
Binary file middleware/lib/Fleck.dll has changed