Traiter des commandes reçue par le port Série [résolu]

Merci grace à vous deux j'ai pu corriger mon code et ça fonctionne.
J'ai comme vous me l'avez conseillé déclaré l'index i et le tableau command en global comme ça ils ne sont pas réinitialisés à chaque tour de boucle, le i ne se remet à 0 que lorsque que in == ';' (quoique ça fonctionne aussi avec le '\n') mais j'aime bien comme ça) et je vais tout de suite implémenter en if pour ne pas faire d'overflow si on tape une commande trop longue.

Je voudrais savoir si on peut vider la pile de données entrantes, comme ça si i > cmdLen (longueur du tableau command), alors je vide la pile et le tableau en envoyant un message "commande trop longue"

Pour ceux que ça interesse le code fonctionnel :

boolean ledState[13] = {false};
int i = 0;
char cmd[50] = "";
int cmdLen = 50;

void setup () {
  
   pinMode (13, OUTPUT);
   Serial.begin (9600); 
}

void loop () {
  
  while (Serial.available ()) {
    char in = Serial.read ();
    
    if (i < 50) {
      cmd[i] = in;
   
      if (in == ';') {
        exeCmd ();
        clearCmd();
        break;
      }
    }
    else {
      Serial.println ("Commande trop longue.");
      Serial.flush ();
      clearCmd ();
    }
    
    ++i;
  }
  
}

void clearCmd () {
  for (int c; c < cmdLen; ++c)
    cmd[c] = 0;
  i = 0;
}
void exeCmd () {
  
  char * type = strtok (cmd, " ");
  
  if (strcmp (type, "Set") == 0) {
    // Action sur les sorties.
  }
  
  else if (strcmp (type, "Check") == 0) {
    // Vérifie l'état d'une sortie
    int num = atoi (strtok(NULL, " "));
    if (num > 0 && num < 13)
      Serial.println (ledState[num]);
    else
      Serial.println (String("Erreur la sortie ") + num + String(" n'existe pas"));
  }
  
  else if (strcmp (type, "Read") == 0) {
    // Lie la valeur d'une entrée
    int num = atoi (strtok(NULL, " "));
    if (num > 0 && num < 5)
      Serial.println (analogRead(num));
    else
      Serial.println (String("Erreur l'entree ") + num + String(" n'existe pas"));
  }  
  else if (strcmp(cmd, "\n") == 0)
    Serial.println ("Commande connue");
  else
    Serial.println ("Commande inconnue");
  
  
}