Révision 231
Ajouté par gasacco il y a presque 4 ans
branch/sacco/sp4a12/main.c | ||
---|---|---|
0};
|
||
|
||
|
||
float a =10;
|
||
float b = (float) 1;
|
||
float c = (float) 1/6;
|
||
float d = (float) 1/60;
|
||
float e = (float) 1/600;
|
||
float f = (float) 1/6000;
|
||
float g = (float) 1/60000;
|
||
float h = (float) 1/600000;
|
||
|
||
const pi =3.14159265;
|
||
|
||
|
||
//D?finition des structures
|
||
typedef struct
|
||
{
|
||
float latitude;
|
||
... | ... | |
}Zone;
|
||
|
||
|
||
//Variables globales
|
||
float a =10;
|
||
float b = (float) 1;
|
||
float c = (float) 1/6;
|
||
float d = (float) 1/60;
|
||
float e = (float) 1/600;
|
||
float f = (float) 1/6000;
|
||
float g = (float) 1/60000;
|
||
float h = (float) 1/600000;
|
||
|
||
Position pos_Mimizan ={44.208904, -1.297033};
|
||
Position pos_Evian = {46.401488, 6.59049};
|
||
Position pos_Angers = {47.478419, -0.563};
|
||
Position pos_Paris = {48.856614, 2.3522219};
|
||
|
||
Position pos_actuelle = {45.7833, 3.0833};
|
||
|
||
Zone zones[] = {{{44.208904, -1.297033},50}, {{47.478419, -0.563},70}, {{46.401488, 6.59049},50}, {{48.856614, 2.3522219},90}};
|
||
int nb_Zones = 4;
|
||
|
||
|
||
//Retourne un caract?re chiffr? en entier
|
||
int decode_int(char c)
|
||
{
|
||
unsigned int ValDecimale;
|
||
... | ... | |
}
|
||
}
|
||
|
||
|
||
//V?rification des trames "GPGGA"
|
||
int trame_cmp(char* a,char* b){
|
||
int i =0;
|
||
while (b[i]!='\0')
|
||
... | ... | |
cpt++;
|
||
}
|
||
|
||
//Convertit un nombre ?crit en caract?re en d?cimale
|
||
int decode_nombre( char *ch, int n) //A coder sans strlen
|
||
{
|
||
int i =0;
|
||
... | ... | |
return(Somme);
|
||
}
|
||
|
||
|
||
//Convertit Latitude sexag?simale en d?cimale
|
||
float conversion_Lat_sexa_dec(char coord[])
|
||
{
|
||
|
||
... | ... | |
|
||
}
|
||
|
||
//Convertit Longitude sexag?simale en d?cimale
|
||
float conversion_Long_sexa_dec(char coord[])
|
||
{
|
||
float Coeff_Ent[5] = {0,a,b,c,d};
|
||
... | ... | |
|
||
}
|
||
|
||
//Convertit indiff?remment une longitude / latitude
|
||
float conversion(char * coord)
|
||
{
|
||
int i=0;
|
||
... | ... | |
float dist = calcule_distance(p_1,p_2);
|
||
vitesse = dist*3600;
|
||
}
|
||
|
||
int distance_a_la_plus_proche_zone(Position p, Zone r[], int nb_zones, float *d)
|
||
{
|
||
if (nb_zones ==0)
|
||
{
|
||
return -1;
|
||
}
|
||
else
|
||
{
|
||
int i;
|
||
int curseur =0;
|
||
float distance_min = 10000;
|
||
float distance;
|
||
for (i=0;i<nb_zones; i++)
|
||
{
|
||
distance =calcule_distance(p, r[i].rpos);
|
||
if (distance <= distance_min)
|
||
{
|
||
distance_min = distance;
|
||
curseur = i;
|
||
}
|
||
}
|
||
*d = distance_min;
|
||
return curseur;
|
||
}
|
||
|
||
}
|
||
|
||
//Ajouter vos tests unitaires dans cette fonction.
|
||
void tests_unitaires(void){
|
||
void tests_unitaires(void){
|
||
|
||
//Tests unitaires basiques
|
||
if (5!=5){
|
||
printf ("Erreur Test unitaire basique.\n");
|
||
exit(-1);
|
||
}
|
||
}
|
||
|
||
//Tests unitaires de trame_cmp
|
||
if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
... | ... | |
printf("Erreur Test unitaire conversion_Latitude_sex_dec 1.\n");
|
||
exit(-1);
|
||
}
|
||
//Tests unitaires de conversion Latitude et Longitude
|
||
if (conversion_Lat_sexa_dec("0045.0000")-(float) 0.75>0.0001){
|
||
printf("Erreur Test unitaire conversion_Latitude_sexa_dec.\n");
|
||
exit(-1);
|
||
... | ... | |
printf("Erreur Test unitaire conversion_Latitude_sexa_dec.\n");
|
||
exit(-1);
|
||
}
|
||
//Tests unitaires de conversion
|
||
if (conversion("3723.2475")-(float)37.387458>0.0001){
|
||
printf("Erreur Test unitaire conversion.\n");
|
||
exit(-1);
|
||
... | ... | |
printf("Erreur test unitaire conversion.\n");
|
||
exit(-1);
|
||
}
|
||
//Test unitaires de decode_trame
|
||
Position test;
|
||
if (decode_trame("$GPGSV,3,3,10,22,39,053,50,28,15,320,*7E", &test) != 0){
|
||
printf("Erreur test unitaire decode_trame.\n");
|
||
... | ... | |
printf("Erreur test unitaire decode_trame.\n");
|
||
exit(-1);
|
||
}
|
||
|
||
|
||
//Tests unitaires de distance a la plus proche zone
|
||
float dist_min;
|
||
if (distance_a_la_plus_proche_zone(pos_actuelle, zones, nb_Zones, &dist_min) != 2){
|
||
printf("Erreur test unitaire distance_a_la_plus_proche_zone");
|
||
exit(-1);
|
||
}
|
||
}
|
||
|
||
void test_decode_int(void)
|
Formats disponibles : Unified diff
Écriture de distance_a_la_plus_proche_zone et de son test unitaire