mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SMS Empfangen über HyperTerminal


Autor: Christian (Gast)
Datum:

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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum Freunde

Hat vieleicht jemand einen guten Ratschlag für mich

Mit freundlichen Grüßen
Christian

Autor: mthomas (Gast)
Datum:

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

Autor: Christian (Gast)
Datum:

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

Autor: Christian (Gast)
Datum:

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

}

Autor: mthomas (Gast)
Datum:

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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo MThomas

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

Mit freundlichen Grüßen
Christian

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.