Bonjour, je fait appel à vous car je bloque sur le problème suivant :
Depuis un ESP8266 (carte WEMOS D1R2) j'essaye de valoriser un texte sur un écran Nextion.
Le texte que je souhaite mettre est un float auquel je souhaite ajouter une unité en utilisant une fonction. Cependant je n'obtiens pas le résultat souhaité!
Le code suivant :
#include <Nextion.h>
float value = 0;
NexText t4 = NexText(0, 4, "t4");
NexText t5 = NexText(0, 6, "t5");
void setup() {
nexInit();
} // End of setup
char * getLabel( float value)
{
char returnValue[50];
sprintf(returnValue, "%.3f cm", value);
return returnValue;
}
void loop() {
//appel de la fonction : KO
t4.setText(getLabel(value));
//utilisation directe de sprintf : OK
char string[50];
sprintf(string, "%.3f cm", value);
t5.setText(string);
value = value + 10.351;
delay(5000);
} // End of loop
Produit le résultat suivant :
seul le second texte est "correct" le second est 'nimporte quoi. Je pense que c'est un prb de pointeur vs valeur, mais je n'arrive pas à m'en sortir.
Merci d'avance pour votre support.
l'en tête et corps de la fonction setText() (issus de la lib Nextion.h) sont les suivants:
bool setText(const char *buffer);
bool NexText::setText(const char *buffer)
{
String cmd;
cmd += getObjName();
cmd += ".txt=\"";
cmd += buffer;
cmd += "\"";
sendCommand(cmd.c_str());
return recvRetCommandFinished();
}