2016-09-27 4 views
0

Ich arbeitete diesen Code, um einen einzelnen Buchstaben des Arduino zu erhalten Ich kann keine Antwort auf dem Telefon Text Viewer sehen, wenn ich Arduino möchte sendet den Buchstaben "A" zeigt mir das Wort "ON ' und wenn Senden ‚Z‘ zeigt mir das Wort im Text-Viewer auserhalten Zeichen mit Android-Handy von Arduino

Beachten sie, dass die Verbindung zwischen dem Android-Handy arduino erfolgreich und Android-Handy sendet arduino aber nicht erhalten

class Ahmed extends Thread { 

    public void run() { 
     for (; ;) { 
      try { 
       int bytesAvailable = btSocket.getInputStream().available(); 

       byte []packetBytes= new byte[bytesAvailable]; 
       if (bytesAvailable > 0) { 
        tb.setText(bytesAvailable+ "ok"); 
        btSocket.getInputStream().read(packetBytes); 

          for(int i=0; i<bytesAvailable;i++) 
          { 
           if (packetBytes[i]==65) 
            tb.setText("ON"); 
           else if (packetBytes[i] ==90) 
            tb.setText("off"); 
          } 
         } 

      } catch (Exception e) { 

      } 


     } 
    } 
} 

arduino Code

#include<SoftwareSerial.h> 
    void setup() { 
    Serial3.begin(9600); 
    pinMode(13,OUTPUT); 
    digitalWrite(13,LOW); 
     } 

    void loop() { 

    char x=Serial3.read(); 
    if(x=='A') 
    { 
    digitalWrite(13,HIGH); 
     Serial3.print('A'); 
} 
if(x=='Z') 
{digitalWrite(13,LOW); 
Serial3.print('Z'); 
} 
} 
+0

Zeile 10 von Arduino versucht, ein Zeichen zu lesen (blockierende Operation?) - Android sendet nie etwas. ?? – ABuckau

+0

Android-Handy senden und es gibt kein Problem, und ich erhielt von Serial Monitor, aber das Problem ist in der Annahme von Android @ ABuckau –

Antwort

1

Sie aktualisieren Textansicht von einem Thread, es muss einige Ausnahme werfen, aber wie Sie nichts in Ihrem catch Block gedruckt haben, erhalten Sie keine Ausgabe oder Fehler oder irgendetwas, immer daran denken, Sie können Ansichten von keiner aktualisieren Thread anders als UI-Thread.

 try { 
      int bytesAvailable = btSocket.getInputStream().available(); 

      byte []packetBytes= new byte[bytesAvailable]; 
      if (bytesAvailable > 0) { 
       tb.setText(bytesAvailable+ "ok"); 
       btSocket.getInputStream().read(packetBytes); 

         for(int i=0; i<bytesAvailable;i++) 
         { 
          if (packetBytes[i]==65) 
           tb.setText("ON"); 
          else if (packetBytes[i] ==90) 
           tb.setText("off"); 
         } 
        } 

     } catch (Exception e) { 
     // ADD THIS TO SEE ANY ERROR 
     e.printStackTrace();    
     } 

wenn Sie diesen Thread innerhalb Aktivitätsklasse ausgeführt werden, dann können Sie diese laufen

 runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       tb.setText("ON") 
      } 
     }); 

sonst müssen Sie zum Durchlassen der Daten zu Ihrem Aktivität einen Mechanismus unter Verwendung von Rundfunkempfänger oder Schnittstelle implementieren/Fragment für die Aktualisierung der Textansicht innerhalb runOnUiThread.

Verwandte Themen