Pages: [1]   Go Down
Author Topic: Comment convertit une date/time  (Read 537 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 368
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

J'utilise un GPS et ce code me retourne les positios et date

Code:
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
« Last Edit: June 17, 2013, 09:31:47 am by pierrot10 » Logged

Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Offline Offline
Edison Member
*
Karma: 9
Posts: 1661
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
quel modèle de gps?
sans le code complet, c'est difficile de répondre.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 368
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Heu c'est un SIM908 qui comprend un GSM/GPS

Code:
gps.getPar(lon,lat,alt,time,vel);
Serial.print(time) // => 20130609062400.097
Logged

Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Offline Offline
Edison Member
*
Karma: 9
Posts: 1661
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

sans le code complet, c'est difficile de répondre.
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 368
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ben je ne sais pas trop quoi donner en plus

Code:
#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...
Logged

Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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/
Logged

france
Offline Offline
God Member
*****
Karma: 8
Posts: 722
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux découper une chaîne de caractères avec Substring
http://arduino.cc/en/Tutorial/StringSubstring

Puis ré-assembler les morceaux de façon lisible et intercalant des "-" ou ":"
http://arduino.cc/en/Tutorial/StringAdditionOperator
Logged

Christian

Offline Offline
Sr. Member
****
Karma: 0
Posts: 368
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je n'arrive toujours pas lire ce formatz et le comvertir

Le Time est tiré de cette fonction
Code:
gps.getPar(lon,lat,alt,time,vel);
Code:
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;
}
Logged

Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Offline Offline
Sr. Member
****
Karma: 0
Posts: 368
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

France
Offline Offline
Full Member
***
Karma: 0
Posts: 154
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Peut être 6h 24min 0s 97ms ?
Sinon lire la datasheet
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 368
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4229
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



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  smiley-mr-green
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  smiley-mr-green

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"

Logged

Pages: [1]   Go Up
Jump to: