2014-11-26 3 views
0

У меня с этим Bluetooth. Вот мой код:Bluetooth-устройство иногда подключено, иногда нет

public void createServer() 
{ 
    Thread ServerThread = new Thread(new ThreadStart(ServerConnectThread)); 
    ServerThread.Start(); 
} 

public void ServerConnectThread() 
{ 

    updateUI("Server started"); 
    updateUI("Waiting for client.."); 
    BluetoothListener BTListener = new BluetoothListener(UUID); 
    BTListener.Stop(); 
    BTListener.Start(); 
    ServerRunning = true; 
    BluetoothClient conn = BTListener.AcceptBluetoothClient(); 
    MessageBoxResult connected = System.Windows.MessageBox.Show("Phone has connected", "Confirmation", MessageBoxButton.OK); 
    if (connected == MessageBoxResult.OK) 
    { 
     this.Dispatcher.Invoke((Action)(() => 
     { 
      player1Connection.Visibility = Visibility.Visible; 
      player1Connectiondc.Visibility = Visibility.Hidden; 
     })); 


    Stream mStream = conn.GetStream(); 
    while (ServerRunning) 
    { 
     try 
     { 
      byte[] received = new byte[1]; 
      mStream.Read(received, 0, received.Length); 
      updateUI("Message Received. " + Encoding.ASCII.GetString(received) + System.Environment.NewLine); 
      byte[] sent = Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(received) + " u too"); 
      mStream.Write(sent, 0, sent.Length); 
      updateUI("The code is " + Encoding.ASCII.GetString(received)); 
      string result = System.Text.Encoding.ASCII.GetString(received).ToString(); 
      updateUI("Key is " + result); 

      if (Game != null) 
      { 

       SinglePlayGame sg = (IceGame.Class.SinglePlayGame)Game; 
       force.Y = -force.Y; 
       if (result == "A") 
       { 
        force += new Vector2(-forceAmount, 0); 
       } 

       else if (result == "D") 
       { 
        force += new Vector2(forceAmount, 0); 
       } 
       else if (result == "W") 
       { 
        force += new Vector2(0, -forceAmount); 
       } 

       else if (result == "S") 
       { 
        force += new Vector2(0, forceAmount); 
       } 


       sg.BodyPlayer1.ApplyForce(force); 
       force = new Vector2(0, 0); 
      } 


     } 
     catch (IOException ex) 
     { 
      Console.WriteLine("Client disconnected"); 
     } 
    } 
} 

Он все равно скажет, что телефон подключен. Однако проигрыватель1Connection иногда не будет виден и заставляет устройство не читать команды, которые я сказал. Он работает, но мне требуется около 3-х раз +, чтобы заставить player1Connection работать. Пожалуйста помоги. Спасибо.

ответ

0

попробовать это

if (Game != null) 
{ 

    SinglePlayGame sg = (IceGame.Class.SinglePlayGame)Game; 
    force.Y = -force.Y; 
    if ("A".equals(result)) 
    { 
     force += new Vector2(-forceAmount, 0); 
    } 

    else if ("D"equals(result)) 
    { 
      force += new Vector2(forceAmount, 0); 
    } 
    else if ("W".equals(result)) 
    { 
      force += new Vector2(0, -forceAmount); 
    } 

    else if ("S".equals(result)) 
    { 
      force += new Vector2(0, forceAmount); 
    } 


     sg.BodyPlayer1.ApplyForce(force); 
     force = new Vector2(0, 0); 
    } 


} 
+0

Его уже работает. Однако проблема заключается в «player1Connection.Visibility = Visibility.Visible; и player1Connectiondc.Visibility = Visibility.Hidden». Код, похоже, не проходит через него, поэтому элементы управления также не отправляются на сервер. Pc – Miguel

+0

y cant u use 'player1Connectiondc.setVisibility (View.VISIBLE);' –

+0

Все еще не может. Проблема в том, что проблема заключается в этом.Dispatcher.Invoke ((Action) ((). Я действительно не уверен в вызове – Miguel

Смежные вопросы