Couper une commande en 2

peut on le stocker quelquepart le temps de s en servir?des qu il est recu ,il doit passer a la fonction qui transfere "m1" vers l uno ,apres il peut disparaitre

vous gérez sa durée de vie:

Une fois le message reçu Le code principal appelle gestionMessage(), qui appelle analyserMessage() (qui découpe en 2 à partir du ':' ) et appelle executer() pour faire ce qui est nécessaire par exemple activervolet() si c'est la commande reconnue.

soit vous mettez la communication I2C tout au bout (dans activervolet()), soit puisque le texte Ă  envoyer est connu, vous pourriez par exemple modifier la fonction executer() pour envoyer param en I2C si commmandeOK et vrai.

void communicationI2C(const char* param) {
  // ici votre connexion I2C pour envoyer param
}

bool executer(const char* commande, const char* param) {
  bool commmandeOK = false;

  Serial.print("La commande est ["); Serial.print(commande); Serial.println("]");
  Serial.print("Le paramĂštre est ["); Serial.print(param); Serial.println("]");

  if (strcmp(commande, "vol") == 0) {
    Serial.println("J'ai reconnu la commande des VOLETS");
    activervolet(param);
    strncpy(smsAEnvoyer, "COMMANDES VOLETS OK", tailleMaxMessage);
    commmandeOK = true;
  }

  if (commmandeOK) communicationI2C(param); // <==== APPEL A RAJOUTER

  return commmandeOK;
}

mais comme on retourne l'info de bonne exĂ©cution Ă  chaque appel de fonction , vous pouvez mĂȘme remonter cela dans analyserMessage(). Mais Ă  mon avis le bon endroit c'est dans executer()

1 Like

ca ca marche tres bien,mais je recois le parametre "m1" sur 2 lignes:"m" puis en dessous "1"

Postez le code - vous faites sans doute des println() de chaque octet