Projet

Général

Profil

« Précédent | Suivant » 

Révision 483

Ajouté par Awa Semou FAYE il y a presque 3 ans

modification test unitaire version finale

Voir les différences:

branch/faye_awasemou/sp4a12/main.c
int Vdecimal; //valeur en decimal du caractere pass? en parametre
if ( c <= '9' && c >='0' ) //comparaison pour savoir si le parametre recu est compris entre 0 et 9
{
Vdecimal =c-48; //affectation(methode permettant de donner la valeur en decimal du caractere)
Vdecimal =c-48; // si oui affectation(methode permettant de donner la valeur en decimal du caractere)
}else
......
s=s*10 + decode_int(ch[i]);// on fait la somme des valeurs decimales apres avoir calculer la valeur d?cimale associ?e au caract?re en utilisant la fonction decode_int
}
return s;
return s;// on retourne la somme;
}
......
//exempletrame="$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",
if (trame_cmp(trame,"GPGGA")) //on utilise la fonction trame_cmp pour savoir si la trame a le bon format GPGGA
{
position->latitude=conversionLatitude(trame+17);//on recupere la position en latitude en acccedant au champ de la latitude dans la trame
position->longitude=conversionLongitude(trame+29);//on recupere la position en longitude en acccedant au champ de la longitude dans la trame
return 1;//on retourne 1 pour montrer qu'on a le trame type GPGGA et qu'on a recuper? la position en latitude et longitude
int i;
char ch[10];// tableau dans lequel on stocke la longitude de la trame
for (i=0;i<10;i++) ch[i]=trame[29+i];// on recupere la valeur de la longitude et on le met dans le tableau ch
position->latitude=conversionLatitude(trame+17);//on fait la conversion de la latitude apres avoir recuperer la latitude
position->longitude=conversionLongitude(ch);//on fait la conversion de la longitude
return 1;//on retourne 1 pour montrer qu'on a la trame type GPGGA et qu'on a recuper? la position en latitude et longitude
}
return 0;//on retourne 0 sinon, la trame est ignor?e
}
......
float calcul_vitesse(Position P1, Position P2)// on prend en parametre les positions des deux points en latitude et longitude
{
float vitesse;//Variable contenant la vitesse resultante entre les deux points
vitesse=3600*calcul_distance(P1,P2);//on affecte a la vitesse la methode de calcul correspondante cad vitesse =distance /temps en faisant appel a la fonction calcul_distance sachant que le temps cest 1s on a directement la vitesse en km/s donc on miltiplie par 3600 pour avoir la vitesse km/heure vu que 1h=3600s
vitesse=3600*calcul_distance(P1,P2);//on affecte a la vitesse la methode de calcul correspondante cad vitesse =distance /temps en faisant appel a la fonction calcul_distance sachant que le temps c'est 1s on a directement la vitesse en km/s donc on miltiplie par 3600 pour avoir la vitesse km/heure vu que 1h=3600s
return vitesse; //on revoie la valeur du la vistesse calcul?e
}
......
//Fonction ? modifier !!!!!
void traitement(char * trame)
{
static int cpt=0;
static int cpt=0;
cpt++;
Position p;
Position p_initiale; // on declare une position a laquelle on initialise la latitude et la longitude avec des valeurs
p_initiale.latitude=45.750403;
p_initiale.longitude= 3.110065;
float distance; //distance a laquelle se trouve le vehicule
float vitesse;
float seuil=710;//seuil que le distance du vehicule ne doit pas depasser
int index;
if (decode_trame(trame,&p)) // on regarde si la trame est valide
{
printf ("> %s\n",trame);// on affiche la trame recue
vitesse=calcul_vitesse(p_initiale,p);//on calcule la vitesse entre la position du vehicule et une position premiere d'une zone dangereuse
index=distance_a_la_proche_zone(p,zones,sizeof(zones),&distance);// on calcule la distance la plus proche pour trouver l'index
if ((distance<seuil) && (vitesse>zones[index].vitmax))// on compare si la distance est inferieur au seuil donne et si la vitesse est superieur a celle definie pour cette zone
{
//si cest cas on affiche la distance et la vistance puis on declenche une alarme
printf(" La vitesse est egale a %f\n ",vitesse);
printf("La distance est egale a %f \n ",distance);
printf("Alarme ON \n");
printf(" Zone numero %d \n ",index);
}
else
//sinon l'alarme reste eteinte
printf("Alarme OFF \n ");
p_initiale = p;// on affecte a la position initiale la nouvelle position du vehicule car plus le vehicule roule plus il s'approche des zones dangereuses
}
return 0;
}
......
//variable concernant le test unitaire decode_trame
Position * position;
//variables concernant le test unitaire distance_a_la_proche_zone
Position p;
p.latitude=45.7500;
p.longitude=3.11006;
int nb_zones=3;
float d;
//test unutaire basique
......
exit(-1);
}
//tests unutaires de la fonction decode_trame
/* if(decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",position)==0){
if(decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&position)!=1){
printf("Erreur Test decode trame \n");
exit(-1);
}*/
}
//tests unutaires de la fonction calcul_distance
/*if (calcul_distance(P1,P2)- 0.0448 > 0.0001){
if (calcul_distance(P1,P2)- 0.04481788787 > 0.001){
printf ("Erreur Test unitaire calcul_distance.\n");
exit(-1);
}
//tests unutaires de la fonction calcul_vitesse
/* if (calcul_vitesse(P1,P2)-161.28 > 0.0001){
if (calcul_vitesse(P1,P2)-1613.443 > 0.01){
printf ("Erreur Test unitaire calcul_vitesse.\n");
exit(-1);
}*/
}
//tests unutaires de la fonction distance_a_la_proche_zone
/*if (distance_a_la_proche_zone(P1,zones,nb_zones,&d)!=2){
if (distance_a_la_proche_zone(P1,zones,nb_zones,&d)!=2){
printf ("Erreur Test unitaire distance_a_la_proche_zone.\n");
exit(-1);
}
// Test unitaire de la fonctionGenerique
/* if (fonctionGenerique("4545.0242") - 45.75040333 > 0.0001 )
if (fonctionGenerique("4545.0242") - 45.75040333 > 0.0001 )
{
printf("Erreur Test unitaire conversion latitude !!! \n");
exit(-1);
......
{
printf("Erreur Test unitaire conversion longitude !!! \n");
exit(-1);
}*/
}
}

Formats disponibles : Unified diff