Ayuda con sprintf
hola leyendo este hilo http://forum.arduino.cc/index.php?topic=277153.0 me e encontrado que si utilizo lo que ustedes han expuesto trabaja bien pero solo con una variable, pero la segunda se pierde, me explico mejor tengo un gps que toma la latitud y longitud ambos como flotantes, la idea es enviar un sms con los dos valores través de sprintf obviamente en un solo mensaje pero no logro crear el empaque para enviarlos, alguna idea, desde ya muchas gracias adjunto el codigo.
float latitude,longitude;
gps.f_get_position(&latitude, &longitude);
gps.stats(&chars, &sentences, &failed_checksum);
char* buffn="";
char* buff="";
dtostrf(longitude,10,6,buff);
dtostrf(latitude,10,6,buffn);
concatenada
sprintf (string,"latitud: %d|longitud: %d| con s ", buffn,buff);
serial.println(string);
float latitude,longitude;
gps.f_get_position(&latitude, &longitude);
gps.stats(&chars, &sentences, &failed_checksum);
char* buffn="";
char* buff="";
dtostrf(longitude,10,6,buff);
dtostrf(latitude,10,6,buffn);
concatenada
sprintf (string,"latitud: %d|longitud: %d| con s ", buffn,buff);
serial.println(string);
aspecto aproximado que hubiera tenido tu post si hubieras leído detenidamente las normas.
y ahora paso responderte lo que creo que visto.
en primer lugar, los buffers buffn y buff son cadenas vacías, con lo que cuando hagas el dtostrf e intente almacenar algo en ellos, se van desbordar, con consecuencias imprevisibles.
define ambos, bien metiendo entre sus comillas un número de caracteres suficientes para lo que vas enviar, o bien en la forma char buffn[20]; (reservaría 20 caracteres).
y luego, en el sprintf, creo que en lugar de %d deberías poner %s, pues los parámetros son cadenas.
prueba y comentas.
saludos.
hola leyendo este hilo http://forum.arduino.cc/index.php?topic=277153.0 me e encontrado que si utilizo lo que ustedes han expuesto trabaja bien pero solo con una variable, pero la segunda se pierde, me explico mejor tengo un gps que toma la latitud y longitud ambos como flotantes, la idea es enviar un sms con los dos valores través de sprintf obviamente en un solo mensaje pero no logro crear el empaque para enviarlos, alguna idea, desde ya muchas gracias adjunto el codigo.por favor, echa un vistazo las normas del foro, y aprende manejar un poco los distintos iconos del editor para que tus post tengan un aspecto más adecuado. gracias.code: [select]float latitude,longitude;
gps.f_get_position(&latitude, &longitude);
gps.stats(&chars, &sentences, &failed_checksum);
char* buffn="";
char* buff="";
dtostrf(longitude,10,6,buff);
dtostrf(latitude,10,6,buffn);
concatenada
sprintf (string,"latitud: %d|longitud: %d| con s ", buffn,buff);
serial.println(string);
y ahora paso responderte lo que creo que visto.
en primer lugar, los buffers buffn y buff son cadenas vacías, con lo que cuando hagas el dtostrf e intente almacenar algo en ellos, se van desbordar, con consecuencias imprevisibles.
define ambos, bien metiendo entre sus comillas un número de caracteres suficientes para lo que vas enviar, o bien en la forma char buffn[20]; (reservaría 20 caracteres).
y luego, en el sprintf, creo que en lugar de %d deberías poner %s, pues los parámetros son cadenas.
prueba y comentas.
saludos.
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Ayuda con sprintf
arduino
Comments
Post a Comment