Projet

Général

Profil

« Précédent | Suivant » 

Révision 658

Ajouté par dgmbadinga il y a presque 4 ans

tp sp4a2 question 1 et 2 implentation de decode trame et son test unitaire

Voir les différences:

main.c
"$GPZDA,141914.00,01,02,2006,00,00*69",
0};
typedef struct{
float latitude; /* La structure qui d?finira les varuables de type position avec comme param?tres la latitude et la longitude*/
float longitude;
} position;
position position0; /* Variable qui va servir ? mettre en oeuvre le test unitaire*/
position p_1,p_2; /*Variables de type position qui vont servir ? d?finir les fonction de calcul de distance et de vitesse*/
int trame_cmp(char* trame,char* type){
int i,ok=0, taille=0;
......
}
int decode_trame(char * trame, position p){ /*Avec cette fonction extrait uniquement les trames GPGGA et surtout on extrait la lattitude et la longitude*/
int i; /* Il nous ervira ? parcourir la trame */
char ch[40];/* Il nous faut au moins 40 espaces pour r?cup?rer ce qui nous est n?cessaire dans la trame*/
char lat[9]; /*Pour r?cup?rer les donn?es de la latitude et de la longitude on les stocke dans deux tableaux*/
char lon[9];
if(trame_cmp(trame,"GPGGA")){
for(i=0;i<39;i++){
ch[i]=trame[i];
}
for(i=0;i<8;i++){
lat[i]=trame[17+i]; /* on r?cup?re les valeurs en sexag?simal des latitudes et longitude*/
lon[i]=trame[29+i];
p.latitude=latitude_flottant(lat); /* Ces valeurs sont ensuite converties pour en d?terminer la position*/
p.longitude=longitude_flottant(lon);
}
return 1;
}
return 0;
}
void test_decode_trame(void){ /* Dans le fichier gps.log on peut choisir 4 trames diff?rentes et en d?duire la r?ponse de la trame*/
if(decode_trame("$GPGSV,3,2,10,15,03,077,,18,04,041,42,19,85,271,,20,08,214,*7C", position0)!=0){
printf("Erreur conception fonction decode_trame");
exit(-1);
}
if(decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*79", position0)!=1){
printf("Erreur conception fonction decode_trame");
}
if(decode_trame("$GPGLL,4545.6424,N,00306.6036,E,141914.00,A*0E", position0)!=0){
printf("Erreur conception fonction decode_trame");
}
if(decode_trame("$GPGSA,A,3,,03,,22,14,,01,,18,,,,3.9,3.4,1.9*39", position0)!=0){
printf("Erreur conception fonction decode_trame");
exit(-1);
}
}
/*Ajouter vos tests unitaires dans cette fonction.*/
......
test_longitude_flottant(); /*appel de la fonction test longitude pour le test unitaire sur la conversion de la longitude en flotant*/
test_fonction_generique(); /*appel de la fonction test fonction generique pour le test unitaire sur la conversion de la longitude et la latitude en flotant*/
test_decode_trame();
}

Formats disponibles : Unified diff