Bluetooth Input Stream puffern?

  • Hallo Android Developers,


    ich programmiere eine Anwendung bei der mittels Bluetooth Daten mit einem Microcontroller ausgetauscht werden, als Vorlage dient der offizielle Bluetooth Chat. Die Anwendung läuft soweit, dass Daten gesendet und empfangen werden können. Die Nutzdaten sind nicht immer gleicher Länge.
    Beispiel:
    Ein Paket: 1.Byte Startzeichen, 2.Byte Länge, 3.Byte ID, X.Byte Nutzdaten, X+1.Byte CRC
    Ein Timer pollt zyklisch ein Paket, das die Verbindung aktiv hält, als Antwort kommt die Gerätekennung zurück. Diese wird im MESSAGE_READ des Handlers ausgewertet.


    Fall 1: Die Antwort wird komplett empfangen - 1% der Fälle
    Fall 2: Nur das Startzeichen wird empfangen 95% der Fälle
    Fall 3: Startzeichen und Länge werden empfangen 1% der Fälle
    Fall 4: Startzeichen und Länge und Id werden empfangen 1% der Fälle
    Fall 5: Startzeichen und Länge und Id + x werden empfangen 2% der Fälle



    Es wird zu 95% kurz nach eintreffen eines Startzeichens der Empfang abgebrochen, so dass nicht mal der Paketkopf konsistent ist. Der 2. Teil des Pakets kommt dann komischerweise komplett an, auch 50Byte am Stück. Ich denke ans puffern, da eine Fallunterscheidung (wie ich sie momentan habe) viel zu umständlich ist. Es würde mich sehr interressieren was die Erklärung für dieses Verhalten ist, wie kann ich das herausfinden (welcher Prozeß unterbricht den Empfang).


    Wie wäre hier die richtige herangehensweise, und wie sähe eine elegante Lösung aus?


    Meine Programmierfahrungen sind noch ziemlich bescheiden. Hilfe wäre toll!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!