Une fonction pour lire du texte dans la console

Bonjour
je tente de faire ça : une fonction qui renvoie un tableau de char lus dans la console.

Voici le code (sur ESP32) :

#define MAXINPUT 60


char* readSerial () {
  char input[MAXINPUT];
  uint8_t index = 0;
  while (1) {
    if (Serial.available() > 0) {
      input[index] = Serial.read();
      if (input[index] == '\n' || index == MAXINPUT - 1) break;
      ++index;
    }
  }
  while (Serial.available()) Serial.read(); // clear input buffer
  input[index] = 0;
  Serial.printf("readSerial : %s\n", input);
  return input;
}


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


void loop() {
  Serial.println("?");
  char* input = readSerial();
  Serial.println(input);
}

La lecture marche bien, mais la fonction de renvoie rien, car le dernier println n'affiche rien.
Où ai-je fait une erreur ?
Merci

char input[MAXINPUT];

Cette variable est sur la pile donc disparaît à la sortie de fonction.
-> static

Connais-tu readbytesuntil ?

Merci, le static fait bien le boulot !
Pas testé readBytesUntil car je voulais un appel du genre buffer = readSerial();
J’imaginais même un peu plus compliqué :

buffer = Serial.readString().c_str();

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