Forum: Mikrocontroller und Digitale Elektronik SMS Empfangen über HyperTerminal


von Christian (Gast)


Lesenswert?

Hallo Mikrocontroller Freunde

kann mir jemand sagen wie ich über den Hyperterminal eine gerade
angekommende SMS einlesen kann? S55 Siemens

Ich habe schon die Links und Datenblätter durchgewälst und auch sehr
viel brauchbares gefunden..

Nur in der Realisierung hapert es..

Kann mir jemand die benötigten AT-Befehle in der richtigen Reigenfolge
mal demonstrieren.

mit feundlichen Grüßen
Christian

Beispiel aus einem Datenblatt...

at+cmgl=x

Auslesen der mit x angegebenen Teilmenge von Kurznachrichten aus dem
mit +CPMS eingestellten Speicherbereich. Die Nachrichten werden im
folgenden Format ausgegeben:
+CMGL: index, status, length
.......PDU.......

von Christian (Gast)


Lesenswert?

Hallo Forum Freunde

Hat vieleicht jemand einen guten Ratschlag für mich

Mit freundlichen Grüßen
Christian

von mthomas (Gast)


Lesenswert?

Falls das Siemens S55 nur SMS im PDU-Mode unterstuetzt, kommt man um das
dekodierden der PDU nicht herum, das kann ein "normales"
Terminalprogramm nicht. Im Text-Mode erhaelt man die SMS in Klarschrift
im Terminal-Fenster. Man kann testen, ob SMS im Text-Mode vom ME
unterstuetzt wird: AT+CMGF=1<CR> falls dies vom ME mit OK beantwortet
wird, kann man im Anschluss SMSe mit AT+CMGR=<idy><CR> aus dem aktiven
Speicher (normalerweise Kartenspeicher) auslesen. (Nicht 100% sicher
bei den AT-Befehlen, muesste aber so klappen. Im Zweifel in der
Dokumentation zu AT-Befehle nach "text-mode" suchen)

von Christian (Gast)


Lesenswert?

Hallo Tomas
das S55 kann nur PDU-Mode. Das ist auch nicht so das Problem.

Ich währe schon glücklich wenn ich diesen String endlich vom Handy an
den Terminal gesendet bekomme.

d.h. Ich möchte doch nur eine SMS die gerad3e angekommen ist mit dem
Hyperterminal einlesen.

AT+CMGR=<idy><CR> Kannst du mir vieleicht noch mailen was man bei idy
hereinschreib.

Mit freundlichen Grüßen
Christian

von Christian (Gast)


Lesenswert?

Hallo

Weitere Frage zu diesem Thema
Wenn ich den Befehl AT an das Handy sende antwortet es mit OK so weit
so gut(HyperTerminal). Dieses OK möchte ich jetzt mit meinem Controller
AT89S8252 empfangen und auf einem Display darstellen.

d.h ich sende AT und möchte nun das OK einlesen.

Kann mir vieleicht jemand etwas über meinen Fehler im Quellcode sagen.
Es ist ein kleines Beispiel mit dem ich AT sende(funktioniert) und
jetzt das OK einlesen möchte.


Quellcode

void main()
{
  unsigned char speicher_1;

  LCD_INI();
  LCD_text(0x80,"SENDEN");
  LCD_kursor(2);

  SMS_INI();
  SMS_anruf("AT");

  while (RI == 1);
  speicher_1 = SBUF;
  LCD_variable(0x90,speicher_1);
  RI = 0;

  zeit();
  speicher_1 = SBUF;
  LCD_variable(0x91,speicher_1);

  LCD_text(0xD0,"BEENDET");

  while(1)
  {
  }
}

void SMS_anruf(unsigned char Text[])
{
  int lauf1,lauf2;

  lauf2 = strlen(Text);

  for(lauf1 = 0; lauf1 < lauf2; lauf1++)
  {
    SMS_warten();
    SBUF = Text [lauf1];
    SMS_warten();
    while(TI == 0);
      TI = 0;
  }

   SBUF = 0x0D;    // Enterbefehl
   SMS_warten();
   while (TI == 0);
   TI = 0;

   SBUF = 0x0A;
   SMS_warten();
   while (TI == 0);
   TI = 0;

}

von mthomas (Gast)


Lesenswert?

1. "SMS zum Terminal" falls ein push vom Handy nicht unterstuetzt
wird, kann man immer noch pollen, Also alle paar Sekunden die
Nachrichten auslesen (idy soll idx heissen. Ist der Index im
Handy/Karten-Speicher). Kann man im Controller ueber eine Schleife
implementieren (idx 1,x,1. x ist abhaengig von Handy/Karte). Das
Statusfeld in der Antwort gibt an, ob es eine neue (unread) SMS ist
oder eine alte. Falls unread PDU dekodieren und auswerten, dann die SMS
im ME/auf der Karte loeschen (AT+CMGD(?)) egal ob unread oder "old".
Diese Vorgehensweise funktioniert zumindest bei meinem "Fernschalter"
recht zuverlaessig.

2. "OK": Zeichen von UART lesen, falls nicht "O" Zeichen verwerfen
und naechstes Zeichen lesen ("auf ein O warten"), falls O, Zeichen
aus UART lesen, falls "K" UART flushen (also $0d $0a ueberlesen) und
Return. Falls nicht K wieder hochspringen zu "warte auf O". Mag mglw.
nicht die eleganteste Loesung sein, aber funktioniert bei mir ganz gut.

von Christian (Gast)


Lesenswert?

Hallo MThomas

Vielen Dank für die Information.
Das muss ich gleich mal ausprobieren

Mit freundlichen Grüßen
Christian

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.