GSM Modul Antworten einlesen

Gast #1424687
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
Gast
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
}
Gast
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?
(Firma: Q3)
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
Gast
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?..
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.
Gast
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...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.