Forum: Mikrocontroller und Digitale Elektronik BTM222 Name ändern


von Yaro (Gast)


Lesenswert?

Hallo Leute,

ich habe ein Problem mit dem Ändern des namens eines BTM222.

Er stellt eine Verbindung zum PC her, sendet und empfängt, lässt seinen 
Namen aber ungern ändern.

Mit diesem Code:
1
  BTM_send_blocking('A');
2
  BTM_send_blocking('T');
3
  BTM_send_blocking('N');
4
  BTM_send_blocking('=');
5
  BTM_send_blocking('M');
6
  BTM_send_blocking('r');
7
  BTM_send_blocking(' ');
8
  BTM_send_blocking('L');
9
  BTM_send_blocking('C');
10
  BTM_send_blocking('D');
11
12
  BTM_send_blocking(0x0D);
13
14
15
  /** initialize BTM-222 */
16
  /* send ATR1: slave role */
17
  BTM_send_blocking('A');
18
  BTM_send_blocking('T');
19
  BTM_send_blocking('R');
20
  BTM_send_blocking('1');
21
  BTM_send_blocking(0x0D);
22
23
  /* send ATD0: accept any comm. partner */
24
  BTM_send_blocking('A');
25
  BTM_send_blocking('T');
26
  BTM_send_blocking('D');
27
  BTM_send_blocking('0');
28
  BTM_send_blocking(0x0D);

habe ich es geschafft, den Namen zu ändern (nach 20 Versuchen mit 
ähnlichem Code).
Wenn ich jetzt aber wieder einen anderen Namen haben will, funktioniert 
das wieder nicht. (mit demselben code, nur halt der Name anders).
Den Namen prüfe ich mit nem USB Dongel, das an einen PC angeschlossen 
ist.

Woran kann das liegen?

von Jim M. (turboj)


Lesenswert?

Wenn es ein Windows-PC ist, hat er den Namen noch in der Registry 
gespeichert, genauer: Den Namen zur Bluetooth-(MAC-) Adresse.

Ich lasse hier immer mein Bluetooth Handy scannen, wenn ich so eine 
Namensänderung verifizieren möchte.

von Yaro (Gast)


Lesenswert?

Ich verstehe das nicht ganz...

Ich habe eine Platine mit einem BTM, die zum PC über ein USB Dongel 
Kontakt aufnimmt.
Ich lösche das Bluetooth Gerät immer bevor ich es aktuallisiere.

Nach der Suche nach neuen Geräten erscheint zunächst nur eine Adresse, 
die nach einigen Sekunden dann zu enem Namen wird.
Dieser Name ist der Name des BTMs.

Könntest du bitte genauer erklären, was davon nicht gespeichert wird?


Das komische ist, dass es ein mal geklappt hat, den Namen zu ändern und 
der ist jetzt auch fest...
Aber mit demselben Code geht es leider nicht nochmal.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Welche Firmware hat das BTM? Wenn sie älter als 4.20 ist, muss zwischen 
jedem Zeichen im 'Command mode' 50ms gewartet werden.

von Yaro (Gast)


Lesenswert?

Ich weiß nicht, welche Firmware drauf ist, aber die übrigen Einstllungen 
funktionieren ja auch.
Mit RTS und CTS kann man ja anzeigen bzw. auslesen, wann man bereit zum 
lesen ist.
Hab aber auch schonmal 40ms wartezeit eingebaut, hat aba nix gebracht.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Yaro schrieb:
> Ich weiß nicht, welche Firmware drauf ist,

ati0 (AaTeIiNull) eingeben. ati1 (AaTeIiEins) bringt eine 
Zusammenfassung aller Einstellungen.

von Yaro (Gast)


Lesenswert?

Wenn ich ATI0 neingebe, dann gibt er mir einfach ein echo, egal ob ich 
Wartezeiten einfüge oder nicht...

Woran könnte das liegen?

von Yaro (Gast)


Lesenswert?

Scannen mit dem Handy bringt selbes Ergebniss wie Scannen mit dem PC...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Yaro schrieb:
> Wenn ich ATI0 neingebe, dann gibt er mir einfach ein echo, egal ob ich
> Wartezeiten einfüge oder nicht...

Gibst Du nach dem ATI0 auch ein CR (0x0D)?

von Yaro (Gast)


Lesenswert?

Jo

so gibt er mir kein Echo det AT Befehle, verschluckt aber auch das erste 
Zeichen, welches ich senden will:
1
BTM_send_blocking('A');
2
  BTM_send_blocking('T');
3
  BTM_send_blocking('N');
4
  BTM_send_blocking('=');
5
  BTM_send_blocking('A');
6
  BTM_send_blocking('r');
7
  BTM_send_blocking(' ');
8
  BTM_send_blocking('L');
9
  BTM_send_blocking('C');
10
  BTM_send_blocking('D');
11
12
  BTM_send_blocking(0x0D);
13
14
15
  /** initialize BTM-222 */
16
  /* send ATR1: slave role */
17
  BTM_send_blocking('A');
18
  BTM_send_blocking('T');
19
  BTM_send_blocking('R');
20
  BTM_send_blocking('1');
21
  BTM_send_blocking(0x0D);
22
23
  /* send ATD0: accept any comm. partner */
24
  BTM_send_blocking('A');
25
  BTM_send_blocking('T');
26
  BTM_send_blocking('D');
27
  BTM_send_blocking('0');
28
  BTM_send_blocking(0x0D);


so gibt er mir ein Echo det AT Befehle, dann das erste Zeichen, dann ein 
Error, dann das nächste Zeichen:
1
  BTM_send_blocking('A');
2
    BTM_send_blocking('T');
3
    BTM_send_blocking('I');
4
    BTM_send_blocking('1');
5
    BTM_send_blocking(0x0D);
6
7
8
9
  /** initialize BTM-222 */
10
  /* send ATR1: slave role */
11
  BTM_send_blocking('A');
12
  BTM_send_blocking('T');
13
  BTM_send_blocking('R');
14
  BTM_send_blocking('1');
15
  BTM_send_blocking(0x0D);
16
17
  /* send ATD0: accept any comm. partner */
18
  BTM_send_blocking('A');
19
  BTM_send_blocking('T');
20
  BTM_send_blocking('D');
21
  BTM_send_blocking('0');
22
  BTM_send_blocking(0x0D);

von Yaro (Gast)


Lesenswert?

Oha...
grad hat es so geklappt:
1
BTM_send_blocking('A');
2
    BTM_send_blocking('T');
3
    BTM_send_blocking('I');
4
    BTM_send_blocking('0');
5
    BTM_send_blocking(0x0D);
6
7
    _delay_ms(50);
8
9
  /** initialize BTM-222 */
10
  /* send ATR1: slave role */
11
  BTM_send_blocking('A');
12
  BTM_send_blocking('T');
13
  BTM_send_blocking('R');
14
  BTM_send_blocking('1');
15
  BTM_send_blocking(0x0D);
16
17
  _delay_ms(50);
18
19
  /* send ATD0: accept any comm. partner */
20
  BTM_send_blocking('A');
21
  BTM_send_blocking('T');
22
  BTM_send_blocking('D');
23
  BTM_send_blocking('0');
24
  BTM_send_blocking(0x0D);

hab Version 4.35

von Yaro (Gast)


Lesenswert?

Ha, jetzt geht es

ich musste zwischen den Befehlen eine Wartezeit einfügen.
Ich habe früher die Wartezeit aber zwischen den einzelnen Chars 
eingefügt......


Danke für eure Hilfe!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Yaro schrieb:

> hab Version 4.35

Das ist schon mal gut.

Yaro schrieb:
> ich musste zwischen den Befehlen eine Wartezeit einfügen.

Ist ja auch logisch, da das Modul da seine Antwort, im einfachsten Fall 
0x0D,0x0A,'O','K',0x0D,0x0A sendet. Da darfst Du natürlich nicht 
daziwschensabbeln ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.