Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Bluetooth empfang, RFCOMM

Das Thema "Bluetooth empfang, RFCOMM" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 28.01.2012, 15:50   #1 (permalink)
Neuer Benutzer

Registriert seit: 01.12.2011
Beiträge: 20
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard Bluetooth empfang, RFCOMM

Hallo

Ich brauch mal eine Hilfe.
Ich habe mir eine Bluetoothverbindung aufgebaut vom Android nach BT222. Das senden geht wunderbar.
Beim empfangen lass ich es über ein Thread laufen, im Handler schiebe ich den Empfangendenstring an einer Textbox, nach jeder Message wird eine neue Zeile angefangen.
Nun habe ich das Problem, wenn ich zb "Hallo" empfange, steht nach jeder 2-3 Messege mal *Ha* neue zeile, *llo*. Es wird also schon ein Handler abgearbeitet, obwohl der string noch nicht komplett ist, wie kann ich zb nach x Zeichen den Handler starten lassen oder nach definierten Steuerzeichen?
Wie sollte ich sonst damit weiterarbeiten können, wenn ich nie weiß ob die Message komplett ist und nicht aufgeteilt wurd?

Senden vom BT222 aus tue ich momentan mit dem PC, das soll nachher der Mikrocontroller übernehmen.

Hat einer auch eine Idee wie ich die Daten am besten Manage zum weiterverarbeiten?
Beim Mikrocontroller lass ich mir die zu empfangen zeichen als 1.Byte angeben und das 2.Byte wär die Art der Message.

Bin noch nicht ganz so Fit mit Java und ich finde nur wenig Infos über dieses Thema. *Datenverarbeitung über Serial*
molleb ist offline   Mit Zitat antworten
Alt 05.02.2012, 20:09   #2 (permalink)
Neuer Benutzer

Registriert seit: 01.12.2011
Beiträge: 20
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Bluetooth empfang, RFCOMM

Hmm hat keiner eine Idee oder ein Vorschlag?
molleb ist offline   Mit Zitat antworten
Alt 05.02.2012, 20:44   #3 (permalink)
Moderator
 
Benutzerbild von frank_m

Modell: Galaxy Note, Galaxy S, Galaxy Tab 7.7

Registriert seit: 21.09.2010
Beiträge: 7.738
Abgegebene Danke: 155
Erhielt 2.544 Danke für 1.566 Beiträge
Standard AW: Bluetooth empfang, RFCOMM

Bluetooth arbeitet asynchron. Du kannst dich niemals darauf verlassen, dass ein String vollständig ankommt. Genau so kann es passieren, dass du den Beginn des nächsten Strings noch am Ende des vorhergehenden präsentiert bekommst. Also anstatt
"Hallo
Kurt"

empfängst du

"Hallo Ku
rt"

Eine serielle Bit-Pipe, wie es ein RFCOMM Kanal ist, eignet sich nicht, rein transparent paketvermittelte Daten auszutauschen. Du brauchst auf jeden Fall ein Protokoll drumherum, aus dem die Konstellation der Pakete ermitteln kannst. Entweder schickst du einen Header vorweg, der u.a. eine Längeninformation enthält, oder du sendest definierte Delimiter-Bytes, die du in der Payload escapest (wie z.B. SLIP es macht).
__________________
Ich trinke gern einen Kaffee:
Spende
500 MB Dropbox Speicher zusätzlich für Neuanmeldungen: DropBox Anmeldung

Kein technischer Support per PN! Benutzt das Forum. Für administrative Dinge könnt ihr mich aber jederzeit auch per PN ansprechen.
Forumregeln - wichtige Funktionen - Galaxy Note FAQ
frank_m ist offline   Mit Zitat antworten
Alt 05.02.2012, 20:46   #4 (permalink)
Android-Hilfe.de Mitglied

Modell: Nexus S

Registriert seit: 30.09.2011
Beiträge: 137
Abgegebene Danke: 8
Erhielt 35 Danke für 33 Beiträge
Standard AW: Bluetooth empfang, RFCOMM

Zitat:
Zitat von molleb Beitrag anzeigen
Es wird also schon ein Handler abgearbeitet, obwohl der string noch nicht komplett ist, wie kann ich zb nach x Zeichen den Handler starten lassen oder nach definierten Steuerzeichen?
Wenn ich deine Frage richtig verstanden habe, ist das der Punkt bei dem du Hilfe brauchst. Wobei ich nicht so ganz verstehe wo das genau Problem hier liegt. Auf den ersten Blick ist die Antwort auf dein Problem: Alles Zwischenspeichern was ankommt bis X Zeichen da sind und dann erst den Handler auslösen. Oder hab ich was übersehen?
strider ist offline   Mit Zitat antworten
Alt 06.02.2012, 21:59   #5 (permalink)
Neuer Benutzer

Registriert seit: 01.12.2011
Beiträge: 20
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Bluetooth empfang, RFCOMM

Hmm genau an diesen Punkt habe ich mein Problem, wie kann ich den Heater starten lassen, wenn er eine bestimmte Anzahl an Packeten empfangen hat?
Kann mir einer ein Beispiel Protokol, ein sehr einfaches *zb Byte0=Anzahl der Data-Byte, Byten=Databyte* geben?
molleb ist offline   Mit Zitat antworten
Alt 06.02.2012, 22:08   #6 (permalink)
Moderator
 
Benutzerbild von frank_m

Modell: Galaxy Note, Galaxy S, Galaxy Tab 7.7

Registriert seit: 21.09.2010
Beiträge: 7.738
Abgegebene Danke: 155
Erhielt 2.544 Danke für 1.566 Beiträge
Standard AW: Bluetooth empfang, RFCOMM

Ja, so kannst du es machen. Ein Byte am Anfang mit einer Längeninformation, dann die eigentliche Payload. Dann weißt du, auf wie viele Bytes du warten musst. Und wenn die alle da sind, kommt wieder eine Längeninformation.
__________________
Ich trinke gern einen Kaffee:
Spende
500 MB Dropbox Speicher zusätzlich für Neuanmeldungen: DropBox Anmeldung

Kein technischer Support per PN! Benutzt das Forum. Für administrative Dinge könnt ihr mich aber jederzeit auch per PN ansprechen.
Forumregeln - wichtige Funktionen - Galaxy Note FAQ
frank_m ist offline   Mit Zitat antworten
Alt 10.02.2012, 14:53   #7 (permalink)
Neuer Benutzer

Registriert seit: 01.12.2011
Beiträge: 20
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Bluetooth empfang, RFCOMM

Ich habe mir das mal angeschaut.
Also ich Empfange ein paar Daten, das Programm geht in sein Thread, arbeitet es ab und meldet es dem Threader, wo ich es weiter verarbeiten kann.
Nun.. wie kann ich das erreichen das er mir bei x Bytes den Thread auslöst?
Ich hole mir ja bei jedem Thread die Daten neu und überschreibe die alten Daten ja.
Werden die Variables beim Thread jedesmal neu erzeugt oder bleiben die erhalten, samt Inhalt?
molleb ist offline   Mit Zitat antworten
Alt 10.02.2012, 15:01   #8 (permalink)
Neuer Benutzer

Registriert seit: 01.12.2011
Beiträge: 20
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard AW: Bluetooth empfang, RFCOMM

Hier mal meine *Empfangsroutine*, ich programmiere normalerweise in C und für Mikrocontroller, daher könnte der Kode etwas komisch wirken.
Leider bekomme ich immer nur 0 raus, egal ob ich die Globale Uart_buffer nehm oder die Lokale buffer_tmp.
Code:
           while (true) {
                try {
                
                    Datan++;

                    // Read from the InputStream
                    bytes = mmInStream.read(buffer); 
                    
                    
                    if(Uart_bytes <5)//noch nicht alles empfangen
                    {
                        for(int n=0; bytes<n; n++)
                        {
                            Uart_buffer[n+Uart_bytes] = buffer[n];
                            
                        }
                    
                        Uart_bytes +=bytes;
                    }
                    
                    if(!(Uart_bytes <5))
                    {
                        
                        mHandler.obtainMessage(MESSAGE_READ, Uart_bytes, -1, Uart_buffer).sendToTarget();    
                        Uart_bytes=0;
                    }
                                                     
               } catch (IOException e) {
                       break;
                }
            }
        }
Edit:
Ahh hab den Fehler, hatte bei der Forschleife die </> vertauscht, nun geht es.

Geändert von molleb (10.02.2012 um 15:37 Uhr)
molleb ist offline   Mit Zitat antworten
Antwort

Stichworte
bluetooth empfang, empfang, input, inputstream, rfcomm

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Sourcecode für Bluetooth RFCOMM enrem Android App Entwicklung 7 26.09.2011 16:29
Empfang/Versand von APK Dateien über Browser/Bluetooth MaGiXeN Motorola Defy Forum 15 17.07.2011 20:18
Bestätigung Bluetooth Empfang ben-g. Nexus S Forum 0 12.04.2011 09:45
Bluetooth APP RFCOMM weiter funktionen deranfaenger Android App Entwicklung 1 18.01.2011 10:26
Bluetooth - RFCOMM - Dateitransfer poeschi Android App Entwicklung 7 21.06.2010 11:14




Du liest gerade: "Bluetooth empfang, RFCOMM" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.