Problem to read the Received message in GSM Shield (SIM900)


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
  pinMode(vert, OUTPUT);
  pinMode(rouge, OUTPUT);
 Serial.println("Système démarré...");
 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)
   switch (
     case 'e':
     case 'r':
     case 'a':
 if (sim.available() > 0)
void envoiMessage()
 Serial.println ("Envoyer MSG a: "+ numero);
 sim.println("AT+CMGF=1");    // Définit le module GSM en mode texte
 sim.println("AT+CMGS=\"" + numero + "\"\r"); //Numéro de téléphone portable pour envoyer un message
 String SMS = "Hello, how are you?";
 _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
 Serial.write ("non lu Message");
String _readSerial() {
 tempOut = 0;
 while  (!sim.available() && tempOut < 12000  )
 if (sim.available()) {
   return sim.readString();
void appel() {
 sim.print (F("ATD"));
 sim.print (numero);
 sim.print (F(";\r\n"));
 _buffer = _readSerial();

I have a problem

Are we supposed to guess what the problem is?