const byte longeurMaxMessage = 30;
char message[longeurMaxMessage + 1]; // + 1 pour le caractère nul en fin de chaîne
const char marqueurDeFin = '\n';
bool messageDisponible() {
static byte indiceEnCours = 0;
int r = Serial.read();
if (r == -1) return false; // Il n'y a rien à lire
if (r == marqueurDeFin) { // si c'est le marqueur de fin
message[indiceEnCours] = '\0'; // on termine la c-string
indiceEnCours = 0; // on se prépare pour la prochaine fois
return true; // on dit que le message est disponible
}
if (indiceEnCours < longeurMaxMessage) { // s'il y a encore de la place
message[indiceEnCours++] = r; // on stocke le caractère et incrémente l'indice
}
return false; // Le message n'est pas terminé
}
void analyserMessage() {
Serial.print("J'analyse \"");
Serial.print(message);
Serial.println("\"");
}
void setup() {
Serial.begin(115200); Serial.println();
Serial.println("Entrez des commandes.");
}
void loop() {
if (messageDisponible()) {
analyserMessage();
}
}