mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TC35 Arduino SMS Empfangen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mario I. (mario_i)


Bewertung
0 lesenswert
nicht lesenswert
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);
}
}

von Markus W. (Firma: guloshop.de) (m-w)


Bewertung
0 lesenswert
nicht lesenswert
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. :-)

von Mario I. (mario_i)


Bewertung
0 lesenswert
nicht lesenswert
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

von Markus W. (Firma: guloshop.de) (m-w)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Mario I. (mario_i)


Bewertung
0 lesenswert
nicht lesenswert
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...

von Markus W. (Firma: guloshop.de) (m-w)


Bewertung
0 lesenswert
nicht lesenswert
Sorry, mein Fehler, ich meinte diese Zeile hier:

Serial.println(Serial1.read());

Serial.println() gibt anscheinend Zahlen aus. Du brauchst aber einzelne 
Zeichen ("char").

von Mario I. (mario_i)


Bewertung
0 lesenswert
nicht lesenswert
ok, danke...
Jetzt bekomme ich das "OK ERROR" angezeigt...
Jetzt muß ich nur noch raus bekommen warum ich die Nachricht nicht 
angezeigt bekomme...

von Markus W. (Firma: guloshop.de) (m-w)


Bewertung
0 lesenswert
nicht lesenswert
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

von Mario I. (mario_i)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

von Mario I. (mario_i)


Bewertung
0 lesenswert
nicht lesenswert
ok, danke.
kannst du mir bitte einen Ansatz geben?
weiß nicht ganz was du damit meinst

danke

von Hilgi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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ß

von Chen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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!!

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.