Problem bei Serieller Datenübertragung via Bluetooth

  • Antworten:3
  • Bentwortet
Patrick Bernhard
  • Forum-Beiträge: 2

22.03.2015, 15:01:11 via Website

Hallo liebe Forumsmitglieder,

ich versuche derzeit einige Daten aus dem Can-Bus von meinem Wagen zu ziehen und diese anschließend auf einem Android Gerät darzustellen. Die Daten habe ich bereits und das Senden kriege ich auch hin, allerdings bin ich absoluter Anfänger in der App-Entwicklung und habe ein Problem mit dem Empfangen in meiner App. Bis jetzt schalte ich erst einmal Bluetooth ein und lasse mir mit getBondedDevices() ein Set an gekoppelten Geräten ausgeben. Unter diesen ist unter anderem auch das Device mit dem ich mich verbinden möchte. Jetzt habe ich allerdings ein sehr elementares Problem und hoffe dass ihr mir da auf die Sprünge helfen könnt.

        pairedDevices = btadap.getBondedDevices();
        if (pairedDevices.size() > 0) 
        {
            for (BluetoothDevice device : pairedDevices) 
            {
                Log.d(TAG, "device " + device.getName() + "\n" + device.getAddress());

                adresse = device.getAddress();
                if (adresse == deviceadresse)
                {
                    btardu = device;
                    Toast msg = Toast.makeText(getBaseContext(),
                           btardu.getName(), Toast.LENGTH_LONG);
                    msg.show();
                }
            }
        }

Das ist mal ein kleiner Auszug aus dem Programmcode. Ich möchte das entsprechende Gerät über die eingebaute if-Abfrage herausfiltern. DIe MAC-Adress habe ich in deviceadresse gespeichert und wird ebenfalls über Log.d() ausgegeben. Die Bedingung meiner if-Abfrage ist jedoch scheinbar nie erfüllt und über den friendly Name funktioniert es auch nicht. Was kann ich noch tun und vor allem warum kann ich diese zwei Strings nicht vergleichen???

Ich weiss das ist eine sehr elementare Frage aber ich verzweifle schon seit Stunden daran.

Danke Schonmal und schöne Grüße

Patrick

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.03.2015, 15:18:56 via Website

Hallo Patrick,
Herzlich wilkommen hier im Forum :)



Nach der API Doc von d.andoid.com liefert dir getAddress() einen String zurück.
Diesen überprüfst du so: if (adresse == deviceadresse).
Leider ist das nicht ganz richtig und die Syntax eher aus einer der C sprachen genommen.
In Java und verleichbaren OOP Sprache vergleicht man strings so:

if(string1.equals(string2))

In deinem Fall also:

if (adresse.equals(deviceadresse))

LG Pascal

PS: Mit dem Operator == vergleich man gleiche Instanzen, da aber die beiden String Instanzen nicht gleich sind (sondern nur der Inhalt des Strings) funktioniert es nicht.

— geändert am 22.03.2015, 15:33:14

LG Pascal //It's not a bug, it's a feature. :) ;)

Patrick Bernhard

Antworten
Patrick Bernhard
  • Forum-Beiträge: 2

22.03.2015, 15:29:51 via Website

Vielen Dank Pascal,

ich bin da echt nicht drauf gekommen, da ich in der Tat sonst immer in C programmiere.

You made my day :D

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.03.2015, 15:34:25 via Website

Schön das es funktioniert :).

Bitte setzte deinen Thread noch auf Beantwortet, indem du im Browser über deinem ersten Post auf "Mehr"->Beantwortet klickst.
Danke (smug)

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten