Ethernet Shield Client - Lecture du moniteur

Bonjour à tous,

Je recherche un moyen simple de lire le moniteur série et de repérer un mot dans celui ci (ici le mot sapa0).

Je m'explique : J'ai hébergé un fichier texte sur internet, mon shield vient lire ce fichier texte et me l'affiche sur le moniteur série. Bien entendu, j'ai également sur mon moniteur toutes les données de connexion au site web :

connecting... HTTP/1.1 200 OK Date: Mon, 17 Jul 2017 07:46:35 GMT Server: Apache/2.2 Last-Modified: Mon, 17 Jul 2017 07:01:36 GMT ETag: "5-5547df842b0c4" Accept-Ranges: bytes Content-Length: 5 Vary: Accept-Encoding Connection: close Content-Type: text/plain Via: 1.1 alproxy

sapa0

J'ai inclus ce code avec un "compteur" dans mon programme, mais ça ne fonctionne pas.( pas moyen de récupérer "ok" ou bien je le récupère sans fin, même si mon fichier texte est vide)

if (client.available()) {
    char c = client.read();
    Serial.write(c);
    
    if ((c=="s") and (w==0)) {
        w=1;
}
    else {
        w=0; }
     
    if ((c=="a") and (w==1)) {
        w=2;
}
    else {
        w=0; }
      
    if ((c=="p") and (w==2)) {
          w=3;
}
    else {
          w=0; } 
      
    if ((c=="a") and (w==3))  {
          Serial.print ("ok");
          w=0;
          client.stop(); } }

Qu'ai-je loupé ? Existe-il un moyen simple de réaliser ce "décodage de texte" sur le moniteur ? Je vous remercie pour votre aide qui me sera plus que précieuse !!

Martin

Bonjour,

Tu ne décodes pas le texte sur le moniteur (qui n'a pas grand chose à voir dans l'histoire) mais dans le flux que tu reçois.

Dans ton code ce n'est pas c=="s" mais c=='s' que tu veux faire.

Tu peux aussi faire quelque chose de moins laborieux:

  const char motCherche[] = "sapa";
  static int n = 0;

  if (client.available()) {
    char c = client.read();
    Serial.write(c);

    if (c == motCherche[n])
      n++;
    else
      n = 0;

    if (motCherche[n] == 0)
    {
      // on a trouvé le mot
      Serial.print ("ok");
      n = 0;
      client.stop();
    }
  }

PARFAIT !! Ça fonctionne... je me prend la tête avec cela depuis ce matin.

Quel est le rôle de la commande n++ ?

Grand merci !

Martin

n++ incrémente n

c'est équivalent à n=n+1;