Projet

Général

Profil

« Précédent | Suivant » 

Révision 409

Ajouté par yoguer il y a presque 4 ans

recupère la tram puis la traite et renvoie la longitude et la latitude en nombre VF

Voir les différences:

branch/Guer/sp4a12/main.c
}
float conversion_sexa(char *latitude)
unsigned long int conversion_sexa(char *latitude_longitude)
{
float reste,resultat;
int tram=decode_nombre(latitude,12);
printf("%d\n",tram);
unsigned long int resultVF=0;
int tram=decode_nombre(latitude_longitude,12);
/* int degres=(tram/1000000); //on travailler en virgule flottante
reste=(tram-(degres*1000000));
reste=(reste/10000);
resultat=(degres+(reste/60));*/
int degres=(tram/1000000);
reste=(tram-(degres*1000000));
reste=(reste/10000);
resultat=(degres+(reste/60));
resultVF=(degres*600000+reste*10000); //on travail en 1/10000('/?)
//On calcule un K pour passer en rad qui vaut 2.907718*10^-8
return resultat;
return resultVF;
}
......
printf("%d\n", validation);
}
void traitement_trame(char *trame)
{
char tab_latitude[13];
char tab_longitude[14];
int i,j;
unsigned long int latitude,longitude;
if (trame_cmp(trame,"GPGGA")==1)
{
for(i=0;i<11;i++)
{
tab_latitude[i]=trame[i+17];
}
latitude=conversion_sexa(tab_latitude);
for(j=0;j<12;j++)
{
tab_longitude[j]=trame[j+29];
}
longitude=conversion_sexa(tab_longitude);
printf("latitude=%ld\n",latitude);
printf("longitude=%ld\n",longitude);
printf ("> %s\n",trame);
}
}
//Fonction ? modifier !!!!!
void traitement(char * trame)
......
static int cpt=0;
cpt++ ;
if (trame_cmp(trame,"GPGGA")==1)
{
//printf ("> %s\n",trame);
}
traitement_trame(trame);
}
......
void test_conversion_latitude_longitude(void)
{
char *trame_latitude;
trame_latitude="3723.2475,S";
float retour;
char *trame_latitude_longitude;
trame_latitude_longitude="35723.2475,W";
unsigned long int retour;
retour=conversion_sexa(trame_latitude);
printf("retour=%f\n",retour);
retour=conversion_sexa(trame_latitude_longitude);
printf("retour=%ld",retour);
}

Formats disponibles : Unified diff