Bonjour à tous,
J'utilise un GPS et ce code me retourne les positios et date
gps.getPar(lon,lat,alt,time,vel);
La variable time me retourne ceci : 20130609062400.097
Comment puis-je convertir ceci de maniere à etre comrpis par l'oeil humain, du genre
16-06-2013 10:10:00
Merciiii
bonjour,
quel modèle de gps?
sans le code complet, c'est difficile de répondre.
Heu c'est un SIM908 qui comprend un GSM/GPS
gps.getPar(lon,lat,alt,time,vel);
Serial.print(time) // => 20130609062400.097
Ben je ne sais pas trop quoi donner en plus
#include "gps.h"
GPSGSM gps;
#ifdef DEBUG
Serial.println(F(""));
Serial.println(F("Sending GPS coords to the remote server"));
Serial.println(F("---------------------------------------"));
stat=gps.getStat();
if(stat==1)
Serial.println(F("NOT FIXED"));
else if(stat==0)
Serial.println(F("GPS OFF"));
else if(stat==2)
Serial.println(F("2D FIXED"));
else if(stat==3)
Serial.println(F("3D FIXED"));
#endif
delay(5000);
//Get data from GPS
gps.getPar(lon,lat,alt,time,vel);
strcpy (coords,"lat=");
strcat (coords,lat);
strcat (coords,"&long=");
strcat (coords,lon);
strcat (coords,"&alt=");
strcat (coords,alt);
strcat (coords,"&vel=");
strcat (coords,vel);
strcat (coords,"&time=");
strcat (coords,time);
#ifdef DEBUG
Serial.print(F("Coords to be sent : "));
Serial.println(coords);
#endif
inet.httpPOST(host, port_post, path_post, coords , "Result", 1000);
delay(10000);
J'aimerais modifier mon code ci-dessous pour que time ne soit plus un chiffre a 20 caracter, mais un format date et time comme fais la fonction.
Ca doit etre un format timeStamp et je ne sais pas convertir ca...
pierrot10:
Ben je ne sais pas trop quoi donner en plus
J'aimerais modifier mon code ci-dessous pour que time ne soit plus un chiffre a 20 caracter, mais un format date et time comme fais la fonction.
Ca doit etre un format timeStamp et je ne sais pas convertir ca...
bonjour
c'est quelle librarie ? trouvée où ?
regarde pour exemple la lib Tinygps et sa methode Date/time cracking
http://arduiniana.org/libraries/tinygps/
Tu peux découper une chaîne de caractères avec Substring
Puis ré-assembler les morceaux de façon lisible et intercalant des "-" ou ":"
Je n'arrive toujours pas lire ce formatz et le comvertir
Le Time est tiré de cette fonction
gps.getPar(lon,lat,alt,time,vel);
char GPSGSM::getPar(char *str_long, char *str_lat, char *str_alt, char *str_time, char *str_speed)
{
char ret_val=0;
char *p_char;
char *p_char1;
gsm.SimpleWriteln("AT+CGPSINF=0");
gsm.WaitResp(5000, 100, "OK");
if(gsm.IsStringReceived("OK"))
ret_val=1;
//longitude
p_char = strchr((char *)(gsm.comm_buf),',');
p_char1 = p_char+1; //we are on the first char of longitude
p_char = strchr((char *)(p_char1), ',');
if (p_char != NULL) {
*p_char = 0;
}
strcpy(str_long, (char *)(p_char1));
// latitude
p_char++;
p_char1 = strchr((char *)(p_char), ',');
if (p_char1 != NULL) {
*p_char1 = 0;
}
strcpy(str_lat, (char *)(p_char));
// altitude
p_char1++;
p_char = strchr((char *)(p_char1), ',');
if (p_char != NULL) {
*p_char = 0;
}
strcpy(str_alt, (char *)(p_char1));
// UTC time
p_char++;
p_char1 = strchr((char *)(p_char), ',');
if (p_char1 != NULL) {
*p_char1 = 0;
}
strcpy(str_time, (char *)(p_char));
// TTFF
p_char1++;
p_char = strchr((char *)(p_char1), ',');
if (p_char != NULL) {
*p_char = 0;
}
// num
p_char++;
p_char1 = strchr((char *)(p_char), ',');
if (p_char1 != NULL) {
*p_char1 = 0;
}
// speed
p_char1++;
p_char = strchr((char *)(p_char1), ',');
if (p_char != NULL) {
*p_char = 0;
}
strcpy(str_speed, (char *)(p_char1));
return ret_val;
}
Mais en fait, je suis bête, la date est inscrite dans ce chiffre
20130609062400.097
La question est comment ajouter des - afin formater cette chaine de caratere de la sorte 2013-06-09 062400.097
Par contre je n'ai aucune idée sur ce c'est que le : 062400.097. J'imagine bien que ca doit être l'heure, mais.... avez vous une diée?
MERCI
system
June 17, 2013, 2:27pm
10
Peut être 6h 24min 0s 97ms ?
Sinon lire la datasheet
Ben oui, c'est ce que j'avais pensé, mais 6h du mat, c'est comme tot pour bosser. Mais si l'heure est en UTC, c'est rare qu' 8h je bosse etc....
Mais c'est peut etre bien, ca je ne me souviens plus quand j'ai lancé ce code
pierrot10:
Par contre je n'ai aucune idée sur ce c'est que le : 062400.097. J'imagine bien que ca doit être l'heure, mais.... avez vous une diée?
bonsoir
c'est l'heure en UTC
la partie decimale est l'age de la trame qui suit
je fais simple et court
au creneau montant (start) de la trame qui debute , "au tout debut du BIP, il etait exactement HHMMSS.mil" (plagiat volontaire pour ceux qui ont connu l'horloge parlante
la theorie GPS NMEA et derivé veut qu'au moins une trame "datum" soit emise par seconde en fix, mais pour que les équipements recepteurs puissent avoir une precision d'association temporelle importante, il faut aussi tenir compte de la chaine de transmission reception et de sa faible precision intrinseque.
dans les gps dediés servant d'asservissement à des bases de temps, le temps de montée du creneau "start" est une des caractéristiques les plus importantes.
dans le monde "arduino petit log" cette valeur peut etre ignorée ou simplement prise en compte "anecdotiquement"