SIM900 und GSM Library?

Der Code zum empfangen einer SMS scheint zunächst soweit zu funktionieren.

Die Verbindung kann hergestellt werden und es wird auch eine SMS angezeigt. Leider irgendeine und nicht die letzte. Auch wenn ich eine neue SMS and den Arduino sende passiert nichts.

Ich vermute das der flush()-Befehl nicht mit meinem Shield funktioniert, kann das sein?

Muss ich auf SoftwareSerial wechseln um eine korrekte Funktionalität sicherzustellen?

Danke!

Habe die Sim900 library ausprobiert..leider fehlen da grundlegende Funktionen, wie z.B. das löschen aller SMS aus dem Speicher etc. Gibt es da evtl bessere Bibliotheken? Danke!

Wahrscheinlich nicht.
Du hättest die Dokus zu dem Ding auch lesen sollen, denn das passiert alles über AT-Kommandos, es wär also regelrecht hirnrissig, diese Funktionen noch in ne Bibliothek zu packen.

https://dl.dropboxusercontent.com/u/8663580/DO%20NOT%20DELETE/SIM900%20AT%20Command%20Manual.pdf

Einfach mal stöbern-wirst dich wundern. :slight_smile:

Danke für die schnelle Antwort. Du hast recht, das habe ich nicht gemacht...scheint aber dennoch alles noch im Bereich des machbaren zu sein.

char SMSGSM::DeleteSMS(byte position)
{
     char ret_val = -1;

     if (position == 0) return (-3);
     if (CLS_FREE != gsm.GetCommLineStatus()) return (ret_val);
     gsm.SetCommLineStatus(CLS_ATCMD);
     ret_val = 0; // not deleted yet

     //send "AT+CMGD=XY" - where XY = position
     gsm.SimpleWrite(F("AT+CMGD="));
     gsm.SimpleWriteln((int)position);


     // 5000 msec. for initial comm tmout
     // 20 msec. for inter character timeout
     switch (gsm.WaitResp(5000, 50, "OK")) {
     case RX_TMOUT_ERR:
          // response was not received in specific time
          ret_val = -2;
          break;

     case RX_FINISHED_STR_RECV:
          // OK was received => SMS deleted
          ret_val = 1;
          break;

     case RX_FINISHED_STR_NOT_RECV:
          // other response: e.g. ERROR => SMS was not deleted
          ret_val = 0;
          break;
     }

     gsm.SetCommLineStatus(CLS_FREE);
     return (ret_val);
}

Aber in dieser Funktion wird doch auch nichts anderes gemacht? Das AT-Kommando wird in einer Funktion verpackt? Ist für mich wesentlich komfortabler als alles selbst schreiben zu müssen. Oder warum bist du da so skeptisch?

Ich dachte halt nur das es evtl. noch umfassendere Libs gibt.

Und warum nimmst du nicht die Beispiele aus dem Link deines anderen Threads?

http://www.tinyosshop.com/index.php?route=product/product&path=60_73&product_id=464

Da findest du eigentlich alles, was du brauchst.