Forum: PC-Programmierung SMS via terminal rs232 über AT+cmgs Problem


von Jannik (Gast)


Lesenswert?

Hallo,

Ich habe eine kleine Frage bezüglich dem AT befehl cmgs der eine sms 
senden soll.
Wenn alles soweit funktioniert, soll es später mit in einen mc 
integriert werden. Zunächst die Trockenübung übers Hyperterminal.

Die Verbindung zum Handy (Siemens S35) ist einwandfrei.

Ich habe mit hilfe einer kleiner Software einen "passenden" PDU 
generiert.

PDU: 0021000B801007214365F700000158

PDU LENGTH IS 15 BYTES
NO SMSC ADDRESS PRESENT
MESSAGE HEADER FLAGS
  MESSAGE TYPE :  SMS SUBMIT
  REJECT DUPLICATES :  NO
  VALIDITY PERIOD :  NOT PRESENT
  REPLY PATH :  NO
  USER DATA HEADER :  NO UDH
  REQ. STATUS REPORT :  YES
  MSG REFERENCE NR. :  0 (0x00)

DESTINATION ADDRESS
  NUMBER IS :  01701234567
  TYPE OF NR. :  Unknown
  NPI :  Unknown

PROTOCOL IDENTIFIER  (0x00)
  MESSAGE ENTITIES :  SME-to-SME
  PROTOCOL USED :  Implicit / SC-specific

DATA CODING SCHEME  (0x00)
  AUTO-DELETION :  OFF
  COMPRESSION :  OFF
  MESSAGE CLASS :  NONE
  ALPHABET USED :  7bit default

VALIDITY OF MESSAGE :  NONE GIVEN

USER DATA PART OF SM
  USER DATA LENGTH :  1 septets
  USER DATA (TEXT) :  X

Dann gebe ich doch wie folgt ins terminal ein

at+cmgs=15 //Enter
> 0021000B801007214365F700000158 //Enter und danach passiert nichts mehr. Wieso? 
danach muesste ich doch noch einmal ein > zurueckbekommen und die message 
reference = 0 eingeben, oder?

Wuerde mich sehr ueber Eure Hilfe freuen.

Gruss
Jannik

von Psiyou .. (Gast)


Lesenswert?

Schau mal zur Doku con cmgs, nach dem PDU muss ein Strg+z (ESC) folgen 
und kein Enter.

von Olaf S. (olaf2001)


Lesenswert?

Strg+z ist EOT (ASCII 26), nicht ESC (ASCII 27). Ansonsten völlig 
korrekt.

von Psiyou .. (Gast)


Lesenswert?

Ups, sorry. Da bin ich wohl irgendwie verrutscht. Muss natürlich EOT 
sein...

von Jannik (Gast)


Lesenswert?

Ja, wunderbar :) es funktioniert..

Wenn ich das jetzt über den Mikrocontroller realisieren möchte,

Schicke ich ihm folgendes?!

"at+cmgs=15"; //1. String
_delay_ms(1); //Muss man hier abwarten oder etwas abfragen?
"0021000B801007214365F700000158"; //2. String
_delay_ms(1); //Warten oder Abfragen von irgendwelchen Statusbits 
notwenig?
"EOT als ASCII zeichen"; //3. String


Gruß
Jannik

von Psiyou .. (Gast)


Lesenswert?

Hi,

das hängt alles etwas davon ab wie Du Dein Handy eingestellt hast.
Würde das ungefähr so initialisieren:
ATZ   (alles Rücksetzen)
ATE0  (kein Echo der Zeichen)
ATV0  (bestätigung als Nummerkennung)

Dann kannst die Delays weglassen.
Probiers einfach in einem Terminal, am besten HTerm oder so aus, da 
siehst auch was so an CR/LF übertragen wird. Das unterscheidet sich gern 
mal von Handy zu Handy bzw von den Einstellungen.
Da siehst dann auch was rein kommt und worauf Du warten musst bzw welche 
Daten abgearbeitet werden müssen.

Gruß

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.