www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GSM Modul Antworten einlesen


Autor: mätthu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann viele Ursachen haben, inklusive einem Programmfehler 
deinerseits.

Autor: mätthu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier mein code abschnitt:

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



get_string funktion sieht so aus:
void get_string(char* s, int max) {
   int len;
   char c;
   int8 counter=0;

   --max;
   len=0;
   do {
     c=getc();
     if(c==8) {  // Backspace
        if(len>0) {
          len--;
          putc(c);
          putc(' ');
          putc(c);
        }
     } else if ((c>=' ')&&(c<='~'))
       if(len<max) {
         s[len++]=c;
         putc(c);
       }

   if(c==13)
  {
  counter++;
  }
   } while(counter<=1);
   s[len]=0;
   counter=0;
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mätthu schrieb:

> get_string funktion sieht so aus:

schön, aber an der liegts nicht.

Autor: mätthu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: mätthu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
???

Autor: Frank Esselbach (Firma: Q3) (qualidat)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mätthu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?..

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Spice (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Spice (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.