Besoin d'aide pour conversion int, float, double en char

Bonjour,

Alors ça fait longtemps que j'ai plus coder de l’Arduino, et j'avoue que je suis perdu pour des c***neries..

En gros j'aimerais juste mettre un ESP32 connecter sur une BBD mysql ( ceci marche sans soucis )

Par contre j'aimerais donc adapté les données envoyer et c'est la ou c'est le soucis :

char INSERT_SQL[] =  "INSERT INTO lora.incoming(who, msg) VALUES ";
int num = 0;

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

void loop() 
{
 INSERT_SQL = INSERT_SQL + "('lora', '" + num + "');";
 Serial.println(INSERT_SQL);
 num++; 
 delay(2000);
}

Et ceci me sort un joli :

invalid operands of types 'char [46]' and 'char*' to binary 'operator+'

Donc voila, je sais que c'est tous con, j'ai déjà cherché des réponses sur google et toujours le même soucis..
A savoir que je voudrais aussi pouvoir y intégré des float et des double :slight_smile:

Merci pour votre aide !

soit vous passez par la classe String qui sait concatener, soit vous utilisez sprintf() par exemple (sinon si vous voulez être économe en mémoire, vous utilisez itoa() pour convertir num en chaîne ASCII et vous utilisez strcat() pour bâtir un buffer

const size_t bufferSize = 100;
char commandBuffer[bufferSize];
String commmandString;

int num = 10;

void setup() {
  Serial.begin(115200);
  // avec une String
  commmandString.reserve(100); // évite le morcellement mémoire
  commmandString = "INSERT INTO lora.incoming(who, msg) VALUES ";
  commmandString += "('lora', '";
  commmandString += num ;
  commmandString += "');";
  Serial.println(commmandString.c_str());

  // avec une cString et les fonctions associées
  size_t n = snprintf(commandBuffer, bufferSize, "INSERT INTO lora.incoming(who, msg) VALUES ('lora', '%d');", num);
  if (n < bufferSize - 1)
    Serial.println(commandBuffer);
  else
    Serial.println(F("Buffer trop petit"));
}

void loop() {}

Hello, ça fonctionne parfaitement :slight_smile:
Merci !!

super, bonne continuation

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