Recevoir une chaine de caractère depuis un modem

Bonjour, pour un projet j'ai à mettre en place deux modems et une arduino nano.
Le premier modem est branché à mon pc et envoie depuis un terminal série un caractère.
Le deuxième est branché à un max23é et à mon arduino nano pour recevoir ce caractère.
Une fois le caractère testé je voudrais le tester : si a est envoyé on écrit dans le terminal série "j'ai envoyé a".
Voici mon code, savez vous pourquoi cela ne fonctionne pas ?
(idéalement cela devrait être une chaine de caractère du style j'envoie stop et on écrit dans le terminal série "j'ai envoyé stop".
Merci d'avance


char recu;


void setup() {
  Serial.begin(19200);
}


void loop() 
{
   if (Serial.available() > 0)
  {
    delay(100);
  //Serial.println("je rentre dans le loop");
    while(Serial.available() > 0) // tant qu'il y a des caractères à lire
    {
      recu=Serial.read();
      Serial.print(recu);
      if(recu=="a")
      {
        Serial.println("c'est a");
      }
     }
  }

}


recu est un char et dans ton test tu testes une chaine de caractères.
il faut faire
if(recu=='a')

effectivement merci !
Je voudrais maintenant tester une chaine de caractère j'ai donc fait ce code :

char recu;


void setup() {
  Serial.begin(19200);
}


void loop() 
{
   if (Serial.available() > 0)
  {
    delay(100);
  //Serial.println("je rentre dans le loop");
    while(Serial.available() > 0) // tant qu'il y a des caractères à lire
    {
      recu=Serial.read();
      Serial.print(recu);
      if(recu=="go")
      {
        Serial.println("c'est go");
      }
     }
  }

}

Bin non, y'a pas de miracle...
Avec Serial.read(), tu reçois un caractère. Un seul.
Donc pour recevoir "go", il va falloir passer 2 fois par Serial.read() !
Alors, la 1ère fois, tu ranges le caracthère reçu -> tu le mets dans une autre variable

char premier_recu = recu

puis tu refais Serial.read(), et ensuite, tu testes

if ( premier_recu == 'g' && recu == 'o' ) { ...

Par ailleurs, selon ce que fait l'emetteur, il peut y avoir des caractères "non-affichables" à la suite (en particulier Carriage Return et Line Feed c-à-d Retour Charriot et A La Ligne - vieux souvenir des machines à écrire mécaniques)
Tu vas devoir en tenir compte.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.