public void ConnectBT()
 {
     var ConnectB = (Button)FindViewById(R.Ids.Connect);
     if (ConnStage == 0)
     {
         try
         {
             UUID uuid = BT_Remote_Device.GetUuids()[0].GetUuid();
             BT_Socket = BT_Remote_Device.CreateRfcommSocketToServiceRecord(uuid);
             Log.I(DebugTag,"BT_Socket "+BT_Socket.ToString()+uuid.ToString());
             Thread.Sleep(FailCount*100);
             ConnStage++;
         }
         catch (Exception e)
         {
             ShowStatus("Connection stage 0: "+e);
             string toLog = "Fail: " + FailCount + " Error 0 "+e.ToString();
             OnConnectFailed(toLog);
             return;
         }
     }
     if (ConnStage == 1)
     {
         try
         {
             Thread.Sleep(FailCount*100);
             BT_Adapter.CancelDiscovery();
             Thread.Sleep(FailCount*100);
             BT_Socket.Connect();
             Log.I(DebugTag,"BT_Socket connected: "+BT_Socket.IsConnected());
             Thread.Sleep(FailCount*100);
             ShowStatus("Connected to Remote after " + FailCount + " fail(s)");
             Connected=true;
             ConnectB.Text = "Disconnect";
             ConnStage++;
         }
         catch (Exception e)
         {
             Log.I(DebugTag,"BT_Socket connected: "+BT_Socket.IsConnected());
             ShowStatus("Connection stage 1: "+e);
             string toLog = "Fail: " + FailCount + " Error 1 "+e.ToString();
             Connected=false;
             ConnectB.Text = "Connect";
             OnConnectFailed(toLog);
             return;
         }
     }
     if (ConnStage == 2)
     {
         try
         {
             SendStream = BT_Socket.GetOutputStream();
             ReceiveStream = BT_Socket.GetInputStream();
             Thread.Sleep(FailCount*100);
             Connected=true;
             ConnectB.Text = "Disconnect";
             ConnStage++;
         }
         catch (Exception e)
         {
             ShowStatus("Connection stage 2: "+e);
             string toLog = "Fail: " + FailCount + " Error 2 "+e.ToString();
             Connected=false;
             ConnectB.Text = "Connect";
             OnConnectFailed(toLog);
             return;
         }
     }
     if (ConnStage == 3)
     {
         try
         {
             //string ConnectMsg = "Connected";
             Connected=true;
             ConnectB.Text = "Disconnect";
             //SendStream.Write(Encoding.ASCII.GetBytes(ConnectMsg));
         }
         catch (Exception e)
         {
             ShowStatus("Connection stage  3: "+e);
             Connected=false;
             ConnectB.Text = "Connect";
             string toLog = "Fail: " + FailCount + " Error 3 "+e.ToString();
             OnConnectFailed(toLog);
             return;
         }
     }
 }