2016-03-20 9 views
0

Mit verschiedenen Tutorials, ich habe es geschafft, mein Android-Handy an ein HC-05 Bluetooth-Modul mit einem Arduino verbunden zu verbinden. Was ich versuche zu tun, ist 5 Tasten eingerichtet, die eine einzigartige Zahl pro Taste nur dann überträgt, wenn die Taste gedrückt gehalten wird, andernfalls wird eine "0" gesendet, wenn die Taste losgelassen wird. ergo BUTTON1 sendet eine "1" beim Drücken und "0" beim Loslassen, BUTTON2 sens eine "2" beim Drücken und eine "0" beim Loslassen. Momentan kann ich nicht herausfinden, wie man irgendwelche Daten über die Verbindung sendet. Durch das Lesen und Anschauen verschiedener Tutorials habe ich ein kleines Verständnis gewonnen, aber es scheint mir etwas zu fehlen.Android Senden von Daten an Arduino über Bluetooth

Nach unten in meinem Code in der öffentlichen void run(), ich habe einen OnClickListener für eine meiner Schaltflächen eingerichtet, um zu versuchen ... naja, einmal etwas gedrückt, nur um zu sehen, ob ich SOMETHING nützlich senden kann zum Arduino.

Hier ist, wo ich meine OnClickListener habe. Ich glaube, ich sollte "T" zum Arduino schicken.

pUpBtn.setOnClickListener(new OnClickListener() 

       { 
        @Override 
        public void onClick(View v) { 
         String testr="T:"; 
         byte[] msgBuffer = testr.getBytes(); 
         try { 

          mmOutStream.write(msgBuffer); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       }); 
+0

Anstatt Ihre gesamte Tätigkeit Dumping können Sie den Code in Ihrer Frage auf einen kleineren Beispiel einzuengen? – JAL

+0

Entschuldigung. Ich neige dazu, am besten zu lernen, indem ich alles im Gegensatz zu kleinen Schnipsel sehe, da es in der Regel einige kleine relevante Informationen in einem anderen Teil gibt. Ich habe den Code auf den betreffenden OnClick-Listener eingegrenzt. – SkyLine

Antwort

0

Erste

Grundsätzlich wie pro Ihre Anforderung nicht onTouchListner verwenden können onClickListner statt

Beispiel

button.setOnTouchListener(new OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_DOWN) { 
     //send integer value here.(pressed) 
    } else if (event.getAction() == MotionEvent.ACTION_UP) { 
     //Send zero here.(released) 
    } 
} 
}; 

hier ist ein Beispielcode zum Senden und Empfangen verwenden Daten von BluetoothSPP

Diese Methode ist Bluetooth-Gerät entfernten Gerät

private void connectToDevice(BluetoothDevice mBTDevice) { 
    try { 
     SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 

     mBtSocket = mBTDevice.createRfcommSocketToServiceRecord(SPP_UUID); 
     mBtSocket.connect(); 

    } catch (IOException e) { 
     Log.d("connectBT", "while connecting device"); 
     e.printStackTrace(); 

    } catch (Exception e) { 
     e.printStackTrace(); 

    } 
} 

Verwendung dieses für das Senden von Bytes zu verbinden.

public void send(String data) { 

    byte[] buffer = data.getBytes(); 
    try { 
     mOutputStream = mBtSocket.getOutputStream(); 
     mOutputStream.write(buffer); 
     Log.d("message", data + " sent"); 
    } catch (IOException e) { 
     e.printStackTrace(); 

    } 
} 

verwenden diese Funktion zum Senden von ganzen Zahlen

public void send() { 

    byte[] buffer = new bytes[size]; 
      buffer[0]=(byte)'1';//prepare data like this 
      .. 
      .. 
    try { 
     mOutputStream = mBtSocket.getOutputStream(); 
     mOutputStream.write(buffer); 
     Log.d("message", " sent"); 
    } catch (IOException e) { 
     e.printStackTrace(); 

    } 
} 

this helps :)