Comment sortir d'une boucle do/while selon 4 conditions

Bonjour à tous et bonne année!!

J’ai un doute pour sortie d’une boucle do/while et vider mon serial.

J’aimerais quitter ma boucle do/while quant

  • le logfile.available()) retrune false
  • ou quand j est plus grand que PARAMSIZE (170(
  • ou quand le caractère \n est lu
  • ou quand le caratere \r est lu

si reste dans la boucle

J’ai un doute concernant le couple entre le || et le !=

Voici mon code pour etre plus claire

    if(isSdReady == true)
    {

      //logfile = SD.open("/GPS/2015/14-20-20.TXT", FILE_READ);
      logfile = SD.open(fileName, FILE_READ);


      if (logfile)
      {
        int j = 0;
        do
        {
          //SerialUSB.write(logfile.read());

          if(j < PARAMSIZE)
          {
            param[j++] = logfile.read();
          }
          else
          {
            sprint(F("OF param: "),0); sprintln(j,0);
            //return false;
          }
      
        }while((logfile.available()) || (j < PARAMSIZE) || (param[j] != '\n') || param[j] != '\r');
        
        param[j]='\0';
        
        logfile.close();
      }
      // if the file isn't open, pop up an error:
      else
      {
        sprint(F("error opening: "),2);
        sprintln(fileName,2);
        //return false;
      }
    }

en gros, je pourrais traduire ceci en français

}while((logfile.available()) || (j < PARAMSIZE) || (param[j] != '\n') || (param[j] != '\r'));

Reste dans la boucle
tant que logile.available est vrai
tant que j est plus petit que PARAMSIZE
tant que param[j] ne contient pas de \n
tant que param[j] ne contient pas de \r

Si l’une de ces conditions retourne false (ou n’est pas respectée), sort de la boucle

L’autre souci, c’est que si par exemple, il rencontre le caractere \n et qu’il sort de la boucle sans que tous les caracteres sont lu (logfile.available retourne toujours true), que ce passe-t-il?

Reste-t-il des cacateres en cache? si oui, comment tout vider pour la prochaine lecture d’un autre fichier qui n’a rien à voir a celui lu actuellement?

Milles mercis pour vos lumières

Bonjour'

Ce ne sont pas des ou || mais des et && qu'il faut dans ta condition

Merci Kamill