void tcpClient_OnDataReceived(object sender, TCPSlamBase.MessageArgs e)
 {
     if (e.MessageType == TCPSlamBase.MessageType.ArduinoStatus)
     {
         ArduinoStatus = (ArduinoSlam.ArduinoStatus)e.Message[0];
         if (ArduinoStatus == ArduinoSlam.ArduinoStatus.Connected)
         {
             lblArduinoStatus.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() { lblArduinoStatus.Content = "Connected"; }));
             btnArduinoConnect.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() { btnArduinoConnect.Content = "Disconnect"; }));
         }
         else if (ArduinoStatus == ArduinoSlam.ArduinoStatus.Connecting)
         {
             lblArduinoStatus.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() { lblArduinoStatus.Content = "Connecting..."; }));
             btnArduinoConnect.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() { btnArduinoConnect.Content = "Disconnect"; }));
         }
         else if (ArduinoStatus == ArduinoSlam.ArduinoStatus.NotConnected)
         {
             lblArduinoStatus.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() { lblArduinoStatus.Content = "Disconnected"; }));
             btnArduinoConnect.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() { btnArduinoConnect.Content = "Connect"; }));
         }
     }
     else if (e.MessageType == TCPSlamBase.MessageType.KinectList)
     {
         byte count = e.Message[0];
         cmbKinect.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate()
         {
             cmbKinect.Items.Clear();
             for (byte i = 1; i <= count; i++)
                 cmbKinect.Items.Add(new ComboBoxItem() { Content = "Kinect " + i });
             if (count > 0)
                 cmbKinect.SelectedIndex = 0;
         }));
     }
     else if (e.MessageType == TCPSlamBase.MessageType.KinectFrame)
     {
         cameraWindow.Dispatcher.Invoke(DispatcherPriority.Send, new Action(delegate() { cameraWindow.LoadFrame(e.Message); }));
     }
     else if (e.MessageType == TCPSlamBase.MessageType.Audio)
     {
         SoundPlayer sp = new SoundPlayer(new MemoryStream(e.Message));
         sp.Play();
     }
     else if (e.MessageType == TCPSlamBase.MessageType.XForce)
     {
         if (cameraWindow != null)
             cameraWindow.XForce = BitConverter.ToDouble(e.Message, 0);
     }
     else if (e.MessageType == TCPSlamBase.MessageType.YForce)
     {
         if (cameraWindow != null)
             cameraWindow.YForce = BitConverter.ToDouble(e.Message, 0);
     }
     else if (e.MessageType == TCPSlamBase.MessageType.ZForce)
     {
         if (cameraWindow != null)
             cameraWindow.ZForce = BitConverter.ToDouble(e.Message, 0);
     }
     else if (e.MessageType == TCPSlamBase.MessageType.Temperature)
     {
         if (cameraWindow != null)
             cameraWindow.Temperature = BitConverter.ToDouble(e.Message, 0);
     }
 }
 void tcpServer_OnDataReceived(object sender, TCPSlamBase.MessageArgs e)
 {
     if (e.MessageType == TCPSlamBase.MessageType.ArduinoConnection)
     {
         if (BitConverter.ToBoolean(e.Message, 0))
             arduino.Connect();
         else
             arduino.CloseConnection();
     }
     else if (e.MessageType == TCPSlamBase.MessageType.SendVideo)
     {
         int kinect = e.Message[0];
         kinectManager.StartSensor(kinectManager.GetKinectList()[1]);
         sendVideo = true;
         videoThread = new Thread(SendVideo);
         videoThread.Start();
     }
     else if (e.MessageType == TCPSlamBase.MessageType.StopVideo)
     {
         sendVideo = false;
         kinectManager.StopSensor();
     }
     else if (e.MessageType == TCPSlamBase.MessageType.CameraMove)
     {
         kinectManager.MoveCamera(BitConverter.ToInt32(e.Message, 0));
     }
     else if (e.MessageType == TCPSlamBase.MessageType.LeftMotor)
     {
         if (arduino.Status == ArduinoSlam.ArduinoStatus.Connected)
             arduino.SetLeftMotor(BitConverter.ToDouble(e.Message, 0));
     }
     else if (e.MessageType == TCPSlamBase.MessageType.RightMotor)
     {
         if (arduino.Status == ArduinoSlam.ArduinoStatus.Connected)
             arduino.SetRightMotor(BitConverter.ToDouble(e.Message, 0));
     }
 }