Transferts de données entre arduino par la liaison série

skywodd:
@zeric :

// Exemple d'appel : 

// String str;
// decode_rx(&str);

void decode_rx(String *str){
  *str = ""; // Init String
  char c; // Declare temp char
  while(Serial.available() < 1); // Block until Serial data available
  c = Serial.read(); // First read
  while(Serial.available() > 0 && c != '\0'){ // Serial test && char test
if(c == 10)
  *str = ""; // Reset string
else
  *str = *str + c; // Append char to string
c = Serial.read(); // Next read
  }
}

Bonjour, pour l'instant je me suis attaqué à la 1° solution:
Pourquoi bloquer le programme tant qu'on ne reçoit pas de caractère ? =>while(Serial.available() < 1); // Block until Serial data available
Pourquoi tester le caractère '\0' qui correspond au code NULL?
Pourquoi initialiser la valeur de str dans la fonction alors que l'on gagne 36 octets de prg en le faisant dans les définitions => *str = ""; // Init String 1°ligne de la fct
La fonction n'est pas linéaire, on ne fait rien d'autre tant que l'on n'est pas sorti de la 2° boucle !
Ne peut-on pas faire une addition composée sur une valeur pointée et gagner 126 octets de prg ? =>*str = *str + c; // Append char to string =>(*str += c;)
Euh, une dernière remarque :cold_sweat: ça ne fonctionne pas :zipper_mouth_face: