[GPRS V2.0 + arduino] read a SMS/envoyer un SMS.

Hello,

I would like to receive and read SMS (on Arduino' serial) which I send with my GSM.
Until now, i can see that the GPRS receive it and the number of the sender, but i can't read it.
Is there anyone who can help me ?

Thank you !


Bonjour,

J'aimerais recevoir et lire des SMS (sur le port série d'Arduino) que j'envoie de mon GSM.
Jusqu'à maintenant, je sais juste voire que je reçois les SMS et leurs propriétaires, mais je ne sais pas les lire.
Y aurait il une bonne âme pour m'aider ?

D'avance merci !

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


SoftwareSerial GPRS (7, 8 );



void setup()
{
 GPRS.begin(19200);               // the GPRS baud rate   
 Serial.begin(19200);    // the GPRS baud rate 
 delay(1000);
 GPRS.println("AT+CSQ"); // niveau de réception
  delay(1000);
  Serial.println("envoi de la commande : AT+CMBF=1");
 delay (1000);
  //GPRS.println("AT+CMGF=l\r");
  delay (1000);  
   GPRS.println("AT+CSCA=\"+32470693691\"\r"); //se mettre sur le réseau
  delay (500);
  Serial.println("envoi de la commande : AT+CPIN=\"5966\"");
  delay (1000);
   Serial.println("envoi de la commande : AT+CSCA=\"+32470693691\"");
  delay (1000);
  GPRS.println("AT+CPIN=\"5966\""); //insertion du code PIN
  delay (1000);
  GPRS.println("AT+CPIN?") ; // PIN ok ou error
  delay (1000);
  

}

void loop()
{ 
  
 
 //after start up the program, you can using terminal to connect the serial of gprs shield,
 //if you input 't' in the terminal, the program will execute SendTextMessage(), it will show how to send a sms message,
 
  if (Serial.available())
   switch(Serial.read())
  {
    case 'r':
      ReceiveTxTmsg();
      break;
      
    case 'd':
    Delete();
    break;
   
  } 
 if (GPRS.available())
   Serial.write(GPRS.read());
}



///
 void ReceiveTxTmsg()
{
 
  GPRS.println("AT+CMGF=1") ; //passe les sms en mode texte
  delay (1000);
  //GPRS.println("AT+CPMS=\"MT\"") ; montre combien de sms en mémoire
  delay (500);
  //GPRS.println("AT+CMGL"); //montre tous les sms non lu
  GPRS.println("AT+CMGR=2\r"); //Lis le deuxième sms
  delay (500);
  Serial.println("AT+CMGR=2\r""");
  
  delay (500);
  //GPRS.println("AT+CMGL=""ALL");   // montre les sms 
  delay (500);
  
}

void Delete()
{
GPRS.println("AT+CMGD=1");
delay(500);
GPRS.println("AT+CMGD=2");
delay(500);
GPRS.println("AT+CMGD=3");
delay(500);
GPRS.println("AT+CMGD=4");
delay(500);
GPRS.println("AT+CMGD=5");
delay(500);
GPRS.println("AT+CMGD=6");
delay(500);
GPRS.println("AT+CMGD=7");
delay(500);
GPRS.println("AT+CMGD=8");
delay(500);
GPRS.println("AT+CMGD=9");
delay(500);
GPRS.println("AT+CMGD=10");
delay(500);
GPRS.println("AT+CMGD=11");
delay(500);
GPRS.println("AT+CMGD=12");
delay(500);
GPRS.println("AT+CMGD=13");
delay(500);
GPRS.println("AT+CMGD=14");
delay(500);
GPRS.println("AT+CMGD=15");
delay(500);
GPRS.println("AT+CMGD=16");
delay(500);
GPRS.println("AT+CMGD=17");
delay(500);
GPRS.println("AT+CMGD=18");
delay(500);
GPRS.println("AT+CMGD=19");
delay(500);
GPRS.println("AT+CMGD=20");
delay(500);
GPRS.println("AT+CMGD=21");
delay(500);
GPRS.println("AT+CMGD=22");
delay(500);
GPRS.println("AT+CMGD=23");
delay(500);
GPRS.println("AT+CMGD=24");
delay(500);
GPRS.println("AT+CMGD=25");
}

Utilisez des balises du code lorsque vous postez votre code ("#")

Mis à part ça, tu n'as pas de solution ?
SVP

 //send string using serial monitor 
// test string "message_status,address,address_text,service_center_time_stamp,<CR><LF>*sms_message_body"

String readString;
//int loc;

void setup() {
  Serial.begin(9600);
  Serial.println("parse-test-3"); // so I can keep track of what is loaded
}

void loop() {
  while (Serial.available()) {
    delay(2);  
    if (Serial.available() >0) {
      char c = Serial.read();  //gets one byte from serial buffer
      if (c == '\n') { //Look for CR/
        while (Serial.available()) {
          delay(2);  
          if (Serial.available() >0) {
            char c = Serial.read();  //gets one byte from serial buffer
            readString += c; //makes the string readString
          } 
        }

      }      
    } 
  }

  if (readString.length() >0) {
    Serial.print("Message is: ");    
    Serial.println(readString); //see what was received
    readString="";
  } 
}

Merci pour ta réponse.
En fait mon problème c'est que la lecture du MSG n'affiche que ça (sur le port série) :

AT+CMGR=9

+CMGR: "REC READ","+32473217105",

Et non la date/heure et surtout le MSG.
J'ai beau chercher, je ne vois pas se que je fais de mal.