92 socket.OnClose = () => |
92 socket.OnClose = () => |
93 { |
93 { |
94 Console.WriteLine("Close!"); |
94 Console.WriteLine("Close!"); |
95 allSockets.Remove(socket); |
95 allSockets.Remove(socket); |
96 }; |
96 }; |
97 /*socket.OnMessage = message => |
|
98 { |
|
99 Console.WriteLine(message); |
|
100 allSockets.ToList().ForEach(s => s.Send("Echo: " + message)); |
|
101 };*/ |
|
102 }); |
97 }); |
103 |
98 |
104 //On initialise le threadPool (appelé toutes les N ms). |
99 //On initialise le threadPool (appelé toutes les N ms). |
105 ThreadPool.QueueUserWorkItem(ThreadPoolCallback); |
100 ThreadPool.QueueUserWorkItem(ThreadPoolCallback); |
106 |
101 |
108 _gesturesTimer = new System.Timers.Timer(timerElapsing); |
103 _gesturesTimer = new System.Timers.Timer(timerElapsing); |
109 _userPositionTimer = new System.Timers.Timer(timerElapsing/5); |
104 _userPositionTimer = new System.Timers.Timer(timerElapsing/5); |
110 //Dès que le timer est expiré, on appelle _timer_Elapsed. |
105 //Dès que le timer est expiré, on appelle _timer_Elapsed. |
111 _gesturesTimer.Elapsed += new ElapsedEventHandler(_gesturesTimer_Elapsed); |
106 _gesturesTimer.Elapsed += new ElapsedEventHandler(_gesturesTimer_Elapsed); |
112 _userPositionTimer.Elapsed += new ElapsedEventHandler(_userPositionTimer_Elapsed); |
107 _userPositionTimer.Elapsed += new ElapsedEventHandler(_userPositionTimer_Elapsed); |
113 |
|
114 /*var input = Console.ReadLine(); |
|
115 while (input != "exit") |
|
116 { |
|
117 foreach (var socket in allSockets.ToList()) |
|
118 { |
|
119 socket.Send(input); |
|
120 } |
|
121 input = Console.ReadLine(); |
|
122 }*/ |
|
123 } |
108 } |
124 |
109 |
125 /* |
110 /* |
126 * Méthode appelée à l'expiration du timer pour les gestures et modes. |
111 * Méthode appelée à l'expiration du timer pour les gestures et modes. |
127 */ |
112 */ |
139 /* |
124 /* |
140 * Méthode appelée à l'expiration du timer pour les positions d'utilisateur. |
125 * Méthode appelée à l'expiration du timer pour les positions d'utilisateur. |
141 */ |
126 */ |
142 public void _userPositionTimer_Elapsed(object sender, ElapsedEventArgs e) |
127 public void _userPositionTimer_Elapsed(object sender, ElapsedEventArgs e) |
143 { |
128 { |
144 //On débloque la détection de gesture. |
|
145 //gestureLocked = false; |
|
146 //On débloque la notification de nouveau mode. |
129 //On débloque la notification de nouveau mode. |
147 modLocked = false; |
130 modLocked = false; |
148 lastCode = ""; |
131 lastCode = ""; |
149 //On arrête le timer. |
132 //On arrête le timer. |
150 _userPositionTimer.Stop(); |
133 _userPositionTimer.Stop(); |
197 /* |
180 /* |
198 * Méthode appelée lorsqu'une gesture a été détectée et que l'événement approprié a été lancé. |
181 * Méthode appelée lorsqu'une gesture a été détectée et que l'événement approprié a été lancé. |
199 */ |
182 */ |
200 public void GesturePerformed(String code) |
183 public void GesturePerformed(String code) |
201 { |
184 { |
202 //Si le code vient d'être envoyé, on passe. |
|
203 /*if (lastCode.Equals(code)) |
|
204 return; |
|
205 lastCode = code;*/ |
|
206 //Si une gesture a été effectuée, on bloque un certain temps. |
185 //Si une gesture a été effectuée, on bloque un certain temps. |
207 if (!gestureLocked) |
186 if (!gestureLocked) |
208 { |
187 { |
209 gestureLocked = true; |
188 gestureLocked = true; |
210 |
189 |
211 //On crée un message contenant le code à envoyer. |
190 //On crée un message contenant le code à envoyer. |
212 //if (!gesturesMessageCreated) |
191 gesturesMessageCreated = true; |
213 //{ |
192 gesturesMessage = "2-" + code; |
214 gesturesMessageCreated = true; |
193 |
215 gesturesMessage = "2-" + code; |
194 //Console.WriteLine(gesturesMessage); |
216 |
|
217 //Console.WriteLine(gesturesMessage); |
|
218 |
195 |
219 foreach (var socket in allSockets.ToList()) |
196 foreach (var socket in allSockets.ToList()) |
220 { |
197 { |
221 socket.Send(gesturesMessage); |
198 socket.Send(gesturesMessage); |
222 } |
199 } |
223 |
200 |
224 //On démarre le timer. |
201 //On démarre le timer. |
225 _gesturesTimer.Start(); |
202 _gesturesTimer.Start(); |
226 |
|
227 //Console.WriteLine(gestureMessage); |
|
228 //} |
|
229 } |
203 } |
230 } |
204 } |
231 |
205 |
232 /* |
206 /* |
233 * Méthode appelée lorsqu'on doit entrer dans un autre mode. |
207 * Méthode appelée lorsqu'on doit entrer dans un autre mode. |
234 */ |
208 */ |
235 public void ModeNotification(String code) |
209 public void ModeNotification(String code) |
236 { |
210 { |
237 //Si le code vient d'être envoyé, on passe. |
|
238 /*if (lastCode.Equals(code)) |
|
239 return; |
|
240 lastCode = code;*/ |
|
241 //Si on a été notifié. |
211 //Si on a été notifié. |
242 if (!modLocked) |
212 if (!modLocked) |
243 { |
213 { |
244 modLocked = true; |
214 modLocked = true; |
245 |
215 |
246 //On crée un message contenant le code à envoyer. |
216 //On crée un message contenant le code à envoyer. |
247 //if (!modeMessageCreated) |
217 modeMessageCreated = true; |
248 //{ |
218 modeMessage = "2-" + code; |
249 modeMessageCreated = true; |
219 //On démarre le timer. |
250 modeMessage = "2-" + code; |
220 |
251 //On démarre le timer. |
221 foreach (var socket in allSockets.ToList()) |
252 |
222 { |
253 foreach (var socket in allSockets.ToList()) |
223 socket.Send(modeMessage); |
254 { |
224 } |
255 socket.Send(modeMessage); |
225 _userPositionTimer.Start(); |
256 } |
|
257 _userPositionTimer.Start(); |
|
258 |
|
259 //Console.WriteLine(modeMessage); |
|
260 //} |
|
261 } |
226 } |
262 } |
227 } |
263 |
228 |
264 /* |
229 /* |
265 * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications. |
230 * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications. |
268 */ |
233 */ |
269 private void ThreadPoolCallback(Object threadContext) |
234 private void ThreadPoolCallback(Object threadContext) |
270 { |
235 { |
271 while (true) |
236 while (true) |
272 { |
237 { |
273 /*//S'il existe un message de gesture. |
|
274 if (gesturesMessage != null && !gesturesMessage.Equals(""))// && !gesturesMessage.Equals(prevGestureMessage)) |
|
275 { |
|
276 //On l'envoie au client (au host et au port spécifiés dans le constructeur). |
|
277 foreach (var socket in allSockets.ToList()) |
|
278 { |
|
279 socket.Send(gesturesMessage); |
|
280 //prevGestureMessage = gesturesMessage; |
|
281 } |
|
282 } |
|
283 |
|
284 //S'il existe un message de mode. |
|
285 if (modeMessage != null && !modeMessage.Equals(""))// && !modeMessage.Equals(prevModeMessage)) |
|
286 { |
|
287 //On l'envoie au client (au host et au port spécifiés dans le constructeur). |
|
288 foreach (var socket in allSockets.ToList()) |
|
289 { |
|
290 socket.Send(modeMessage); |
|
291 //prevModeMessage = modeMessage; |
|
292 } |
|
293 }*/ |
|
294 |
|
295 //Si la main gauche est détectée. |
238 //Si la main gauche est détectée. |
296 if (leftHandMessage != null && !leftHandMessage.Equals("") && !leftHandMessage.Equals(prevLeftHandMessage)) |
239 if (leftHandMessage != null && !leftHandMessage.Equals("") && !leftHandMessage.Equals(prevLeftHandMessage)) |
297 { |
240 { |
298 //On l'envoie au client (au host et au port spécifiés dans le constructeur). |
241 //On l'envoie au client (au host et au port spécifiés dans le constructeur). |
299 foreach (var socket in allSockets.ToList()) |
242 foreach (var socket in allSockets.ToList()) |