Hallo, ich hoffe Ihr könnt mir weiter helfen... Ich knobel schon eine ganze Weil wie ich mit ein Mega-Board und dem TC35 eine SMS empfangen kann... Leider komme ich nicht wirklich weiter... Das senden einer SMS ist kein Problem... Ich kann nur leider nicht eine empfangende SMS anzeigen lassen... Hat jemand eine Idee?? Hab schon einen Ansatz... Leider funktioniert das nicht wirklich... int ledPin=13; char receivedByte; void setup() { Serial.begin(9600); Serial1.begin(9600); pinMode(ledPin,OUTPUT); Serial.println("\r\nStarten\r\n"); Serial1.print("AT+CMGF=1\r"); delay(400); Serial1.print("AT+CMGR=1\r"); delay(400); Serial.println(Serial1.read()); } void loop() { if(Serial1.available()>0) { Serial.println(Serial1.read()); digitalWrite(ledPin,HIGH); } }
Mario I. schrieb: > Serial1.print("AT+CMGR=1\r"); Hallo Mario, für AT+CMGR musst du erst einmal wissen, in welchem Speicherplatz die angekommene SMS gespeichert wurde. Ich bin mir nicht sicher, aber ich glaube, dass man nicht davon ausgehen kann, dass jede SMS auf Position 1 ankommt. Ich würde eher AT+CMGL verwenden. Mit =1, 2, 3 oder 4. Weiß es nicht auswendig, aber in der Doku wirst du rausfinden, welche Zahl für "ungelesene SMS", "gelesene SMS", "beides" steht. Empfangene SMS sollte man dann eventuell auch löschen, nicht dass der Speicher irgendwann voll ist. Das geht mit AT+CMGD. Glaub ich. Hab das alles mal programmiert, ist aber ein Weilchen her. :-)
Danke für die schnelle Antwort!! Ich habe es versucht... Als Anzeige bekomme ich: Starten 13 10 79 75 13 10 13 10 69 82 82 79 82 13 10 Ich habe aber doch mit Serial1.print("AT+CMGF=1\r"); angegeben das er das ergebnis im Klartext anzeigen soll... Hmmm
Mario I. schrieb: > Ich habe aber doch mit Serial1.print("AT+CMGF=1\r"); angegeben das er > das ergebnis im Klartext anzeigen soll... > Hmmm Hm...schau mal hier: http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#ASCII-Tabelle Ausgegeben wird: OK ERROR Wahrscheinlich brauchst du zur Ausgabe von Text eine andere Funktion als digitalWrite(ledPin,HIGH); Welche das ist, weiß ich leider nicht, ich kenne die verwendete Bibliothek nicht.
die fkt digitalWrite(ledPin,HIGH); ist nur eine led die angeht... ist für mich zur kontrolle ob das programm in die fkt einsteigt. wenn die led leuchtet, dann ja... und das macht sie... leider bekomm ich nur die oben angegebene antwort zurück...
Sorry, mein Fehler, ich meinte diese Zeile hier: Serial.println(Serial1.read()); Serial.println() gibt anscheinend Zahlen aus. Du brauchst aber einzelne Zeichen ("char").
ok, danke... Jetzt bekomme ich das "OK ERROR" angezeigt... Jetzt muß ich nur noch raus bekommen warum ich die Nachricht nicht angezeigt bekomme...
Mario I. schrieb: > ok, danke... > Jetzt bekomme ich das "OK ERROR" angezeigt... > Jetzt muß ich nur noch raus bekommen warum ich die Nachricht nicht > angezeigt bekomme... Siehe oben. Wenn es keine SMS mit der Nummer 1 gibt, kann AT+CMGR auch keine lesen. Deswegen kommt für das zweite Kommando auch "ERROR" zurück. Probier statt AT+CMGR mal das List-Kommando: AT+CMGL=4 Damit müssten alle SMS angezeigt werden, die gespeichert sind. Doku dazu hier: http://www.hughes.com/AT_Command_Reference.html#AT_plusCMGL
Hallo... Ich habe es hin bekommen... Es gibt da nur noch ein kleines Problem... Wenn ich den Code im HyperTerminal anzeigen lasse, bekomme ich alles angezeigt (siehe Bild). Wenn ich den gleichen Code über das Arduino anzeigen lasse, fehlt auf einmal der Text der SMS. So als ob es nicht angezeigt werden kann (nicht genug Zeichen zur Verfügung oder so) Hat jemand eine Idee wie ich mir den Rest anzeigen lassen kann?? Vielen Dank im Voraus Mario
ok, danke. kannst du mir bitte einen Ansatz geben? weiß nicht ganz was du damit meinst danke
also wenn du einfach nur serial1 schreibst und serial schreibst wird immer der gleiche pin angesprochen ich arbeite mit myserial.h da kann man dann 0,1 für serial belassen und zb 2,3 für den tc35 benennen in deinem letzte thread sah es so aus als wenn du alles über die gleichen pins laufen lässt.... nur als idee.. gruß
Hallo Mario, prüf bitte mal die Buffersize der seriellen Schnittstellen. Ich habe die auf 256 erhöcht und hat das Problem erledigt. Viele Erfolg!!
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.