Go Down

Topic: Problem to read the Received message in GSM Shield (SIM900) (Read 749 times) previous topic - next topic

HamzaBNK

Hello,

I have a problem to read the message and the number, when i receive a message in my GSM Shield,
I want to display them (number and message) on the Terminal


I'm sorry for my english,
 Can you help me please, and thanks to all,

This is the code and I have not finished the code yet:


#include <SoftwareSerial.h>
SoftwareSerial sim(7, 8); // Port entrer et sortie
int tempOut, vert=2, rouge=4;
String _buffer;
String numero = "+33787######"; //-> Numero de telephone
void setup() {
  delay(5000); //Delais de 5 seconds pour laisser le bouclier GSM capter le signal reseau
  Serial.begin(9600);
   pinMode(vert, OUTPUT);
   pinMode(rouge, OUTPUT);
  _buffer.reserve(50);
  Serial.println("Système démarré...");
  digitalWrite(rouge,HIGH);
  sim.begin(9600);
  delay(7000);
  Serial.println("tape e pour envoyer un SMS, r pour recevoir un SMS, et a pour faire un appel");
}
void loop() {
  if (Serial.available() > 0)
        digitalWrite(vert,LOW);
        digitalWrite(rouge,HIGH);
    switch (Serial.read())
    {
      case 'e':
        Serial.println("e");
        envoiMessage();
        break;
      case 'r':
        Serial.println("r");
        recevoirMessage();
        break;
      case 'a':
        Serial.println("a");
        appel();
        break;
    }
  if (sim.available() > 0)
    Serial.write(sim.read());
}
void envoiMessage()
{
  Serial.println ("Envoyer MSG a: "+ numero);
  sim.println("AT+CMGF=1");    // Définit le module GSM en mode texte
  delay(1000);
  sim.println("AT+CMGS=\"" + numero + "\"\r"); //Numéro de téléphone portable pour envoyer un message
  delay(1000);
  String SMS = "Hello, how are you?";
  sim.println(SMS);
  delay(100);
  sim.println((char)26);
  delay(1000);
  _buffer = _readSerial();
}
void recevoirMessage()
{
  Serial.println ("SIM900 lire un SMS");
  delay (10000);
  sim.println("AT+CNMI=2,2,0,0,0"); // AT Command pour recevoir un SMS en direct
  sim.println("AT+CMGF=1");
   delay(1000);
  Serial.write ("non lu Message");
}
String _readSerial() {
  tempOut = 0;
  while  (!sim.available() && tempOut < 12000  )
  {
    delay(13);
    tempOut++;
  }
  if (sim.available()) {
    return sim.readString();
  }
}
void appel() {
  sim.print (F("ATD"));
  sim.print (numero);
  sim.print (F(";\r\n"));
  _buffer = _readSerial();
  Serial.println(_buffer);
}

Go Up