saraza
January 5, 2013, 3:27pm
1
Bonjour,
Je rencontre un souci en utilisant sprintf.
Voici mon code :
long lat2, lon2;
Serial.println(lat2);
Serial.println(lon2);
sprintf(adresse,"AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat=%d&long=%d\"",lat2,lon2);
Serial.print(adresse);
mySerial.println(adresse);
Et ce que j'obtiens sur mon Serial :
449205
21367
AT+HTTPPARA="URL","site.fr/val.php?id=1&lat=29753&long=7"
Je ne comprend d'où viennent ce 29753 et ce 7...
J'ai dû faire une erreur quelque part mais je la vois vraiment pas.
sprintf(adresse,"AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat=%d&long=%d\"",lat2,lon2);
449205
21367
AT+HTTPPARA="URL","site.fr/val.php?id=1&lat=29753&long=7"
Je ne comprend d'où viennent ce 29753 et ce 7...
lat2 et lon2 sont définis comme des long. Il faudrait le préciser dans la ligne du sprintf
sprintf(adresse,"AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat=%ld&long=%ld\"",lat2,lon2); // il faut ajouter l devant le d pour indiquer que c'est un long
saraza
January 5, 2013, 3:49pm
3
Merci beaucoup, c'était ça !
Bonjour,
Au passage tu remarqueras qu'une grande partie de ta chaine est statique
Seule la partie verte change :
sprintf(adresse, "AT+HTTPPARA="URL","site.fr/val.php?id=1&lat=%ld&long=%ld"", lat2, lon2);
Tu peut donc gagner en vitesse et en RAM en faisaint comme ceci :
Serial.print(F("AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat="));
Serial.print(lat2);
Serial.print(F("&long="));
Serial.print(lon2);
Serial.println(adresse);
Plus besoin de sprintf (qui est super lourd et gourmand en ressource).