Révision 634
Ajouté par Faty MBAYE il y a presque 4 ans
main.c | ||
---|---|---|
"$GPVTG,99.4,T,,M,0.4,N,0.7,K*57",
|
||
"$GPZDA,141914.00,01,02,2006,00,00*69",
|
||
0};
|
||
|
||
//Structure de position
|
||
typedef struct
|
||
{
|
||
float latitude;
|
||
float longitude;
|
||
}
|
||
Position ;
|
||
|
||
//Fonction qui v?rifie la chaine de caract?re type
|
||
int trame_cmp(char* a,char* b)
|
||
... | ... | |
//Fonction qui renvoie la valeur d?cimale des n premiers caract?res de la chaine
|
||
int decode_nombre(char *ch, int n)
|
||
{
|
||
/*int i;
|
||
int i;
|
||
int valeur=0;
|
||
for(i=0;i<n;i++)
|
||
{
|
||
valeur = valeur + decode_int(ch[i])*pow(10,(n-i-1));
|
||
}
|
||
return valeur;*/
|
||
|
||
int i;
|
||
int valeur = decode_int(ch[0]);
|
||
for(i=0;i<n;i++)
|
||
{
|
||
valeur = valeur*10 + decode_int(ch[i]);
|
||
}
|
||
return valeur;
|
||
|
||
|
||
}
|
||
|
||
//Fonction de test de la fonction decode_nombre
|
||
... | ... | |
float longitude;
|
||
for (i=0;i<7;i++)
|
||
{
|
||
pe_minute[i]=longi[3+i]; //affectation des caracteres de lat sauf les 2 premiers
|
||
pe_minute[i]=longi[3+i]; //affectation des caracteres de longi sauf les 3 premiers
|
||
}
|
||
for (j=0;j<7;j++)
|
||
{
|
||
pd_minute[j]=longi[6+j]; //affectation des 4 derniers caracteres de lat ? pd_min
|
||
pd_minute[j]=longi[6+j]; //affectation des 4 derniers caracteres de longi ? pd_min
|
||
}
|
||
res_pe_minute = decode_nombre(pe_minute,2); //donne la valeur en d?cimal des 2 premiers caract?res
|
||
res_pd_minute = decode_nombre(pd_minute,4); //donne la valeur en d?cimal des 4 premiers caract?res
|
||
... | ... | |
longitude = angle_ini + (res_pe_minute/60) + (res_pd_minute/6000);//Valeur de la longitude
|
||
|
||
return longitude;
|
||
|
||
}
|
||
|
||
//Fonction de test de la fonction convert_longi
|
||
... | ... | |
}
|
||
|
||
//Fonction qui prend en argument la chaine de caract?re contenant la derni?re tram recue si elle est valide et donne sa position
|
||
decode_trame(char *trame, Position *p)
|
||
{
|
||
int i;
|
||
if (trame_cmp(trame,"GPGGA"))
|
||
{
|
||
p->latitude=convert_lat(trame+17);
|
||
p->longitude=convert_longi(trame+29);
|
||
return 1;
|
||
}
|
||
return 0;
|
||
}
|
||
//Fonction de test de la fonction decode_trame
|
||
void test_decode_trame(void)
|
||
{
|
||
if (decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&test_position)!=1)
|
||
{
|
||
printf("Erreur Test decode trame \n");
|
||
exit(-1);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
//Fonction ? modifier !!!!!
|
||
|
||
void traitement(char * trame)
|
Formats disponibles : Unified diff
MODIFICATION CODE