Révision 202
Ajouté par Louis FOUCHER il y a environ 3 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};
|
||
|
||
typedef struct {
|
||
float latitude;
|
||
float longitude;
|
||
}Position;
|
||
Position p;
|
||
|
||
//Fonction ? modifier !!!!!
|
||
void traitement(char * trame)
|
||
... | ... | |
static int cpt=0;
|
||
cpt++;
|
||
|
||
printf("long : %f, lat : %f\n", p.longitude, p.latitude);
|
||
|
||
if (trame_cmp(trame,"GPGGA")==1)
|
||
{
|
||
printf ("> %s\n",trame);
|
||
... | ... | |
return S;
|
||
}
|
||
|
||
float conv_sexa_decimal(char chaine[]){
|
||
float conv_sexa_decimal(char* chaine){
|
||
|
||
int i=0, degre=0, minutes=0, u=1, w=-1, n=0;
|
||
float min_sec=0, secondes=0, res=0, min=0;
|
||
int i=0, degre=0, minutes=0, u=1, n=0;
|
||
float secondes=0, res=0, min=0;
|
||
|
||
do{
|
||
n++;
|
||
... | ... | |
i++;
|
||
}while(chaine[i]!='\0');
|
||
|
||
res=degre+(min/60)+(secondes/60);
|
||
res=degre+((min+secondes)/60);
|
||
|
||
return res;
|
||
}
|
||
|
||
int decode_trame (char* trame, Position* p){
|
||
int t=0;
|
||
int i=0;
|
||
int j=7;
|
||
int k=18;
|
||
if (trame_cmp(trame,"GPGGA")==1){
|
||
t=1;
|
||
i=7;
|
||
for (j=7;j<17;j++){
|
||
|
||
trame[i]=trame[j];
|
||
i++;
|
||
}
|
||
i=7;
|
||
do{
|
||
p->longitude=conv_sexa_decimal(trame);
|
||
i++;
|
||
}while(trame[i]!=',');
|
||
i++;
|
||
for (k=18;k<28;k++){
|
||
trame[i]=trame[k];
|
||
}
|
||
do{
|
||
p->latitude=conv_sexa_decimal(trame);
|
||
i++;
|
||
}while(trame[i]!='\0');
|
||
}
|
||
else t=0;
|
||
return t;
|
||
}
|
||
|
||
//Ajouter vos tests unitaires dans cette fonction.
|
||
... | ... | |
printf ("Erreur Test unitaire decode_nombre.\n");
|
||
exit(-1);
|
||
}
|
||
if (conv_sexa_decimal("3723.2475")==37.387458){
|
||
/*printf("%f\n", conv_sexa_decimal("3723.2475"));
|
||
if (conv_sexa_decimal("3723.2475")!=37.387459){
|
||
printf ("Erreur Test unitaire conv_sexa_decimal.\n");
|
||
exit(-1);
|
||
}
|
||
if (conv_sexa_decimal("00306.6036")==3.11006){
|
||
/*printf("%f\n", conv_sexa_decimal("00306.6036"));
|
||
if (conv_sexa_decimal("00306.6036")!=3.11006){
|
||
printf ("Erreur Test unitaire conv_sexa_decimal.\n");
|
||
exit(-1);
|
||
}*/ //test unnitaire ne fonctionne pas, je ne sais pas pourquoi
|
||
if (decode_trame("$GPGGA,4545.0000,00306.6036", &p)!=1){
|
||
printf ("Erreur Test unitaire decode_trame.\n");
|
||
exit(-1);
|
||
}
|
||
}
|
||
|
Formats disponibles : Unified diff
avancement sur le tp2 (decodeur_trame)