Hallo, mein Problem ist eigentlich ganz simpel, jedoch komm ich nicht weiter; Ich möchte einfach mittels AT-Kommandos und einem Modem eine SMS verschicken. Die Kommunikation zwischen Mikrocontroller und Modem generell funktioniert (der Dial-Befehl funktioniert einwandfrei). Sende ich jedoch das Kommando für eine SMS, passiert nichts. Den Teil meines Programmes habe ich als Anhang hochgeladen. P.s. 92 und 34 stehen für \ und ", ich wusste nur nicht, wie man diese als char anschreibt. Ausserdem bin ich momentan "nicht in der Lage", die Antworten meines Modems zu lesen, also warte ich nicht auf ein OK nach dem ersten Befehl, sondern warte einfach 4 Sekunden und verschicke dann den Inhalt der Nachricht. Früher hatte ich aber den Befehl mit einem PC und dem selben Modem ausprobiert und es funktionierte. Bitte wenn mir jemand weiterhelfen könnte.
Bevor Du ein Zeichen sendest, musst Du prüfen, ob der UART bereit ist. Dazu hat er ein Status Register. Sonderzeichen kannst Du in C so umschreiben: \n = 10 \r = 13 \" = " \' = ' \\ = \ Schau Dir mal meine Quelltexte bezüglich der seriellen Kommunikation an. http://stefanfrings.de/avr_io/SERIAL-IO-Modul_v1.3.2.zip Der Serielle Port wird den Dateien stdin und stdout zugewiesen, so daß die standard I/O Funktionen aus stdio.h damit verwendbar sind (wie z.B. println). Dor wird direkt gesendet (wie bei Dir), allerdings unter Berücksichtigung des UART Status. Für den Empfang wird der Interrupt verwendet, sowie ein Puffer, damit man auch ganze Zeilen am Stück auslesen kann. Die Größe des Puffers musst Du an deinen Anwendungsfall anpassen. Am besten so groß, dass eine komplette Modem-Antwort rein passt.
Mach da am besten einen String draus (wegen lesbarkeit) aus char sms_test_command[30] = {'a','t','+','c','m','g','s','=',92,34 ... wird char sms_test_command[30]= "at+cmgs=\"+393295348138\""; Du hat da einen Backslash "zuviel" drin ...
Von Peter Fleury gibts so eine schöne UART Library, nutz die doch einfach mal. Beim SMS senden musste eh darauf achten ob dein GSM Modul ASCI Text für SMS haben will oder PDU (is meist einstellbar).
Nach langem Probieren habe ich herausgefunden, dass die Backslhashes wirklich zu viel waren. Ausserdem musste ich noch mittels AT+CMGF vom Pdu-Mode zum Text-Mode wechseln. Vielen Dank für die Hinweise, jetzt funktionierts perfekt!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.