Forum: Mikrocontroller und Digitale Elektronik SMS Fehler


von Christian (Gast)


Lesenswert?

Hallo wiedermal,
ein Problem jagt das nächste! Was ist denn jetzt schon wieder an diesem
Stückchen Code falsch ? (Ich verwende seit neuestem den Bascom
Compiler)

Print "AT+CMGW=34"
Waitms 100
Print "01911100039121F30000AA05617ABBCC06" ; Chr(26);

Es wird einfach keine SMS gespeichert verrücktwerd. Einmal hatte ich
eine "Ungültige SMS im Ausgang", aber seitdem nie wieder etwas. Ich
habe es auch schon mit Chr(27) versucht, aber auch nix. Hat jemand nen
Tipp ?

von mthomas (Gast)


Lesenswert?

Vielleicht liegt's daran:

lt. Siemens Developer-Guide zaehlt die SCA-Len nicht zur
Laenge der PDU (z.B. bei AT+CMGS/GMGW), so die PDU richtig
aufgebaut ist, kann man AT+...=32 und =33 ausprobieren.

<ctrl-z> ist $1A sollte als mit 26 schon richtig sein.

Erstmal mit Terminal-Programm ausprobieren (Br@y-Terminal -
sehr praktisch)

von mike (Gast)


Lesenswert?

hi

müsste nicht nach jedem befehl ein chr$(13) also ein return kommen
damit das handy merkt dass der befehl abgechlossen ist ?

mfg
mike

von Semme (Gast)


Lesenswert?

Wenn die oben genannte PDU die Originalversion ist (also keine spezielle
zum hier posten), dann probier als Länge doch mal 16 aus.

-> Print "AT+CMGW=16"

von Gerhard (Gast)


Lesenswert?

Hi,

hab da auch ne Weile getüftelt.
Der Fehler liegt an der Länge der PDU.
Ein super Programm das dir dabei hilft
ist pduspy.exe.
Einfach mal danach googeln.

Gruss Gerhard

von Christian (Gast)


Lesenswert?

Tja, es klappt immer noch nicht. Ich habe jetzt jede Länge ausprobiert.
Auch mit und ohne Chr(13) geht es nicht. Der PDU-String wurde übrigens
über diesen Link erstellt:

http://home.student.utwente.nl/s.p.ekkebus/portfolio/resource/sms_pdu.html

Das Problem, der keinen seinen eigenen Code nicht mehr entschlüsseln.
Also ich denk mal nicht das der dann so ganz fehlerfrei ist. Hat jemand
von euch einen PDU-String der auch 100%-ig funktioniert? Wenn ich einen
mit PDUspy erstelle und die Länge-1 probiere geht es auch nicht. Habt
ihr noch Tipps ?

Viele Grüße

Christian

von Gerhard (Gast)


Angehängte Dateien:

Lesenswert?

Hi Christian ,

hab dir mal ne Word Datei angehängt
Bei mir hat das so geklappt.
Teste auch mal ob die Verbindung Handy - AVR
o.k. ist.

Sonst probier das ganze erst mal mit Hyperterminal .
Gruss Gerhard

von Christian (Gast)


Lesenswert?

Also vielen Dank für die Mühe erstmal! Aber das geht nicht bei mir, hab
ich schon die ganze Zeit so probiert. Die Verbindung Handy <--> AVR ist
in Ordnung. Befehle wie "ATD..." funktionieren ganz normal. Ist mir
echt ein Rätsel !?

von Jürgen (Gast)


Lesenswert?

Ich habe das auch mit PDUSpy gemacht, allerdings ist die Länge die von
PDUSpy angezeigt wird nicht die richtige für den AT befehl.
Semme hatte da schon recht mit der Länge 16. Von der Länge die
Angezeigt wird, mußt du immer noch 1 abziehen.
Hast Du das ganze inzwischen mal mit dem Hyperterminal o.ä.
ausprobiert?

von Christian (Gast)


Lesenswert?

Jawohl ! Vielen Dank. Jetzt hat es geklappt. Jürgen und Semme ihr habt
recht, da muß man 1 abziehen. Anscheinend hatte ich noch einen anderen
Fehler weil es vorher nie funktionierte! Egal, jetzt passt es ! THX !

0001000491805100001AC8309BFD0619DFF27ADB05B2A6CBECB21B440CBBD7A010

von Christian (Gast)


Lesenswert?

Noch einen letzten Tipp von mir: Mir ist gerade aufgefallen das es nur
funktioniert wenn die Beleuchtung vom Handy (C35) aus ist. Das heißt,
ich darf ein paar Sekunden keine Taste drücken und wenn ich dann den µC
resette klappt die SMS Übertragung. Auf das muß man erstmal kommen!

----------------
THREAD CLOSED - Problem gelöst
----------------

von Jürgen (Gast)


Lesenswert?

was hat das mit dem Licht zu tun, zapfst Du dir die Spannung für den
Controller vom Handy ab??

von Christian (Gast)


Lesenswert?

Keine Ahnung warum das so zusammenhängt, aber glaub's mir einfach. Der
Befehl "AT+CMGW=.." funktioniert nur wenn die Beleuchtung vom Handy
aus ist. Spannung für den µC kommt nicht vom Handy.

von Jürgen (Gast)


Lesenswert?

Hi Christian,
ich habe das jetzt gerade auch mal mit 'nem C35 ausprobiert, klappt
ohne Probleme, egal ob das Display leuchtet oder nicht.
Der einzige unterschied, zu den Handys die ich bisher probiert habe
ist, daß es nicht auf eine Baudrate von 9600 reagiert, sondern nur bei
19200. Vielleicht hat dein C35 ja 'ne Macke, wer weiß.

von Helge (Gast)


Lesenswert?

Hallo
Wie hast du es nun mit dem AT+CMGS=x gelöst?
Bei mir funktioniert die ganze Sache mit AT+CMGS=1 einwandfrei.
Das verwundert mich ein wenig und ich weiß auch nicht
ob ich das auf Dauer so lassen kann.
Hab insgesamt ca. 20 SMS gesendet und es war alles ok.
Seltsam oder? Habe auch verschiedene Netze probiert.

Gruß Helge

von Jürgen (Gast)


Lesenswert?

@Helge
Ich arbeite im Controller nicht mit AT+CMGS=x sondern mit at+CMSS=x
damit versende ich dann eine Nachricht, die an Index x im SMS-Speicher
der Karte steht. Das macht das ganze auch etwas flexibler, da so der
Controller ja nicht die Telefonnummer 'wissen' muß.

Gruß Jürgen

von Christian (Gast)


Lesenswert?

Nach langem Probieren funktioniert es nun endlich. Die Länge ist die von
"PDUspy angezeigte - 1". Dann noch ein paar Pausen und einmal "AT"
eingefügt, und siehe da, es läuft.

So z.B.:

Print "AT"
Waitms 500

Print "AT+CMGW=34"
Waitms 800
Print "01911100039121F30000AA05617ABBCC06" ; Chr(26);
Wait 2

Von dem Befehl "at+CMSS=x" hab ich noch nie was gehört. Wenn ich das
gewußt hätte, wäre mir viel Ärger erspart worden !

von Helge (Gast)


Lesenswert?

Hallo
Danke euch erstmal.Mit dem SMS Text von der Karte wäre ich nicht hin
gekommen weil die Karte öfter mit einer anderen getauscht wird.Aber mit
dem CMGW das werde ich mir noch mal durch den Kopf gehen lassen.
Gruß Helge

von timmi (Gast)


Lesenswert?

Hi,
Habe ebenfals ein Problem beim Versenden einer SMS. Ich habe ein
Termianl Programm geschrieben in Visual Basic wo ich die AT-Befehle
über die serielle Schnittstelle ans Handy schicke.
Meine Frage:
Wie kann ich Ctrl-Z in Visual Basic ausgeben?
chr(26) funtioniert nicht, kann mir jm helfen?

Programm:
Dim i As Long

    comPort.Output = "at+cmgs=22" + vbCrLf

        For i = 0 To 1000000        'wait
        Next i

    comPort.Output =
"0001000c9153021246499800000AE8329BFD4697D9EC37"

        For i = 0 To 100000
        Next i


    comPort.Output = Chr(26)

von Henning (Gast)


Lesenswert?

chr(26) meint einfach nur das einzelne Zeichen (char) 26  oder auch $1A
in Hex

...so sehe ich das

von Mike (Gast)


Lesenswert?

Christian und Jürgen, was für handys nehmt ihr denn da? auch was anderes
 ausser siemens und motorola? hat da schon jemand erfahrungen ob es
auch mit anderen handys und dem at-befehlen geht?

wie siehts aus mit der verbindung handy und atmel. per datenkabel oder
direkt auf die pins?

von Henning (Gast)


Lesenswert?

bei http://www.nobbi.com/index.htm gibt´s infos dazu. nokia scheint
probleme zu geben (wie so oft).
generell sollte jedes handy, das als modem an nen laptop geschlossen
wird gehen, oda?

von Jürgen (Gast)


Lesenswert?

@Mike ich hab bis jetzt nur Siemens Handys getestet. Die Verbindung wird
bei mir über ein Datenkabel hergestellt.

von Hans (Gast)


Lesenswert?

falls es jemanden interessierne sollte... ich hab mich jetzt 2 tage mit
dem zeugs herumgeschlagen und hab jetzt einen schönen c-code der PDUs
generiert... den werd ich gleich mal für den AVR porten was eigentlich
ohne probs gehn müsste da ich nur libc funktionen verwende und die
werden auch noch rausfliegen...

und ganz so nebenbei hab ich mir ein prog geschrieben das com1 auf com2
weiterleitet... sprich das was auf com1 rein kommt geht auf com2
raus... und umgekehrt... das was da hin und her fliesst wird
angezeigt...ganz praktisch zum mitsniffn g


73 de oe6jwf /hans

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.