Projet

Général

Profil

« Précédent | Suivant » 

Révision 202

Ajouté par Louis FOUCHER il y a environ 3 ans

avancement sur le tp2 (decodeur_trame)

Voir les différences:

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