Serial.read() stocké dans une variable string

Bonjour à tous,

J’ai besoin d’aide, je récupère via des Command At avec un Esp8266 un Json qui viens de mon API on line.

Mon problème c’est qu’après lecteurs du moniteur serie de mon ESP, je récupère la réponse caractère apr caractère en char.

Hors j’aurai forcement besoin de stocker toute la chaine dans un string pour pouvoir le parser … et là c’est le drame, impossible de concaténer les char’s :slight_smile:

Voici le code qui fonctionne à l’affichage mais je n’arrive pas à récupérer en entier dans une var

void recupjson(const int timeout)
{
   String reponse = "";
  long int time = millis();
  while( (time+timeout) > millis())
  {
       while (esp8266.available())
      {
          char line = esp8266.read();
          delay(1);
          Serial.print(line);
          if (line == '\0') continue;
      }
  }
}

Impossible de le caster car les caractères son mal interprétées et ma réponse deviens illisible.

Quelqu’un c’st déjà frotté à cela ? j’ai trouvé pas mal de réponse mais aucune ne me permet de régler mon problème…

Même de tableau de char

Merci d’avance :slight_smile: pour vos réponses

String reponse = "";

Si tu déclares une String et que tu ne mets rien dedans ... :confused:

C'était un test, il n'était pas utilisé !

Nouveauté que je ne comprend pas du tout :slight_smile:

J'ai fais une fonction de transition pour tester le changement de type

Quand j'utilise cette fonction et que je serial.print ce qui est return, la variable lettre ( donc sans aucune modif ) j'ai mon json nickel

char recupChar(char lettre)
{
  char lettreTemp = lettre;
  return lettre;
}

J'affiche le JSON:
{"Requete":"SELECT * from table WHERE id = '563' ORDER BY id DESC","toutes_affaires":[{"id":"563","refDEvis":"AD1807116","annee":"2019"

Et si je cast la variable lettreTemp sans la return

char recupChar(char lettre)
{
  char lettreTemp = lettre;
  String (lettreTemps);
  return lettre;
}

J'affiche le JSON:
{"equte""SEEC *fro lite_actresWHEE d ='56' RDE BYid ESC,"outs_afaies"[{"d":563,"efEvs""AD80716""anee""209"

Le caractères déconnent, je ne comprend pas c'est meme pas une variable que j'utilise

Quelqu'un à une idée ce qui se passe ? :slight_smile:

Bonjour,

En modifiant un minimum ton programme.

void recupjson(const int timeout)
{
   String reponse = "";
  long int time = millis();
  while( (time+timeout) > millis())
  {
       while (esp8266.available())
      {
          char line = esp8266.read();
          reponse+=line;
          Serial.print(line);
          if (line == '\0') continue;
      }
  }
  Serial.println();
  Serial.println(reponse);
}

Tu peux aussi utiliser readStringUntil()

éventuellement jetez un oeil à mon petit tuto sur le sujet d'écoute de données arrivant de manière asynchrone ou le code de mon tuto sur l'ESP-01 qui envoie des commandes AT et écoute les réponses.