arduino gsm

Bonjour j'ai un problème, j'utilise un module gsm pour envoyer des sms et je voudrais que si une personne envoie un sms au module, le module lui réponde (Ce numero appartient a une machine les sms reçus ne seront pas lus par un humain. Le numero du proprietaire de cette machine est le XXXXXXXXXX) j'ai donc fait ce code

if (message != "off") {

sms.beginSMS(senderNumber);

sms.print("Ce numero appartient a une machine les sms ressus ne serront pas lus par un humain. Le numero du proprietaire de cette machine est le XXXXXXXXXX.");

sms.endSMS();

Serial.println("\nCOMPLETE");

message = "";

mais quand je fais if ((message != "off") || (message != "on")) cela ne fonctionne pas pouvait vous m'aider ? Merci

Code au complet: http://pastebin.com/62gTaAEk Code au complet qui ne fonctionne pas: http://pastebin.com/6Uyui4Wz

Salut,

On ne peut pas faire de comparaison de chaine de cette manière, il faut soit utiliser strstr() soit strcmp()

Bonjour,

Dans le deuxième cas si le message est différent de "off" le résultat est vrai, et si c'est "off" la deuxième partie du if est vrai -> c'est toujours vrai. Je suppose que tu as voulu faire

if ((message != "off") && (message != "on"))

C'est à dire si le message n'est ni "off" ni "on"

Merci Le problème c'est que quand j'écris OFF ou ON à mon module il me renvoie Ce numéro appartient a une machine les sms recus ne seront pas lus par un humain. Le numéro du propriétaire de cette machine est le XXXXXXXXXX Je voudrait qu'il envoie se message que quand j'écris autre chose que ON est OFF.

en faisant if ((message != "off") && (message != "on")) ça ne fonctionne pas.

B@tto: Salut,

On ne peut pas faire de comparaison de chaine de cette manière, il faut soit utiliser strstr() soit strcmp()

+1

+Attention aux minuscules / majuscules

Oparop:
en faisant if ((message != “off”) && (message != “on”)) ça ne fonctionne pas.

Je t’assure que le if n’est exécuté que si le message n’est ni “on” ni “off”
Tu peux poster ton code?

B@tto: Salut,

On ne peut pas faire de comparaison de chaine de cette manière, il faut soit utiliser strstr() soit strcmp()

bricoleau: +1

+Attention aux minuscules / majuscules

message n'est pas un char[], mais un objet de la classe String

ah pardon j'avais pas vu

Y a des types louches que je préfère éviter en général :D La classe string en fait partie

Reste donc les majuscules / minuscules ?

Dans le code de Oparop il y a

message.toLowerCase(); // convert to lower case to make sure the comparision works later

Donc le test proposé devrait fonctionner correctement

Oparop Tu es sur que tu reçois bien "on" ou "off" et non "on\n" (avec line feed) ou "on\r\n" (avec retour chariot line feed) ?

non je reçois bien "on" et "off".

Tient le code = http://pastebin.com/MgV8G10t je ne suis que débutant il est possible qu'il y est une faute toute bête.

Regarde bien ta variable message...

    if (message == "on")  
    {    
      ... 
      message = "";  
    }  

    if (message == "off")  
    {  
      ...  
      message = "";  
    }  

   if ((message != "off") && (message != "on")) {
      ...
      message = "";  
    }

Tu es sur que tu n'es pas bloqué dans ta fonction sms.beginSMS() ou sms.print() ou sms.endSMS()?

Je te propose d'essayer de mettre un Serial.print() avant l'envoi du sms pour voir, comme ceci:

    if ((message != "off") && (message != "on")) {
      Serial.println("\nautre COMPLETE");  
      sms.beginSMS(senderNumber);  
      sms.print("Ce numero appartient a une machine les sms recus ne seront pas lus par un humain. Le numero du proprietaire de cette machine est le XXXXXXXXXX.");  
      sms.endSMS();
      Serial.println("\nautre COMPLETE");  
      message = "";  
    }

en fait à cause de message = ""; il lie comme si c’était un message vide donc il me renvoie Ce numero appartient a une machine les sms recus ne seront pas lus par un humain. Le numero du proprietaire de cette machine est le XXXXXXXXXX.

Le seconde problème c'est quand suppriment (message = ""; ) le message n'est pas supprimer et quand je renvoie un nouveaux message au module il me compte l'ancien message + le nouveaux ...

Effectivement bricoleau a mis le doigt dessus il faut enchainer les tests avec des else

    if (message == "on")  
    {    
      digitalWrite(whitePin  ,HIGH);
      Serial.println("\nCOMPLETE");  
      message = "";  
    }  
    else if (message == "off")  
    {  
      digitalWrite(whitePin,LOW);
      Serial.println("\nCOMPLETE");  
      message = "";  
    }  
    else {
       sms.beginSMS(senderNumber);  
      sms.print("Ce numero appartient a une machine les sms recus ne seront pas lus par un humain. Le numero du proprietaire de cette machine est le XXXXXXXXXX.");  
      sms.endSMS();
      Serial.println("\nCOMPLETE");  
      message = "";  
    }

Problème régler il fallait que je mette : if (message != "") {

Merci de votre aide et de votre temps bonne soirée.

C'est une autre solution

Oui c'est vrai car ton code est bon aussi :)