Révision 483
Ajouté par Awa Semou FAYE il y a presque 3 ans
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
modification test unitaire version finale