Forum: Mikrocontroller und Digitale Elektronik GSM Modul Antworten einlesen


von mätthu (Gast)


Lesenswert?

Hallo Zusammen

Kann mir jemand helfen? Habe ein GSM Modul von MIPOT, welches durch
AT-Commands (über RX und TX) angesteuert wird. Das senden von SMS ist
kein Problem, funktioniert problemlos. Jedoch wenn ich bestimmte
antworten z.B "OK" vom GSM-Modul einlesen möchte gibts probleme. Dazu
benötige ich den get_string(); befehl. jedoch kann mein microcontroller
die antwort des gsm moduls nicht einlesen, weil die ganzen daten auf
einmal eintreffen. Wenn ich diese antworten vom HyperTerminal eingebe
und schicke, kann der uC sie problemlos lesen...

bermerkung: benutze als microcontroller einen PIC18F6622

von Karl H. (kbuchegg)


Lesenswert?

Das kann viele Ursachen haben, inklusive einem Programmfehler 
deinerseits.

von mätthu (Gast)


Lesenswert?

hier mein code abschnitt:

puts("AT");
get_string(antwort_GSM1,7);



get_string funktion sieht so aus:
1
void get_string(char* s, int max) {
2
   int len;
3
   char c;
4
   int8 counter=0;
5
6
   --max;
7
   len=0;
8
   do {
9
     c=getc();
10
     if(c==8) {  // Backspace
11
        if(len>0) {
12
          len--;
13
          putc(c);
14
          putc(' ');
15
          putc(c);
16
        }
17
     } else if ((c>=' ')&&(c<='~'))
18
       if(len<max) {
19
         s[len++]=c;
20
         putc(c);
21
       }
22
23
   if(c==13)
24
  {
25
  counter++;
26
  }
27
   } while(counter<=1);
28
   s[len]=0;
29
   counter=0;
30
}

von Karl H. (kbuchegg)


Lesenswert?

mätthu schrieb:

> get_string funktion sieht so aus:

schön, aber an der liegts nicht.

von mätthu (Gast)


Lesenswert?

Das GSM Modul schickt mir nach dem "AT" ein "OK". Vor dem OK und nach 
dem OK befinden sich noch die zeichen CR und LF. Aber dann sollte ich 
doch das OK einlesen können?

von mätthu (Gast)


Lesenswert?

???

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Klingt für mich nach fehlender Datenfluss-Kontrolle (DTR/CTS).

Das Modul hat wohl mehr Pufferspeicher und den kräftigeren Controller, 
deshalb kann es die ungebremst eintreffenden Daten vom MC verarbeiten 
und du hast kein Problem bemerkt.

Wenn es jedoch (ebenfalls ungebremst) antwortet, kommt dein 
schwachbrüstiger MC aus dem Tritt (Puffer am UART?) ...

Frank

von mätthu (Gast)


Lesenswert?

hmm... die leitungen cts und rts u.s.w. benötige ich nicht. nur tx und 
rx. vom pc aus via hyper-terminal kann ich problemlos kommunizieren mit 
gsm modul und uC! jedoch von uC zu GSM Modul nicht 100%... hat 
irgendjemand schon mal versucht daten von einem gsm modul, oder ein 
anders gerät, einzulesen und auszuwerten?..

von Niels K. (niels-k)


Lesenswert?

Das Problem hatte ich auch bei meinem GSM-Tracker. Hier der Artikel zum 
nachschauen: Beitrag "GSM GPS - Tracker"
Ist zwar nicht in C, aber das Prinzip kann dort entnommen werden.

Das Problem ist, dass das Modem die Daten "spiegelt". Das bedeutet, dass 
es die Daten, die es empfängt noch einmal ausgibt. Daher muss man nach 
dem Sendenbefehl erst die eigene Eingabe abwarten und anschließend noch 
zwei Zeilensprünge. Danach kommt die Antwort, also z. B. "OK" oder "NO 
CARRIER" oder "ERROR".


Ich habe es mit einer dynamischen Fehlerkontrolle gelöst, da keine 
Datenflusskontrolle möglich ist. Das bedeutet, dass der Befehl 
wiederholt wird, solange bis eine definierte Antwort vorliegt. Dabei 
wird eine variable Anzahl von Linefeeds abgewartet.

von Spice (Gast)


Lesenswert?

Versuchs mal Interruptgestuert für µC-Rx... Ich denke du bekommst noch 
ein echo vom modem deiner eingabe und hast daher nen Wurm drin. Bei 
sowas empfiehlt es sich meistens parallel einen FTDI oder ähnliches 
dranzuhängen, um die Verbindung mittracen zu können, quasi onthefly 
debugging...

von Spice (Gast)


Lesenswert?

lese gerade du verwendest einen pic, sorry ich dachte instinktiv, dass 
es  sich um einen AVR handelt.

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.