Condition et lire une chaîne de charactère (Serial).

Bonjour, j’ai chercher mais je vois pas pourquoi mon code ne marche pas,
Il ne veut pas écrire dans le Moniteur série et il ne détecte pas, pourquoi ?

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
}

String serialb;

void loop() {
  if (mySerial.available()) {
    serialb = mySerial.readString();
    Serial.write(mySerial.read());
    if(serialb == "+DTMF: #") {
      Serial.println("PORTE OUVERTE");
    }
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
    
  }    
}

Merci

Salut

Il faudrait un peu plus de précisions concernant le montage.
Comment sont branchées les pins 2 et 3 ?
Je suppose qu'il y a un convertisseur USB / série ?

@+

En fait tout marche normalement juste avec ça, je reçois tout normalement :

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop() {
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
    
  }    
}

Mais c’est le moment ou je veut détecté un message en particulier.
Merci.

une idée ?

Bonsoir,

Si tu souhaite comparer deux chaines de caractères il faut utiliser les fonctions strcmp() ou strncmp().

je veut tout simplement récupéré la valeur du moniteur série et la comparé avec un texte, Comment faire ?

Que veux-tu dire par "il ne détecte pas" ? Comment le sais-tu ?
Lorsque tu fais :

   serialb = mySerial.readString();
    Serial.write(mySerial.read());

je pense que la première ligne vide le buffer de la console, et qu'il n'y a plus rien à afficher avec la seconde.
Essaye :

   serialb = mySerial.readString();
    Serial.write(serialb);

Bonjour,
Personnellement pour tester l'égalité de deux chaines de type String, j'utilise la procedure "equals()". Voir :
https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/equals/