boucle AT+cmgr=1

Bonjour

je suis en terminal sti2d et dans le cadre d'un projet de fin d'année je dois réalisé un programme permettant d'ouvrir et de fermer une porte via l'envoie et la reception de sms avec un module GSM.

donc voilà je dois réaliser un sous-programme qui check en permanence s'il n'y a pas un message reçu.
voila mon programme

String check_message()

{

Serial1.write("at+cmgr=1");
Serial1.write(13);

Serial.print(Reponse_GSM());

chaineChar = Reponse_GSM();

int placeDeuxPoints1 = chaineChar.indexOf(':');
int placeDeuxPoints2 = chaineChar.indexOf(':', placeDeuxPoints1 + 1);
int placeDeuxPoints3 = chaineChar.indexOf(':', placeDeuxPoints2 + 1);
int placeEspace1 = chaineChar.indexOf(" ", placeDeuxPoints3 + 1);
int placeEspace2 = chaineChar.indexOf(" ", placeEspace1 + 1);
int placeRC = chaineChar.indexOf(10, placeEspace2 + 1);
int placeRC2 = chaineChar.indexOf(13, placeRC + 1);

ResultString = chaineChar.substring(placeRC + 1, placeRC2);

if (ResultString == stringOUVRIR) // le resultat correpond? si oui ouvrir la porte
{
Serial.println("OUVERTURE PORTE"); // ouverture de la porte
delay(100);

/* Serial1.println("AT+CMGD=1");
delay(100); */

String ResultString = "";
String chaineChar="";
}

if (ResultString == stringFERMER) // le resultat correpond? si oui fermer la porte
{
Serial.println("FERMETURE PORTE"); // fermeture de la porte.
delay(100);

Serial1.println("AT+CMGD=1");
delay(100);

String ResultString = "";
String chaineChar="";
}
}

String Reponse_GSM()
{

String chaineChar = "";
unsigned long time = millis();
while (millis() < time + 1000)
{

if (Serial1.available())
{
char inByte = Serial1.read();
chaineChar = chaineChar + inByte;
}
}

return chaineChar;
}

voilà j'ai un problème, cette partie du programme :

int placeDeuxPoints1 = chaineChar.indexOf(':');
int placeDeuxPoints2 = chaineChar.indexOf(':', placeDeuxPoints1 + 1);
int placeDeuxPoints3 = chaineChar.indexOf(':', placeDeuxPoints2 + 1);
int placeEspace1 = chaineChar.indexOf(" ", placeDeuxPoints3 + 1);
int placeEspace2 = chaineChar.indexOf(" ", placeEspace1 + 1);
int placeRC = chaineChar.indexOf(10, placeEspace2 + 1);
int placeRC2 = chaineChar.indexOf(13, placeRC + 1);

ResultString = chaineChar.substring(placeRC + 1, placeRC2);

est sensé traité le message et détecté si un ouvrir ou fermer à été reçu, je l'ais testé avec un string fictif que j'avais moi même créer pour le test et ça fonctionnait très bien...
je pense que c'est un problème avec mon chaineChar qui est sensé récupérer les réponses du module.. si quelqu'un pourrait m'éclairer sur le sujet svp ou me lancer sur une piste .. :-\ merci d'avance :slight_smile:

Bonjour

premier pas : éditer le message et placer le code entre les balises appropriées comme indiqué dans les messages épinglés en tête de forum.

Ajoute derrière chaineChar = Reponse_GSM();
Serial.println (chaineChar);pour voir à quoi ressemble la chaîne reçue.