Hallo Java-Forum Community,
ich bin derzeit an einem kleinen Projekt für private Zwecke beschäftigt. Es geht um eine RGB LED Stripe welche mittels einer App gesteuert wird. Der Hardware Aufbau ist relativ simple. Ich benutze dazu ein Arduino welcher mir mittels PWM die einzelnen Kanäle ansteuert. Mein Problem liegt definitiv am App, jedoch ist nicht ausgeschlossen dass mein Bluetooth Modul ein ???:L hat.... Ich kann es mir momentan nicht erklären, weshalb folgender Fehler auftritt:
Sobald ich mein Bluetooth Modul aus & wieder einstecke und mit meinem App über den Bluetooth Socket was schicke funktioniert es. Ich erhalte den gewünschten Wert und die gewünschte Farbe wird angezeigt. Beim weiteren Senden einer neuen Farbe klappt es nicht mehr. Es scheint, als ob das BT Modul immer noch beschäftigt ist.
Code zum senden:
Ich habe die setOutput bzw. getOutput Methode nicht berücksichtigt, da ich hier noch ein Fehler im Code habe. Den String, der gesendet werden soll habe ich innerhalb vom Thread deklariert, dies funktioniert auch wunderbar. Ich baue also den Socket auf, gebe meine MAC an ( in diesem Fall entfernt ) und wähle die default UUID laut Internet-recherche. Die Verbindung funktioniert, das senden klappt, aber jedoch nur einmalig. Für sämtliche anderen Farbvariationen sieht der Code identisch aus, außer dass eben für green "g", für blue "b" ecetera gesendet wird. Schlussendlich lösche ich den Buffer des outputStreams und schließe den Socket. Beim nächsten Senden starte ich den Socket wieder und die gleiche Prozedur erfolgt.
Ich sehe keinen Fehler im Code, habe bisher auch nichts recherchieren können, nur dass ich anscheinend nicht der einzige bin.
Kennt jemand dieses Problem, kann mir jemand unter die Arme greifen? Wo liegt das Problem, was mache ich falsch? :bahnhof:
Wär cool wenn wer ne Lösung hat!
flo
ich bin derzeit an einem kleinen Projekt für private Zwecke beschäftigt. Es geht um eine RGB LED Stripe welche mittels einer App gesteuert wird. Der Hardware Aufbau ist relativ simple. Ich benutze dazu ein Arduino welcher mir mittels PWM die einzelnen Kanäle ansteuert. Mein Problem liegt definitiv am App, jedoch ist nicht ausgeschlossen dass mein Bluetooth Modul ein ???:L hat.... Ich kann es mir momentan nicht erklären, weshalb folgender Fehler auftritt:
Sobald ich mein Bluetooth Modul aus & wieder einstecke und mit meinem App über den Bluetooth Socket was schicke funktioniert es. Ich erhalte den gewünschten Wert und die gewünschte Farbe wird angezeigt. Beim weiteren Senden einer neuen Farbe klappt es nicht mehr. Es scheint, als ob das BT Modul immer noch beschäftigt ist.
Code zum senden:
Java:
public void sendValue(String value) {
if(value=="red"){ setOutput("r");
Thread connection = new Thread() {
public void run() {
String address ="meine mac";
BluetoothDevice device = BA.getRemoteDevice(address);
String outputstring = "r";
try {
//Create a Socket connection: need the server's UUID number of registered
socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"));
socket.connect();
OutputStream outputStream = socket.getOutputStream();
outputStream.write(outputstring.getBytes());
outputStream.flush();
socket.close();
} catch (IOException e) {
}
};
};
connection.start();
} }
Ich habe die setOutput bzw. getOutput Methode nicht berücksichtigt, da ich hier noch ein Fehler im Code habe. Den String, der gesendet werden soll habe ich innerhalb vom Thread deklariert, dies funktioniert auch wunderbar. Ich baue also den Socket auf, gebe meine MAC an ( in diesem Fall entfernt ) und wähle die default UUID laut Internet-recherche. Die Verbindung funktioniert, das senden klappt, aber jedoch nur einmalig. Für sämtliche anderen Farbvariationen sieht der Code identisch aus, außer dass eben für green "g", für blue "b" ecetera gesendet wird. Schlussendlich lösche ich den Buffer des outputStreams und schließe den Socket. Beim nächsten Senden starte ich den Socket wieder und die gleiche Prozedur erfolgt.
Ich sehe keinen Fehler im Code, habe bisher auch nichts recherchieren können, nur dass ich anscheinend nicht der einzige bin.
06-11 18:37:47.232: D/BluetoothUtils(4885): isSocketAllowedBySecurityPolicy start : device null
06-11 18:37:47.232: W/BluetoothAdapter(4885): getBluetoothService() called with no BluetoothManagerCallback
06-11 18:37:53.947: D/BluetoothUtils(4885): isSocketAllowedBySecurityPolicy start : device null
06-11 18:37:53.947: W/BluetoothAdapter(4885): getBluetoothService() called with no BluetoothManagerCallback
06-11 18:37:54.097: E/(4885): java.io.IOException: read failed, socket might closed or timeout, read ret: -1
06-11 18:37:54.097: E/(4885): at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:1016)
06-11 18:37:54.097: E/(4885): at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:1036)
06-11 18:37:54.097: E/(4885): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:654)
06-11 18:37:54.097: E/(4885): at com.example.rgbled.MainActivity$7.run(MainActivity.java:175)
Kennt jemand dieses Problem, kann mir jemand unter die Arme greifen? Wo liegt das Problem, was mache ich falsch? :bahnhof:
Wär cool wenn wer ne Lösung hat!
flo
Zuletzt bearbeitet: