2010-04-09 5 views
11

Ich bin ein bisschen neu an all dies, also ertragen Sie mit mir - ich würde wirklich Ihre Hilfe zu schätzen wissen.Schnittstelle Android Nexus One mit Arduino + BlueSmirf

Ich versuche, das Android Nexus One mit einem Arduino (Duemilanove) zu verbinden, das mit einem BlueSmirf verbunden ist. Ich habe ein Programm, das einfach die Zeichenfolge "Hallo Bluetooth" an jedes Gerät ausgibt, mit dem der BlueSmirf verbunden ist. Hier ist das Arduino-Programm:

void setup() { Serial.begin (115200); int i; }

Leere Schleife() {Serial.print ("Hallo Bluetooth!"); Verzögerung (1000); }

Eines meiner Computer BT-Terminal kann ich die Nachricht sehen und verbinden kein Problem. Das Problem ist mit meinem Android-Code. Ich kann mit dem Gerät mit Android verbinden, aber wenn ich das Protokoll anschaue, zeigt es nicht "Hello Bluetooth" an. Hier ist das Debug-Protokoll:


04-09 16: 27: 49,022: ERROR/BTArduino (17288) Firefly-2583 verbunden
04-09 16: 27: 49,022: ERROR/BTArduino (17288): AUSGANG Für die Verbindung der SOCKET
04-09 16: 27: 55,705: ERROR/BTArduino (17288): Received: 16
04-09 16: 27: 56,702: ERROR/BTArduino (17288): Received: 1
04- 09 16: 27: 56.712: FEHLER/BTAroduo (17288): Empfangen: 15
04-09 16: 27: 57.702: FEHLER/BTArduino (17288): Empfangen: 1
04-09 16: 27: 57.702: FEHLER/BTArduino (17288): Erhalten: 15
04-09 16: 27: 58,704: ERROR/BTArduino (17288): Received: 1
04-09 16: 27: 58,704: ERROR/BTArduino (17288): Received: 15

ect ...

hier

ist der Code, ich versuche nur die relative Code zu setzen, aber wenn Sie mehr benötigen, bitte lassen Sie mich wissen:

private class ConnectThread extends Thread { 
    private final BluetoothSocket mySocket; 
    private final BluetoothDevice myDevice; 

    public ConnectThread(BluetoothDevice device) { 
     myDevice = device; 
     BluetoothSocket tmp = null; 
     try { 
      tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 
     } catch (IOException e) { 
      Log.e(TAG, "CONNECTION IN THREAD DIDNT WORK"); 
     } 
     mySocket = tmp; 
    } 
    public void run() { 
     Log.e(TAG, "STARTING TO CONNECT THE SOCKET"); 
     InputStream inStream = null; 
     boolean run = false; 
     //...More Connection code here... 

Je mehr relativen Code ist hier:

 byte[] buffer = new byte[1024]; 
     int bytes; 

     // handle Connection 
     try { 
      inStream = mySocket.getInputStream(); 
      while (run) { 
       try { 
        bytes = inStream.read(buffer); 
        Log.e(TAG, "Received: " + bytes); 
       } catch (IOException e3) { 
        Log.e(TAG, "disconnected"); 
       } 
      } 

Ich lese Bytes = inStream.read (Puffer). Ich weiß, Bytes sind eine Ganzzahl, also habe ich versucht, Ganzzahlen über Bluetooth zu senden, weil "Bytes" eine ganze Zahl waren, aber es machte immer noch keinen Sinn.

Es scheint fast, dass eine falsche Baudrate gesendet wird. Könnte das wahr sein?

Jede Hilfe wäre willkommen. Vielen Dank.

+0

Versuchen Sie es stattdessen mit einer Writeln/Readln Combo. –

Antwort

1

read() gibt die Anzahl der Bytes erfolgreich in den Puffer gelesen. Daher wird in dieser Codezeile:

bytes = inStream.read(buffer); 

... Ihre Nachricht wird in den ersten bytes Bytes buffer (vorausgesetzt, alles andere ist richtig) zu finden.Sie können wie so diejenigen in einen String konvertieren:

String message = new String(buffer, 0, bytes); 

Ich bin hier, um eine Reihe von Dingen zu beschönigen (Codierung, mehrere Puffer verketten, etc), aber das sollte Ihnen den Einstieg.

Verwandte Themen