Bonjour à tous,
Je dois passer une variable de type unint8_t dans une fonction qui demande un char
uint8_t pos = 1;
sprintln(pos,2);
void sprintln(uint8_t message, int logToSd)
{
if(logToSd == 0 || logToSd == 2)
{
SerialUSB.println(message); // ICI Ca affiche bien 1
}
if(logToSd == 1 || logToSd == 2)
{
#ifdef LOGGER
sd_write(sd_logFile,(char *)message,true); // EN REVANCHE ici, la fonction sd_write va écrire un # à la place du 1 dans le fichier SD
#endif
}
}
void sd_write(char * fileName, char const * text, bool ln)
{
#ifdef LOGGER
if(isSdReady == true)
{
digitalWrite(PIN_SDLED, HIGH);
logfile = SD.open(fileName, FILE_WRITE);
// if the file opened okay, write to it:
if (logfile)
{
if(ln == true)
{
logfile.println(text);
}
else
{
logfile.print(text);
}
logfile.flush();
// close the file:
logfile.close();
}
else
{
// if the file didn't open, print an error:
sprint(F("\nError opening "),0); sprintln(fileName,0);
}
digitalWrite(PIN_SDLED, LOW);
// delay(100);
}
#endif
}
Je pensais que si pos est un int ou un uint8_t, il suffisait de mettre (char *) devant la variable pour le convertir en char comme ceci
char *c = (char *)pos;
Merci pour vos lumières