Bluetooth Chat Programm mit SPP funktioniert nur teilweise

M

mani9876

Neues Mitglied
0
Hallo!

Ich versuche eine Kommunikation zw. Android und einem Bluetooth - RS232 Adapter aufzubauen.

Ich habe die Bluetooth - Chat Sample genommen, natürlich die UUID verändert.

Soweit funktioniert es ja, allerdings empfängt das Handy die Daten nur teilweise bzw. falsch.

Ich sende tesweise jede Sekunde "Hallo" per RS232 Adapter raus.

Ankommen tut:
"H"
"allo"
"a"
"allo"
...

Bei größeren Texten schneidet er auch einiges ab.

Weiß jemand was hier das Problem sein kann?

Vielen Dank!
Lg
Manuel

EDIT:

Hab soeben bemerkt, wenn ich das Handy während des empfangs ausschalte, und danach einschalte, funktionierte in der Zeit wo es ausgeschalten war einwandfrei. Es steht also wirklich "Hallo" , "Hallo" , "Hallo" da. Auch längere Texte stimmen.
Vielleicht weiß ja jemand wo ich da ansetzten muss?
 
Zuletzt bearbeitet:
Hallo!

Hab scheinbar das Problem entdeckt, aber leider noch nicht die Lösung:

So sieht der Code aus der in der Endlosschleife den Buffer abfragt, wo die Daten hereinkommen:

Code:
 while (true) 
            {
                try 
                {
                    
                    System.out.println("--- Lesen von InputStream ---");
                    // Lesen vom Inputstream
                    bytes = mmInStream.read(buffer);
                    System.out.println("Empfangener Stream:");
                    System.out.println(bytes);
                    // Die empfangenen Daten an die Activity senden
                    mHandler.obtainMessage(WimappWorkplace.MESSAGE_READ, bytes, -1, buffer)
                            .sendToTarget();
                } 
                catch (IOException e) 
                {
                    Log.e(TAG, "bytes could not read", e);
                    connectionLost();
                    break;
                }
            }

Und so sieht der Code aus, der aufgerufen wird, sobald sich neue Daten im Buffer befunden haben:

Code:
            case MESSAGE_READ: // Daten werden gerade gelesen
                x++;
                byte[] readBuf = (byte[]) msg.obj;
                // String welcher die empfangenen Daten beinhaltet
                final String BTdata = new String(readBuf, 0, msg.arg1);
                System.out.println("Empfangener Datensatz");
                System.out.println(BTdata);
                break;

Über logcat, kann ich nun die beiden Bereiche beobachten, hier erkennt man, dass die Daten aus dem Buffer zwar richtig gelesen werden, allerdings scheint es sich zeitlich zu überschneiden, wo neue Daten übergeben werden, und dadurch kommen solch komische Datenschnipsel zusammen.

Seht selbst:

03-28 10:41:21.422: INFO/System.out(3634): Empfangener Stream:
03-28 10:41:21.422: INFO/System.out(3634): 1
03-28 10:41:21.422: INFO/System.out(3634): --- Lesen von InputStream ---
03-28 10:41:21.432: INFO/System.out(3634): Empfangener Datensatz
03-28 10:41:21.432: INFO/System.out(3634): M
03-28 10:41:21.452: INFO/System.out(3634): Empfangener Stream:
03-28 10:41:21.452: INFO/System.out(3634): 9
03-28 10:41:21.452: INFO/System.out(3634): --- Lesen von InputStream ---
03-28 10:41:21.452: INFO/System.out(3634): Empfangener Stream:
03-28 10:41:21.452: INFO/System.out(3634): 10
03-28 10:41:21.452: INFO/System.out(3634): --- Lesen von InputStream ---
03-28 10:41:21.452: INFO/System.out(3634): Empfangener Datensatz
03-28 10:41:21.452: INFO/System.out(3634): IST MANUE
03-28 10:41:21.462: INFO/System.out(3634): Empfangener Datensatz
03-28 10:41:21.462: INFO/System.out(3634): IST MANUEL

Gesendet wird jede Sekunde "MEIN NAME IST MANUEL"
Zuerst werden 9 Zeichen gelesen, aber scheinbar reicht es nicht zur kompletten Ausführung des 2. Codes, sondern zeitlich überschneidet sich das.

Hat jemand eine Idee warum, bzw. wie man das Problem beheben kann?

Danke
Lg
Manuel
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
960
swa00
swa00
S
Antworten
4
Aufrufe
4.468
mblaster4711
mblaster4711
K
Antworten
1
Aufrufe
807
swa00
swa00
Zurück
Oben Unten