--- a/middleware/Debug/DebugWindow.xaml.cs Thu Jun 21 17:51:27 2012 +0200
+++ b/middleware/Debug/DebugWindow.xaml.cs Fri Jun 29 15:37:26 2012 +0200
@@ -32,6 +32,7 @@
using System.Timers;
using System.Configuration;
using System.IO;
+using System.Collections.Specialized;
namespace Trakers.Debug
{
@@ -41,22 +42,8 @@
private ResourceManager rm;
//Paramètres du serveur TUIO.
- private string connexionHost;
- private int connexionPort;
- //Temps de rafraichissement pour le timer (Détection de gesture dans le serveur TUIO).
- private int timerElapsing;
- //Distances min/max délimitant le champ de recherche.
- private float minDistHands;
- private float maxDistHands;
- private float minDist;
- private float maxDist;
- private float zeroPoint;
- //Paramètres de la mosaïque.
- private int imagesToShow;
- //Paramètres de la recherche par courbes.
- private int takenPoints;
- private int directionChangeTresholdXY;
- private float directionChangeTresholdZ;
+ private OrderedDictionary config;
+
//Images
private String imgLocation;
@@ -72,8 +59,6 @@
private bool closing;
//Indique si l'image doit être raffraichie.
private Boolean refreshImage;
- //Fenêtre de paramètres
- private DebugParameters param;
/*
* Constructeur : Affiche la fenêtre de debug en lui passant en paramètre une instanciation de la
@@ -86,6 +71,8 @@
imgLocation = "Imgs";
+ config = new OrderedDictionary();
+
//On fait appel au gestionnaire de ressources.
rm = new ResourceManager("Trakers.Debug.Properties.Resources", Assembly.GetExecutingAssembly());
//On tente de charger les paramètres du fichier params.ini.
@@ -93,44 +80,33 @@
if (!loadParameters())
{
ExceptionLbl.Content = rm.GetString("loadParametersFail");
+ config.Clear();
//Distances de détection des mains par défaut pour la recherche (ici de 1m à 2m de la Kinect).
- minDistHands = 1.0f;
- maxDistHands = 1.5f;
- minDist = 1.0f;
- maxDist = 4.0f;
- zeroPoint = 1.7f;
- connexionHost = "127.0.0.1";
- connexionPort = 80;
- timerElapsing = 1000;
- imagesToShow = 20;
- takenPoints = 10;
- directionChangeTresholdXY = 10;
- directionChangeTresholdZ = 0.01f;
- /*minDistHands = 1.0f;
- maxDistHands = 5.5f;
- minDist = 1.0f;
- maxDist = 6.0f;
- zeroPoint = 1.7f;
- connexionHost = "127.0.0.1";
- connexionPort = 80;
- timerElapsing = 1000;
- imagesToShow = 25;
- takenPoints = 10;
- directionChangeTresholdXY = 10;
- directionChangeTresholdZ = 0.01f;*/
+ config.Add("minDistHands", 1.0f);
+ config.Add("maxDistHands", 1.5f);
+ config.Add("minDist", 1.0f);
+ config.Add("maxDist", 4.0f);
+ config.Add("zeroPoint", 1.7f);
+ config.Add("tuioConnexionHost", "127.0.0.1");
+ config.Add("tuioConnexionPort", 80);
+ config.Add("wsConnexionHost", "127.0.0.1");
+ config.Add("wsConnexionPort", 81);
+ config.Add("tuioTimerElapsing", 1000);
+ config.Add("wsTimerElapsing", 1000);
+ config.Add("imagesToShow", 20);
+ config.Add("takenPoints", 10);
+ config.Add("directionChangeTresholdXY", 10);
+ config.Add("directionChangeTresholdZ", 0.01f);
}
- //On charge la fenêtre de paramètres.
- param = new DebugParameters(this);
-
//kinectMain = main;
on = true;
closing = false;
refreshImage = true;
try
{
- //On instancie le timer à N ms.
- _timer = new System.Timers.Timer(timerElapsing);
+ //On instancie les timers à N ms.
+ _timer = new System.Timers.Timer((int)config["tuioTimerElapsing"]);
//Dès que le timer est expiré, on appelle _timer_Elapsed.
_timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
}
@@ -163,7 +139,7 @@
}
/*
- * Méthode appelée à l'expiration du timer pour les gestures et modes.
+ * Méthode appelée à l'expiration du timer ws pour les gestures et modes.
*/
public void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
@@ -268,64 +244,6 @@
}
}
- /*public void showCorrect(bool C1, bool C2, bool C3, bool C4, bool C5, bool C6, bool C7, bool C8, bool C9, bool C10, bool C11)
- {
- if(C1)
- R0.Fill = System.Windows.Media.Brushes.Blue;
- else
- R0.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C2)
- R1.Fill = System.Windows.Media.Brushes.Blue;
- else
- R1.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C3)
- R2.Fill = System.Windows.Media.Brushes.Blue;
- else
- R2.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C4)
- R3.Fill = System.Windows.Media.Brushes.Blue;
- else
- R3.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C5)
- R4.Fill = System.Windows.Media.Brushes.Blue;
- else
- R4.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C6)
- R5.Fill = System.Windows.Media.Brushes.Blue;
- else
- R5.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C7)
- R6.Fill = System.Windows.Media.Brushes.Blue;
- else
- R6.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C8)
- R7.Fill = System.Windows.Media.Brushes.Blue;
- else
- R7.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C9)
- R8.Fill = System.Windows.Media.Brushes.Blue;
- else
- R8.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C10)
- R9.Fill = System.Windows.Media.Brushes.Blue;
- else
- R9.Fill = System.Windows.Media.Brushes.DarkGray;
-
- if (C11)
- R10.Fill = System.Windows.Media.Brushes.Blue;
- else
- R10.Fill = System.Windows.Media.Brushes.DarkGray;
- }*/
-
/*
* Affiche la distance de l'utilisateur dans le rendu visuel.
* Sous forme de nombre en m et de rectangles changeant de couleur en fonction de la distance.
@@ -652,21 +570,6 @@
}
/*
- * Méthode associée à l'événement : Ouvrir la fenêtre de paramétrage via le menu.
- */
- private void Parameters_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- param.ShowDialog();
- }
- catch (Exception)
- {
- ExceptionLbl.Content = rm.GetString("loadParamFail");
- }
- }
-
- /*
* Méthode associée à l'événement : Quitter via le menu.
*/
public void Quit_Click(object sender, RoutedEventArgs e)
@@ -773,62 +676,65 @@
}
/*
- * Méthode de chargement des paramètres (position du champ de recherche...).
- */
- /*public bool loadParameters()
- {
- try
- {
- minDistHands = Properties.Settings.Default.searchMinDistance;
- maxDistHands = Properties.Settings.Default.searchMaxDistance;
- minDist = Properties.Settings.Default.minDistance;
- maxDist = Properties.Settings.Default.maxDistance;
- zeroPoint = Properties.Settings.Default.zeroPoint;
- connexionHost = Properties.Settings.Default.connexionHost;
- connexionPort = Properties.Settings.Default.connexionPort;
- timerElapsing = Properties.Settings.Default.timerElapsing;
- imagesToShow = Properties.Settings.Default.imagesToShow;
- takenPoints = Properties.Settings.Default.takenPoints;
- directionChangeTresholdXY = Properties.Settings.Default.directionChangeTresholdXY;
- directionChangeTresholdZ = Properties.Settings.Default.directionChangeTresholdZ;
- }
- catch (Exception)
- {
- return false;
- }
-
- if (maxDistHands <= 0f || minDistHands <= 0f || maxDistHands > maxDist || minDistHands > maxDist ||
- minDistHands >= maxDistHands || zeroPoint < maxDistHands || minDistHands > minDist ||
- zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0 || imagesToShow < 1 ||
- takenPoints <= 0 || directionChangeTresholdXY < 0 || directionChangeTresholdZ < 0)
- {
- ExceptionLbl.Content = rm.GetString("loadParametersIncorrect");
- return false;
- }
- return true;
- }*/
-
+ * Méthode de chargement des paramètres via le fichier de configuration.
+ */
public bool loadParameters()
{
try
{
+ //On lit le fichier de config.
String[] lines = System.IO.File.ReadAllLines("config.txt");
- minDistHands = float.Parse(lines[0].Split(':')[1]);
- minDist = float.Parse(lines[1].Split(':')[1]);
- connexionHost = lines[2].Split(':')[1];
- timerElapsing = int.Parse(lines[3].Split(':')[1]);
- takenPoints = int.Parse(lines[4].Split(':')[1]);
- directionChangeTresholdXY = int.Parse(lines[5].Split(':')[1]);
- connexionPort = int.Parse(lines[6].Split(':')[1]);
- imagesToShow = int.Parse(lines[7].Split(':')[1]);
- maxDistHands = float.Parse(lines[8].Split(':')[1]);
- maxDist = float.Parse(lines[9].Split(':')[1]);
- zeroPoint = float.Parse(lines[10].Split(':')[1]);
- directionChangeTresholdZ = float.Parse(lines[11].Split(':')[1]);
+ //On repère les paramètres supposés être des int ou float de manière à les parser.
+ String[] ints = { "tuioConnexionPort", "wsConnexionPort", "takenPoints", "tuioTimerElapsing", "wsTimerElapsing", "directionChangeTresholdXY", "imagesToShow" };
+ String[] floats = { "minDistHands", "minDist", "maxDistHands", "maxDist", "zeroPoint", "directionChangeTresholdZ" };
+
+ //Indique si on a affecté le paramètre actuel.
+ bool goToNextParam = false;
+
+ //Pour chaque ligne du fichier de config.
+ for (int i = 0 ; i < lines.Length ; i++)
+ {
+ //On récupère la clé et la valeur.
+ String key = lines[i].Split(':')[0];
+ String value = lines[i].Split(':')[1];
+
+ //Si c'est un int on le parse.
+ for (int j = 0 ; j < ints.Length ; j++)
+ {
+ if (ints[j] == key)
+ {
+ config.Add(key, int.Parse(value));
+ goToNextParam = true;
+ }
+ }
+
+ //Si il n'était pas un int.
+ if (!goToNextParam)
+ {
+ //Si c'est un float on le parse.
+ for (int j = 0; j < floats.Length; j++)
+ {
+ if (floats[j] == key)
+ {
+ config.Add(key, float.Parse(value));
+ goToNextParam = true;
+ }
+ }
+
+ //Si c'était en fait un string.
+ if (!goToNextParam)
+ {
+ config.Add(key, value);
+ }
+ }
+ goToNextParam = false;
+ }
}
+ //S'il s'est passé un problème durant la lecture du fichier de config.
catch (Exception e)
{
+ //On génère un fichier qui va afficher l'erreur.
StreamWriter SW;
try
{
@@ -841,31 +747,35 @@
return false;
}
- if (maxDistHands <= 0f || minDistHands <= 0f || maxDistHands > maxDist || minDistHands > maxDist ||
- minDistHands >= maxDistHands || zeroPoint < maxDistHands || minDistHands > minDist ||
- zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0 || imagesToShow < 1 ||
- takenPoints <= 0 || directionChangeTresholdXY < 0 || directionChangeTresholdZ < 0)
+ //Si l'extraction s'est bien passé mais que les paramètres sont incohérents.
+ if ((float)config["maxDistHands"] <= 0f || (float)config["minDistHands"] <= 0f || (float)config["maxDistHands"] > (float)config["maxDist"] || (float)config["minDistHands"] > (float)config["maxDist"] ||
+ (float)config["minDistHands"] >= (float)config["maxDistHands"] || (float)config["zeroPoint"] < (float)config["maxDistHands"] || (float)config["minDistHands"] > (float)config["minDist"] ||
+ (float)config["zeroPoint"] >= (float)config["maxDist"] || (int)config["tuioConnexionPort"] < 0 || (int)config["wsConnexionPort"] < 0 || (int)config["tuioTimerElapsing"] < 0 || (int)config["wsTimerElapsing"] < 0 || (int)config["imagesToShow"] < 1 ||
+ (int)config["takenPoints"] <= 0 || (int)config["directionChangeTresholdXY"] < 0 || (float)config["directionChangeTresholdZ"] < 0)
{
ExceptionLbl.Content = rm.GetString("loadParametersIncorrect");
StreamWriter SW;
try
{
+ //On indique les incohérences trouvées dans le fichier.
SW = File.CreateText("ErrorFile.txt");
- if (maxDistHands <= 0f) { SW.WriteLine("searchMaxDistance <= 0"); }
- if (minDistHands <= 0f) { SW.WriteLine("minDistance <= 0"); }
- if (maxDistHands > maxDist) { SW.WriteLine("searchMaxDistance > maxDistance"); }
- if (minDistHands > maxDist) { SW.WriteLine("searchMinDistance > maxDistance"); }
- if (minDistHands >= maxDistHands) { SW.WriteLine("searchMinDistance >= searchMaxDistance"); }
- if (zeroPoint < maxDistHands) { SW.WriteLine("zeroPoint < searchMaxDistance"); }
- if (minDistHands > minDist) { SW.WriteLine("searchMinDistance > minDistance"); }
- if (zeroPoint >= maxDist) { SW.WriteLine("zeroPoint >= maxDistance"); }
- if (connexionPort < 0) { SW.WriteLine("connexionPort < 0"); }
- if (timerElapsing < 0) { SW.WriteLine("timerElapsing < 0"); }
- if (imagesToShow < 1) { SW.WriteLine("imagesToShow < 1"); }
- if (takenPoints <= 0) { SW.WriteLine("takenPoints <= 0"); }
- if (directionChangeTresholdXY < 0) { SW.WriteLine("directionChangeTresholdXY < 0"); }
- if (directionChangeTresholdZ < 0) { SW.WriteLine("directionChangeTresholdZ < 0"); }
+ if ((float)config["maxDistHands"] <= 0f) { SW.WriteLine("searchMaxDistance <= 0"); }
+ if ((float)config["minDistHands"] <= 0f) { SW.WriteLine("minDistance <= 0"); }
+ if ((float)config["maxDistHands"] > (float)config["maxDist"]) { SW.WriteLine("searchMaxDistance > maxDistance"); }
+ if ((float)config["minDistHands"] > (float)config["maxDist"]) { SW.WriteLine("searchMinDistance > maxDistance"); }
+ if ((float)config["minDistHands"] >= (float)config["maxDistHands"]) { SW.WriteLine("searchMinDistance >= searchMaxDistance"); }
+ if ((float)config["zeroPoint"] < (float)config["maxDistHands"]) { SW.WriteLine("zeroPoint < searchMaxDistance"); }
+ if ((float)config["minDistHands"] > (float)config["minDist"]) { SW.WriteLine("searchMinDistance > minDistance"); }
+ if ((float)config["zeroPoint"] >= (float)config["maxDist"]) { SW.WriteLine("zeroPoint >= maxDistance"); }
+ if ((int)config["tuioConnexionPort"] < 0) { SW.WriteLine("tuioConnexionPort < 0"); }
+ if ((int)config["wsConnexionPort"] < 0) { SW.WriteLine("wsConnexionPort < 0"); }
+ if ((int)config["tuioTimerElapsing"] < 0) { SW.WriteLine("tuioTimerElapsing < 0"); }
+ if ((int)config["wsTimerElapsing"] < 0) { SW.WriteLine("wsTimerElapsing < 0"); }
+ if ((int)config["imagesToShow"] < 1) { SW.WriteLine("imagesToShow < 1"); }
+ if ((int)config["takenPoints"] <= 0) { SW.WriteLine("takenPoints <= 0"); }
+ if ((int)config["directionChangeTresholdXY"] < 0) { SW.WriteLine("directionChangeTresholdXY < 0"); }
+ if ((float)config["directionChangeTresholdZ"] < 0) { SW.WriteLine("directionChangeTresholdZ < 0"); }
SW.Close();
Console.WriteLine("Error File Created SucacessFully");
}
@@ -877,96 +787,67 @@
}
/*
- * Met à jour les nouveaux paramètres dans la configuration.
- */
- public void updateParameters()
- {
- //userPositionDetector.setParams(minDist, maxDist, minDistHands, maxDistHands, zeroPoint);
- //segmenter.setParams(takenPoints, directionChangeTresholdXY, directionChangeTresholdZ);
-
- //On récupère la config.
- Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- //On met à jour.
- Properties.Settings.Default.Context.Remove("searchMinDistance");
- Properties.Settings.Default.Context.Add("searchMinDistance", minDistHands.ToString());
- Properties.Settings.Default.Context.Remove("searchMaxDistance");
- Properties.Settings.Default.Context.Add("searchMaxDistance", maxDistHands.ToString());
- Properties.Settings.Default.Context.Remove("minDistance");
- Properties.Settings.Default.Context.Add("minDistance", minDist.ToString());
- Properties.Settings.Default.Context.Remove("maxDistance");
- Properties.Settings.Default.Context.Add("maxDistance", maxDist.ToString());
- Properties.Settings.Default.Context.Remove("zeroPoint");
- Properties.Settings.Default.Context.Add("zeroPoint", zeroPoint.ToString());
- Properties.Settings.Default.Context.Remove("connexionHost");
- Properties.Settings.Default.Context.Add("connexionHost", connexionHost);
- Properties.Settings.Default.Context.Remove("connexionPort");
- Properties.Settings.Default.Context.Add("connexionPort", connexionPort.ToString());
- Properties.Settings.Default.Context.Remove("timerElapsing");
- Properties.Settings.Default.Context.Add("timerElapsing", timerElapsing.ToString());
- Properties.Settings.Default.Context.Remove("imagesToShow");
- Properties.Settings.Default.Context.Add("imagesToShow", imagesToShow.ToString());
- Properties.Settings.Default.Context.Remove("takenPoints");
- Properties.Settings.Default.Context.Add("takenPoints", takenPoints.ToString());
- Properties.Settings.Default.Context.Remove("directionChangeTresholdXY");
- Properties.Settings.Default.Context.Add("directionChangeTresholdXY", directionChangeTresholdXY.ToString());
- Properties.Settings.Default.Context.Remove("directionChangeTresholdZ");
- Properties.Settings.Default.Context.Add("directionChangeTresholdZ", directionChangeTresholdZ.ToString());
-
- //Sauvegarde la configuration.
- Properties.Settings.Default.Save();
- Properties.Settings.Default.Reload();
- }
-
- /*
* Getters et setters des paramètres du Middleware.
*/
public void setMinDistHands(float min)
{
- minDistHands = min;
+ config["minDistHands"] = min;
}
public void setMaxDistHands(float max)
{
- maxDistHands = max;
+ config["maxDistHands"] = max;
}
public void setMinDist(float min)
{
- minDist = min;
+ config["minDist"] = min;
}
public void setMaxDist(float max)
{
- maxDist = max;
+ config["maxDist"] = max;
}
public void setZeroPoint(float zero)
{
- zeroPoint = zero;
+ config["zeroPoint"] = zero;
}
- public void setConnexionHost(String host)
+ public void setTuioConnexionHost(String host)
{
- connexionHost = host;
+ config["tuioConnexionHost"] = host;
+ }
+ public void setTuioConnexionPort(int port)
+ {
+ config["tuioConnexionPort"] = port;
}
- public void setConnexionPort(int port)
+ public void setWsConnexionHost(String host)
{
- connexionPort = port;
+ config["wsConnexionHost"] = host;
+ }
+ public void setWsConnexionPort(int port)
+ {
+ config["wsConnexionPort"] = port;
}
- public void setTimerElapsing(int time)
+ public void setTuioTimerElapsing(int time)
{
- timerElapsing = time;
+ config["tuioTimerElapsing"] = time;
+ }
+ public void setWsTimerElapsing(int time)
+ {
+ config["wsTimerElapsing"] = time;
}
public void setImagesToShow(int _imagesToShow)
{
- imagesToShow = _imagesToShow;
+ config["imagesToShow"] = _imagesToShow;
}
public void setTakenPoints(int _takenPoints)
{
- takenPoints = _takenPoints;
+ config["takenPoints"] = _takenPoints;
}
public void setDirectionChangeTresholdXY(int _directionChangeTresholdXY)
{
- directionChangeTresholdXY = _directionChangeTresholdXY;
+ config["directionChangeTresholdXY"] = _directionChangeTresholdXY;
}
public void setDirectionChangeTresholdZ(float _directionChangeTresholdZ)
{
- directionChangeTresholdZ = _directionChangeTresholdZ;
+ config["directionChangeTresholdZ"] = _directionChangeTresholdZ;
}
public void setSwitch(Button _switch)
{
@@ -976,66 +857,66 @@
{
on = _on;
}
- /*public void setQuitMenu(MenuItem quitMenu)
- {
- QuitMenu = quitMenu;
- }
- public void setParametersWindow(DebugParameters parameters)
- {
- param = parameters;
- }
- public void setParamMenu(MenuItem parameters)
- {
- ParamMenu = parameters;
- }*/
-
+
public float getMinDistHands()
{
- return minDistHands;
+ return (float)config["minDistHands"];
}
public float getMaxDistHands()
{
- return maxDistHands;
+ return (float)config["maxDistHands"];
}
public float getMinDist()
{
- return minDist;
+ return (float)config["minDist"];
}
public float getMaxDist()
{
- return maxDist;
+ return (float)config["maxDist"];
}
public float getZeroPoint()
{
- return zeroPoint;
+ return (float)config["zeroPoint"];
}
- public String getConnexionHost()
+ public String getTuioConnexionHost()
{
- return connexionHost;
+ return (String)config["tuioConnexionHost"];
+ }
+ public int getTuioConnexionPort()
+ {
+ return (int)config["tuioConnexionPort"];
}
- public int getConnexionPort()
+ public int getTuioTimerElapsing()
{
- return connexionPort;
+ return (int)config["tuioTimerElapsing"];
+ }
+ public String getWsConnexionHost()
+ {
+ return (String)config["wsConnexionHost"];
}
- public int getTimerElapsing()
+ public int getWsConnexionPort()
{
- return timerElapsing;
+ return (int)config["wsConnexionPort"];
+ }
+ public int getWsTimerElapsing()
+ {
+ return (int)config["wsTimerElapsing"];
}
public int getImagesToShow()
{
- return imagesToShow;
+ return (int)config["imagesToShow"];
}
public int getTakenPoints()
{
- return takenPoints;
+ return (int)config["takenPoints"];
}
public int getDirectionChangeTresholdXY()
{
- return directionChangeTresholdXY;
+ return (int)config["directionChangeTresholdXY"];
}
public float getDirectionChangeTresholdZ()
{
- return directionChangeTresholdZ;
+ return (float)config["directionChangeTresholdZ"];
}
public Button getSwitch()
{
@@ -1045,18 +926,6 @@
{
return on;
}
- /*public MenuItem getQuitMenu()
- {
- return QuitMenu;
- }
- public DebugParameters getParametersWindow()
- {
- return param;
- }
- public MenuItem getParamMenu()
- {
- return ParamMenu;
- }*/
public void onR0(bool b)
{