GSM Modul Antworten einlesen

Gast #1424687
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
Gast #1424805
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
}
(Firma: Q3) #1425646
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
Gast #1428534
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?..
#1431603
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.
Gast #1431629
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren