Ricevere SMS con GSM Shield (tutto qui)......ma perche non trovo niente

#include <SoftwareSerial.h>
#include <String.h>

SoftwareSerial mySerial(7, 8);


void setup()
{
  pinMode(9, OUTPUT); 
  digitalWrite(9,LOW);
  delay(1000);
  digitalWrite(9,HIGH);
  delay(2000);
  digitalWrite(9,LOW);
  delay(3000);

  mySerial.begin(19200);  //inizializzazione shield gsm

  
}
void loop()
{
  SendTextMessage();
  
}

void SendTextMessage()
{
  mySerial.print("AT+CMGF=1\r");   
  delay(100);
  mySerial.println("AT + CMGS = \"+39XXXXXXXX\"");
  delay(100);
  mySerial.println("A test message!");
  delay(100);
  mySerial.println((char)26);
  delay(100);
  mySerial.println();
}

void DialVoiceCall()
{
  mySerial.println("ATD + +39xxxxxxxxx;");
  delay(100);
  mySerial.println();
}

La mia shield http://www.seeedstudio.com/depot/gprs-shield-p-779.html deve solo ricevere un SMS ed eseguire una operazione.
Ma sono ormai settimane che ci perdo le notti ed i pomeriggi a provare tutte le librerie possibili ed immaginabili ma sembra per me impossibile ricevere un SMS ed immagazzinarlo in una stringa.......

Possibile che nessun italiano abbia mai fatto una cosa del genere......ma che ci fate con la GSM Shield :smiley: ???

Cerca bene sul Forum, ci son almeno 3-4 Topic aperti su questo tipo di schede, in particolare ce n'è uno aperto dal creatore delle librerie per la scheda progettata da Futura Elettronica; se non ricordo male qualcuno un mesetto fa ha risolto problemi simile al tuo proprio grazie a queste librerie, scaricabili gratuitamente.

Si li ho letti tutti ma usando quelle librerie non riesco a dialogare con la shied, l unico modo è stato usando il codice che ho postato. ...addirittura qualche libreria usa un Serial.read (32, BYTE) che non funziona più e l ide mi suggerisce di usare il Serial.Write ()

Forse mi sbaglio, ma mi sembra che il comando per l'invio di un SMS sia errato: che io sappia non è consentito inserire degli spazi nell'invio del comando.

Prova a scrivere così: mySerial.println("AT+CMGS="+39XXXXXXXX"");

cyberhs:
Forse mi sbaglio, ma mi sembra che il comando per l'invio di un SMS sia errato: che io sappia non è consentito inserire degli spazi nell'invio del comando.

Prova a scrivere così: mySerial.println("AT+CMGS="+39XXXXXXXX"");

non vedo spazi.....e cmq funziona

Il mio problema è trovare dei comandi da unire al listato sopra per poter leggere i messaggi SMS

Vi prego mi date una mano !!!!

Dopo le varie notti perse alla ricerca di informazioni su come ricevere SMS con la GSM Shield SIM900, complice anche la poca esperienza, sono finalmente riuscito ad ricevere risposte dal modulo:

sketch

String rsms="";

void setup()
{
  Serial.begin(9600);
  Serial2.begin(9600);
}

void receive_sms()
{
  Serial2.print("AT+CMGR=1\r");
  if (Serial2.available()>0)
  {
    int l=Serial.available();
    for (int i=0;i<l;i++)
    {
             rsms += (char)Serial.read();
     }
  }
  Serial.println(rsms);
}

void loop()
{
  receive_sms();
  delay(10000);
}

inviando alla seriale : AT+CMGR=1

+CMGL: 1,"REC READ","+39XXXXXXXXX",,"05/02/13,08:00:15+32",145,37
Testo di prova

OK

da qui ora come posso estrapolare il solo contenuto del messaggio "Testo di prova" ??

Sto facendo varie prove utilizzando rsms.indexOf("Testo") >= 0 ma sfortunamente non funziona

Avete qualche suggerimento??

Ovviamente c'è un altro problema ,anche se credo di conoscerne la causa, ovvero i messaggio di risposta dal terminale, è sempre il solito anche se invio nuovi sms, non è che la memoria per i messaggi è piena e non mi fa vedere gli altri ??

GRAZIE

ciao ho letto il tuo topic ho un listato che fa al caso tuo

devi usare la funzione clearbuffer per cancellare la memoria della sim

Avviso a tutti gli interessati: Elettronica In sta pubblicando, già da un paio di mesi, un eccellente Tutorial sulla programmazione di questi moduli, ovviamente con un occhio di riguardo alle sue schede. Penso che, come sempre, dopo l'ultima puntata ne faranno un file unico scaricabile gratuitamente dal sito (basta registrarsi), ma se qualcuno avesse fretta può dare un'occhiata al numero in edicola per vedere se trova qualcosa di utile.