Go Down

Topic: Sprintf (Read 746 times) previous topic - next topic

saraza

Bonjour,

Je rencontre un souci en utilisant sprintf.

Voici mon code :

Code: [Select]
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 :
Code: [Select]
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.

fdufnews

Code: [Select]
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"

Quote
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

Code: [Select]
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

Merci beaucoup, c'était ça !  :)

skywodd

Bonjour,

Au passage tu remarqueras qu'une grande partie de ta chaine est statique ;)

Seule la partie verte change :
Quote
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 :
Code: [Select]
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).
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Go Up