www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ASCII Code für AT-Befehl-Enter


Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute

Ich in hier gerade am experimentieren mit einem GSM-Modem, steuerung 
erfolgt über AT-Befehle.

Wenn ich es am PC-RS232 Port anschliesse schreibe ich zuerst: 
(Tastendruck in "<>")

AT+CMGF=1 (in Textmode schalten)
<ENTER>
AT+CMGS=078xxxxxxx
<ENTER>
"Nachricht"
<Ctrl-Z>

Ich habe folgende ASCII Codes:

Enter:  13
Ctrl-Z: 26

stimmen die beiden Codes?

Lg

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay danke

hat dann vieleicht jemand eine idee wieso bei mir trotzdem keine SMS 
ankommt?

Autor: ROFL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuche mal

AT+CMGF=1 (in Textmode schalten)
<ENTER>
AT+CMGS="+4978xxxxxxx"
<ENTER>
"Nachricht"
<Ctrl-Z>
AT+CMSS=1 (senden)
<ENTER>

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, hats nicht gebracht.

die vorwahl müsste +41 lauten da ich in der schweiz wohne;)

vorallem habe ichs mit dem Terminalprogramm von Shamrock problemlos 
geschafft SMS' zu versenden. Also muss es wohl an den Codes liegen, oder 
muss ich noch was mit der UART Schnittstelle machen? konfigurieren oder 
sonst was?

Lg

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuchs mal mit <CR> (13) <LF> (10) als [Enter] Ersatz...

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
könntest du mir bitte den kompletten quellcode posten mit CR und LF 
eingesetzt?

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay, hab mal eigenständig ein paar Kombos ausprobiert, gebracht hat's 
keine

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#13 als Enter ist in der Tat ungewöhnlich, MAC hat sowas glaub ich, mal 
gemacht. Linux hat nur Zeilenvorschub (#10), Windoof macht das Beste 
draus und nimmt beides (#13#10) :-)

#13#10 ist aber gängig, auch für andere Protokolle (HTTP usw.), wenn du 
einen Quelltext brauchst, liefer doch erst einmal deine Vorlage.

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600



    Print "AT+CMGF=1"
    Waitms 10
    Print Chr(13 )
    Print "AT+CMGS=0788027939"
    Waitms 10
    Print Chr(13 )
    Print "Test Sms Von Mc2"
    Print Chr(26 )
    Waitms 10

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es, wenn Du nach dem Ctrl+Z noch ein CR senden würdest?

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
war vom PC aus nicht notwendig, aber ich versuchs grad ma und gebe 
rückmeldung

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Statt "Print Chr(13)" dann "Print Chr(13) & Chr(10)".

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, ein CR nach Chr (26) brachtes nicht

und wenn ich Print Chr(13) & Chr(10) schreibe krieg ich ne 
Fehlermeldung, kanns also gar nicht kompilieren

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schreib jedes Zeichen in ne eigene Zeile. Also in Microsoft-Basic 
hat das mit dem Verketten so funktioniert...

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auch kein erfolg

man bin am verzweifeln

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Setz die Waitms 10 hinter die Print Chr(13) davor bringen die garnix...

Und 10ms könnten was kurz sein.

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gemacht

auch nichts gebracht

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also vom PC as hat es mit obriger Variante funktioniert?

Kann es sein das du noch die PIN setzen musst?
AT+CPIN="xxxx"


Also die richtige Reihenfolge wäre dann:

AT+CPIN="xxxx"<ENTER>
AT+CMGF=1<ENTER>
AT+CMGS="+49xxxxxxxxx"<ENTER>
Test123<CTRL-Z>

Nach jedem Enter würde ich nen Moment warten (10ms sind etwas knapp).

Btw: kannst du mal die Rückgabecodes posten?

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ne, hab die SIM so konfiguriert das ich KEINE Pin eingeben muss.

Rückgabecodes?
Also am PC hat er damals einfach alles mit einem OK quittiert, nach

    AT+CMGS="+49xxxxxxxxx"<ENTER>

hat er ein
">" geschrieben wohinter dann mein Text kahm.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss man nicht auf das Echo JEDES Zeichens warten?

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie würde das dann aussehen?

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. wrote:
> Muss man nicht auf das Echo JEDES Zeichens warten?

Gibt solche und solche Modems. Aber ansich kann es auch daran liegen.
Kann man mal testen, einfach ne eigene Print Funktion die jedes Zeichen 
mit einem Delay ausgibt und mit nem #13 terminiert.

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber im Terminalprogramm aufm PC schreib ich ja eigentlich auch

"AT+CMGF" und erst dann ein ENTER

oder?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Print "AT+CMGF=1\r\n" oder Print "AT+CMGF=1" Print Chr(13) Print Chr(10)
--> Hier vom Handy LESEN! ob ein OK kommt
Print "AT+CMGS=0788027939\r\n" (oder wie oben...)
--> Hier vom Handy LESEN! ob ein OK kommt
Print "Test Sms Von Mc2"
Print Chr(26)
Print "\r\n" (oder wie oben...)
--> Hier vom Handy LESEN! ob ein OK kommt

Du könntest alternativ auch mal mit einem Terminalprogramm deine 
gesendeten Zeichen und die vom handy gesendetn "abhören" z.B. mit hTerm 
der Zeigt dir auch die Tatsächlichen ASCII codes an.

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aso wenn ich mit hterm

at+cmgf=1 sende mit der einstellung "send on enter" = CR

dann kommt

"no carrier"

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay, habs jetzt mit hterm hinbekommen:

einstellung bei "send on enter" muss CR-LF sein.

Dann kann ichs mim PC ansteuern.

Ich mach mal den ganzen quelltext durch, welches fenster soll ich dann 
reinkopieren? received data oder transmitted data?

Autor: Microdubsi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
okay, das einzige woran ich scheiterte war das "ctrl-Z" (wusste nicht 
wie ichs eingeben soll in hterm)

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bascom schreibt nach einem Print automatisch ein CR+LF
ausser man macht ein ; hinter das Print !

Print "blabla" ;    ' kein CR-LF danach

dann kann man das CR-LF selber senden, aber auch das ; danach !

Print Chr(13) ; Chr(10) ;


PS:
hatten wir das heute nicht schonmal :-/

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also mein jetziger quellcode lautet, unter berücksichtigung, dass Bascom 
selber CR-LF sendet wie folgt:

Print "AT+CMGF=1"
    Waitms 100
    Print "AT+CMGS=0788027939"
    Waitms 100
    Print "Test Sms Von Mc";
    Print Chr(26);

bei den letzten beiden brauch ich ja dann ein ";" weil ich da kein CR-LF 
will

funktioniert aber auch noch nicht...

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast Du das genau verkabelt ? Einem Handy reichen doch normal die 
beiden Datenleitungen nicht aus um darauf zu reagieren, da müssen doch 
auch ein paar andre mithelfen, DTR, CTS oder wie die heissen.

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verkabelt hab ich einfach das kabel das ich benutzt habe um PC-Modem zu 
verbinden umgestöpselt auf Modem-Atmega32

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Microdubsi wrote:
> verkabelt hab ich einfach das kabel ...

Details !
Schaltplan usw.
welches GSM teil

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, das Modem ist das TC35i (von Siemens)

Ein Schaltplan kann ich leider nicht bieten da ich nichts selber 
verkabelt habe. Aber als Board hab ich das

Atmega32 Prototype board von embedit. mit "Pegelgerechtem" RS232 
ausgang.

und für die verkabelung wie gesagt einfach ein Modem-Kabel genommen

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und von wegem gekreutem und ungekreuztem kabel hab ich gerade nochmals 
geschaut:

Als Faustregel kann man annehmen: Befinden sich an den beiden Enden des 
Kabels die gleiche Art von Anschlüssen (Männchen = Stecker; Weibchen = 
Buchse), dann benötigt man ein gekreuztes, also ein Nullmodem-Kabel. Am 
PC-Anschluss selbst befindet sich ein Stecker, also ein Männchen, sodaß 
am Kabel auf dieser Seite eine Buchse (also ein Weibchen) sitzen muss. 
Da am AVR laut obigem Schaltbild eine Buchse verbaut wird, muss daher an 
diesem Ende des Kabels ein Stecker sitzen. Das Kabel hat daher an einem 
Ende einen Stecker und am anderen Ende eine Buchse und ist daher ein 
normales Modem-Kabel ( = nicht gekreuzt).


Quelle:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

Das Modem besitzt einen Weiblichen anschluss
PC/MC-Board: Männlich

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du den Mal das was dein uC sendet überwacht per PC?
Und auf dem uC die Rückmeldung des Handys ausgewertet?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Microdubsi wrote:

> http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

Aber wie auch das Tutorial schon sagt: Es ist nur eine Faustregel.

Wenns nicht klappt, kann die Ursache immer noch darin liegen, dass die 
Steckerbelegung gekreuzt ist. Im Zweifelsfall also immer mal mit einem 
Voltmeter nachmessen. An einem der beiden Pins 2 oder 3 liegen -12V an. 
Am anderen der beiden Pins ist nichts. Die -12V müssen jeweils an der 
Gegenseite auf den Pin kommen an dem nichts anliegt.

Autor: ROFL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde auch sagen: versuche mal die Modem-Antworten nach deinen 
Kommandos auszulesen.
So findet man Fehler am schnellsten.
10ms Wartezeit kommen mir auch gewagt vor. Testweise kann man hier ja 
mal einfach 1000ms nehmen.

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, neuer Status:

Hab mir beim grossen Roten ein Nullmodem-Kabel geholt damit ich am PC 
lesen kann was ankommt, das sieht alles gut aus, auch der Sende-Befehl!

Ich glaube, das es daran liegt, dass ich das OK was mir mein Modem nach 
jedem Befehl sendet nicht aufnehme.

Wie muss ich das machen? mit nem Input?

Lg

Autor: Microdubsi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, mein Momentanes Programm sieht so aus:

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

Waitms 1000
Print "AT"
Waitms 1000
Print "AT+CMGF=1"
Waitms 1000
Print "AT+CMGS=0788027939"
Waitms 1000
Print "Test Sms Von Mc";
Waitms 1000
Print Chr(26);
Waitms 1000

End

Es kommt genauso auf dem Modem an als wenn ich das Programm vom PC aus 
senden würde.

Aber es kommt keine SMS an, Ideen?

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Print "AT"
Wieso das denn nun auf einmal?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ich bereits darlegte, könnte es helfen, nach dem Chr(26) noch ein CR 
zu senden - also nimm einfach das Semikolon dahinter weg.

Autor: ROFL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schliesse deinen microcontroller doch mal mit dem nullmodemkabel an 
deinen pc an.
speichere die kommunikation in ein file und gucke es dir mit einem 
hexeditor an.
dann siehst du genau, (ob) und was gesendet wird (z.B. wie deine 
"returns") aussehen.

alternativ kannst du auch den TX deines modems an den pc hängen und den 
RX an deinen microcontroller. dann kannst du die (fehler-)meldungen des 
modems mitlesen während dein mc die sms senden will.

Autor: M. .D (barracuda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das AT hab ich einfach aus verzweiflung eingefügt

das CR nach dem (26) hat's nicht gebracht

das 3. mit dem Hex-edit hab ich noch nicht ausprobiert, mach ich und geb 
noch bescheid

Autor: Joachim R. (bastelbaer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Als Microdubsi, hier mal meine Ideen zu der Sache.

Zum Ersten, meine S25-Siemens-Handy arbeitet mit 19200 Baud statt mit 
9600.

Dann solltest du auf jeden Fall noch die Zeile BAUD=9600 bzw. 19200 
reinmachen. $baud ändert nur die Compilersettings, BAUD den eigentlichen 
UART. Dann ersetz das alleinige "AT" durch "ATZ", das setzt das Modem 
zurück.

Weiterhin solltest du wirklich mal hingehen und die Antworten des Handys 
zu kontrollieren. Dazu kannst du entweder ein LCD. ein Software-UART 
oder auch LEDs zur Anzeige nehmen ob alles ok ist.

Ich hab dir mal ein kleines Beispiel aus meinem Projekt "Handygesteuerte 
Funkfernbedienung" rauskopiert. Du solltest auf die Antwort des Modems 
warten und entsprechende reagieren. Entsprechend kannst du auch das 
Sample sms.bas nehmen und deinen Wünschen entsprechend anpassen

Autor: M. .D (barracuda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, habe BAUD hinzugefügt, rate auf 19200 geändert.

das mit den LED's hab ich gemacht

ich habe aus einer anderen quelle welche schon mit diesem modem 
gearbeitet hat gehört, das diese antworten (OK etc.) nicht beantwortet 
werden müssen

ich habe meinen quellcode nun auf einfachste basis geändert, nämlich 
print "ATD0788027939" so sollte mein Modem also mein Handy anrufen, es 
rührt sichjedoch nichts

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marius Dubach wrote:
> also, habe BAUD hinzugefügt, rate auf 19200 geändert.
>
> das mit den LED's hab ich gemacht
>
> ich habe aus einer anderen quelle welche schon mit diesem modem
> gearbeitet hat gehört, das diese antworten (OK etc.) nicht beantwortet
> werden müssen

Beantwortet nicht.
Aber wenn du dir die Antworten des Handys mal ansehen würdest, könnte 
man ja einen Hinweis kriegen, wo denn das Problem sein könnte. Wär 
natürlich furchtbar, wenn man dann nicht mehr gross raten müsste.

zb wird das Modem nach dem Kommando "AT" mit "OK" antworten. Kommt das 
"OK" nicht, dann weißt du schon mal, dass mit der Kommunikation an sich 
was nicht stimmt.

Aber wie gesagt: Solche Rückmeldungen braucht ja eigentlich auch kein 
Mensch, die kann man getrost ignorieren und dafür lieber im Nebel 
rumstochern.

Autor: M. .D (barracuda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Ich konnte mein Problem beseitigen, hab einen neuen quarz eingelötet.

Hier der neue quelltext

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Baud = 9600



    Waitms 1000
    Print "AT+cmgf=1"
    Print "AT+cmgs=0788027939"
    Print "Hallo";
    Print Chr(26);




End

Ich GARANTIERE das dieser code in verbindung mit einem TC35i von Siemens 
funktioniert!!!!!!!!!!!!!!!!!!!!!

BEACHTEN::: Quarz-Frequenz!!!!


Leute, ich danke euch allen für eure IDeen und eure Geduld!

Liebe Grüsse

Autor: ROFL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, dann ist ja (endlich) gut.
Magst du uns vielleicht noch verraten, was für einen Quarz du bisher 
verwendet hattest?
Danke.

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Microdubsi wrote:
> $crystal = 16000000

3 mal darfst du raten...

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.