2010-04-09 22 views
11

Tüm bunlara biraz yeniyim, bu yüzden benimle birlikte ol - Ben gerçekten yardımın için minnettarım.Arduino + BlueSmirf ile Android Nexus Bir Arabirim Arabirimi

Android Nexus One'ı BlueSmirf'e bağlı bir arduino (Duemilanove) ile bağlamaya çalışıyorum. BlueSmirf'in bağlı olduğu herhangi bir cihaza "Hello Bluetooth" dizesini çıkaran bir programım var. İşte Arduino programı:

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

void loop() {Serial.print ("Merhaba Bluetooth!"); gecikme (1000); }

Bilgisayarımın BT terminali İletiyi görebilir ve sorunla karşılaşıyorum. Sorun benim android kodumla. Ben cihaza android ile bağlanabiliyorum, ama günlüğe baktığımda "Hello Bluetooth" göstermiyor. 27:


04-09 16: 49,022: HATA/BTArduino (17288): 27: FireFly-2583
04-09 16 bağlı 49,022: HATA/BTArduino (17288): BAŞLANGIÇ Burada ayıklama log 27:: soket
04-09 16 BAĞLANIR 55,705: HATA/BTArduino (17288): Alınan: 16
04-09 16: 27: HATA/BTArduino (17288): Alınan: 1
04- 56.702 09 16: 27: 56.712: HATA/BTArduino (17288): Alındı: 15
04-09 16: 27: 57.702: HATA/BTArduino (17288): Alındı: 1
04-09 16: 27: 57.702: HATA/BTArduino (17288): Alındı: 15
04-09 16: 27: HATA/BTArduino (17288): Alınan: 1
04-09 16: 27: 58,704: HATA/BTArduino (17288): Alınan: 15

vb ...

58,704

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... 

daha göreli kod buradadır:

 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"); 
       } 
      } 
İşte

Ben sadece göreli kod koymak için çalışıyor ancak daha fazla ihtiyaç varsa bana bildirin lütfen ediyorum kodudurOkuma baytları = inStream.read (buffer). Baytların bir tamsayı olduğunu biliyorum, bu yüzden bluetooth üzerinden tamsayı göndermeyi denedim çünkü "bayt" bir tamsayıydı, ancak yine de mantıklı değildi.

Neredeyse yanlış baud hızı gönderiyor gibi görünüyor. Bu doğru olabilir mi?

Herhangi bir yardım için teşekkür ederiz. Çok teşekkür ederim.

+0

Bunun yerine bir writeln/readln combo ile deneyin. –

cevap

1

okuma() başarılı bir şekilde tampona okumak bayt sayısını verir. Bu nedenle, bu kod satırında:

bytes = inStream.read(buffer); 

... mesajınız buffer ilk bytes bayt bulunacaktır (her şey doğru olduğunu varsayarak).Ben (vs, kodlama birden tamponlarını birleştirerek) Buraya şeylerin bir dizi sayarlar ediyorum

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

ama bu başlangıç ​​almalısınız: Öyle gibi bir String olanlar dönüştürebilirsiniz.