Hallo,
ich verwende in einem Projekt ein BTM-182. Soweit funktioniert alles
ganz gut. Einzig der Wechsel aus dem Datenmodus in den Kommandomodus
funktioniert nicht.
Ich habe im Forum gesucht und verschiedene Threads gefunden. Alle
angegebenen Lösungsvorschläge ausprobiert und keinen Erfolg damit
gehabt.
Das Problem beschätigt mich jetzt seit ca. 2 Wochen. Auch Googeln hat
leider keine neuen Erkenntnisse gebracht.
Hier was ich tue
1 | /* ... Verbindung wurde aufgebaut, Daten empfangen nun wechseln in
|
2 | * Kommandomodus um PIN zu ändern
|
3 | */
|
4 |
|
5 | /* wait so modem can recognize escape sequence */
|
6 | _delay_ms(1000);
|
7 |
|
8 | /* set modem to command mode */
|
9 | st_usart.st_sendBuffer.u8_base[0] = '+';
|
10 | st_usart.st_sendBuffer.u8_base[1] = '+';
|
11 | st_usart.st_sendBuffer.u8_base[2] = '+';
|
12 | st_usart.st_sendBuffer.u8_base[3] = 0x0D;
|
13 | st_usart.st_sendBuffer.u8_count = 4;
|
14 |
|
15 | /* send data
|
16 | * (Methode sendet "u8_count"-Zeichen per "Data Register Empty" Interrupt)
|
17 | */
|
18 | prepareSendUSART();
|
19 |
|
20 | /* Hier kann ich dann auf meinem Terminal die Zeichen "+++" mit Zeilenumbruch (0x0D) sehen */
|
21 |
|
22 | /* wait some time */
|
23 | _delay_ms(1000);
|
24 |
|
25 | /* An dieser Stelle hätte ich eine Antwort des Modem erwartet, aber
|
26 | * nie eine erhalten weder ERROR noch OK.
|
27 | */
|
(HINWEIS: ZUM BESSEREN VERSTÄNDNIS WAS GENAU GESENDET WIRD, WIRD JEDES
BYTE IN '<' UND '>' EINGESCHLOSSEN. DIE KLAMMERN WERDEN NICHT
MITGESENDET!)
Wenn ich jetzt den PIN mittels
<'A'><'T'><'P'><'='><'1'><'2'><'3'><'4'><0x0D> ändern will, dann wird
auch dieser Befehl über das Terminal übermittelt. Das Modem hat also
nicht in den Kommandomodus gewechselt.
Es soll aber laut <'A'><'T'><'I'><'?'><0x0D> auf die Sequenz
<'+'><'+'><'+'><0x0D> lauschen.
Kann mir jemand die genaue Sequenz mit Timings sagen?
Bitte verwendet für einzelne Bytes eine Umklammerung mit "<>". Beispiel:
<'+'><'+'><'+'><0x0D>
Damit klar ist welche Zeichen tatsächlich gesendet werden müssen. Klar
ist auch das die "<>" nicht gesendet werden dürfen!
Als Terminal verwende ich HTerm 0.8. Ich habe an die TX und RX Leitungen
des Modems zustätzliche UART-Empfangsleitungen gelötet, so dass ich per
MAX3232 in weiteren Terminals mitlesen kann was zwischen uC (AT90USB82)
und Modem tatsächlich gesendet wird.