Go Down

Topic: Sprintf (Read 909 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 tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy