Hallo Leute,
ich spiele gerade an einem BTM222 herum. Ich habe es geschafft, eine
Verbindung mit einem Bluetooth Stick am PC herzustellen und kann Daten
verschicken.
Wenn ich nun periodisch Daten an den PC sende, stürzt das BTM irgendwann
ab. Wann genau, hängt von den gesendeten Daten und ein Bisschen vom
Zufall ab.
Wenn ich z.B. immer jeweils nur ein Datum sende, dann bricht es nach ca.
548 oder 648 Sendevorgängen ab. Wenn ich mehrere Daten schicke, können
es auch mal über Tausend Sendevorgänge sein.
Hat jemand eine Idee, woran das liegen könnte?
Gruß, BTMan
BTMan schrieb:> Hat jemand eine Idee, woran das liegen könnte?
Habe die Erfahrung gemacht, daß manche BT-Sticks samt Software Probleme
machen. Mal andere Exemplare probieren. Ich befeuere meinen
(unkonfigurierten) BTM kontinuierlich mit Daten- seitdem der "richtige"
Stick steckt läuft der Empfang dauerhaft problemlos.
Bestimmte auf serielle BT-Ports zugreifende Software (z.B. VSPE/64)
bringt den BTM ebenfalls reproduzierbar zum Absturz.
Ich habe jetzt zusätzliche Tests gemacht.
Ein anderer Bluetooth Stick macht keinen Unterschied.
Am Programm wird es nicht liegen, denn auch wenn ich eine Verbindung
ohne Programm durchführe (d.h. direkt in der Bluetooth Umgebung
anklicke, dass es sich verbinden soll), habe ich dasselbe Problem.
Es scheint, dass die Verbindung verloren geht. Wenn ich einen disconnect
und anschließend wieder einen connect durchführe, kann ich wieder für
kurze Zeit etwas empfangen.
Beim erfolgreichen reconnect bekomme ich vom BTM: conn.-error10
Was bedeutet das?
Wie ich jetzt herausgefunden habe, müssen immer Pakete einer bestimmten
Mindestgröße gesendet werden.
Bei einer Periode von 10ms sind es bei mir 6Byte, bei 20ms reichen
10Byte.
Es wird wohl etwas damit zutun haben, wie das BTM die Packete Packt, um
sie zu verschicken. Auf jeden Fall ist das ein Unding, dass soetwas
nirgendwo dokumentiert ist!
BTMan schrieb:> Wie ich jetzt herausgefunden habe, müssen immer Pakete einer bestimmten> Mindestgröße gesendet werden.
Kann ich nicht bestätigen. Auch 1 Byte Pakete kommen bei mir immer
sauber an. Möglicherweise hast Du solch ein ungünstiges Zeitintervall,
dass beim Pakte schnüren ein Puffer vollläuft, weil Du immer wieder
Daten schickst, wenn ein Paket gerade noch nicht abgeschickt wurde.
Könnte ein selten auftretender Bug sein.
hmm, ich habe es reproduzierbar mit 10ms und auch mit 20ms Intervall
ausprobiert.
Ein Puffer kann eigentlich nicht vollaufen, wenn ich 1Byte alle 10ms
schicke. Hab auch schon versucht, eine Erklärung zu finden, habs aber
mittlerweile aufgegeben .
hatte mit einem BLE112 auch so ein Problem. Soweit ich mich erinnern
kann, war da wirklich das Problem, dass ein Puffer überlaufen ist.
Die Bluetooth Verbindung ist eigentlich nicht "echtzeitfähig", d.H. der
Sender muss immer auf die Bestätigung des Empfängers warten. Macht der
Empfänger gerade was anderes und ist nicht bereit, verzögert sich die
Übertragung des Datenpakets, schickst du munter weitere Daten an das BL
Modul, überläuft irgendwann der Puffer.
Deshalb stürzt dein BL Modul nicht immer exakt bei der gleichen Anzahl
bytes ab.
Versuch folgendes:
extrem wenig Daten senden, zB alle 200ms. Taucht das Problem immer noch
auf, hast du ein anderes Problem.
Ich nutze ein BTM222 recht oft, um Log-Meldungen vom Mikrocontroller zum
PC zu senden. Dabei nutze ich die Default Settings des Moduls. Hatte
bisher noch nie Probleme.