Projet

Général

Profil

« Précédent | Suivant » 

Révision 80

Ajouté par mamorales il y a environ 4 ans

Ajout d'une fonction pas encore terminée permettant de transformer une valeur sexagesimal en reel.
Ajout de deux fonction pour la latitude et la longitude.
Ajout de nouveaux test unitaire donc un non fonctionnel (le dernier).

Voir les différences:

branch/Morales/sp4a12/main.c
int trame_cmp(char* trame,char* type)
{
int i=1;
int comp=1; // comparateur
int end_comp=1; //permet de savoir quand arreter la comparaison
while (end_comp!='\0') // comparaison
int comp=1; // comparateur
int end_comp=1; //permet de savoir quand arreter la comparaison
while (end_comp!='\0') // comparaison
{
if (trame[i]!=type[i-1])
{
......
//fonction qui retourne l'entier correspondant au caractere mis en argument. (le caract?re '1' retourne l'entier 1)
int decode_int (char c)
{
int i=0;
int return_var=0; // variable de retour
if ((c>=48)&&(c<=57))
{
i=c-48;
return_var=c-48;
}
else
{
(i=-1);
(return_var=-1);
}
return i;
return return_var;
}
//fonction retournant uniquement les n premier chiffres dans un nombre.
int decode_nombre(char * ch,int n)
{
int i=0;
int nbr_return=0;
while (i<n)
{
nbr_return = nbr_return*10 + decode_int(ch[i]);
i=i+1;
}
return nbr_return;
}
//fonction covertissant des sexagesimal en reel
float sexagesimal_to_float(float lat)
{
int dec_val=lat;
int i=0;
while (dec_val>360)
{
dec_val=dec_val/10;
i=i+1;
}
float float_val;
float_val = (lat-dec_val*pow(10,i))/60;
printf("%f",dec_val+float_val);
return dec_val+float_val;
}
//fonction convertissant la cha?ne de caract?re contenant la latitude en nombre flottant
float lat_sexagesimal(char* trame)
{
int i=0;
int j=0;
int nbr_virgule=0;
float lat=0;
char val[4];
char val_decimal[4];
while (nbr_virgule<2) // on compte jusqu? la deuxi?me virgule
{
if (trame[i]==',')
{
nbr_virgule = nbr_virgule+1;
}
i++;
}
for (j=0;j<4;j++)
{
val[j]=trame[i]; // stock ce qui est sup?rieur ? 1
i++;
}
i++;
for (j=0;j<4;j++)
{
val_decimal[j]=trame[i]; // stock ce qui est sup?rieur ? 1
i++;
}
lat = decode_nombre(val,4) + 0.0001* decode_nombre(val_decimal,4); //on stock la valeur de la latitude
lat = sexagesimal_to_float(lat);
return lat;
}
//fonction convertissant la cha?ne de caract?re contenant la longitude en nombre flottant
float longitude_sexagesimal(char* trame)
{
int i=0;
int j=0;
int nbr_virgule=0;
float longitude=0;
char val[4];
char val_decimal[4];
while (nbr_virgule<4) // on compte jusqu? la deuxi?me virgule
{
if (trame[i]==',')
{
nbr_virgule = nbr_virgule+1;
}
i++;
}
for (j=0;j<5;j++)
{
val[j]=trame[i]; // stock ce qui est sup?rieur ? 1
i++;
}
i++;
for (j=0;j<4;j++)
{
val_decimal[j]=trame[i]; // stock ce qui est sup?rieur ? 1
i++;
}
longitude = decode_nombre(val,4) + 0.0001* decode_nombre(val_decimal,4); //on stock la valeur de la longitude
longitude = sexagesimal_to_float(longitude);
return longitude;
}
//Fonction ? modifier !!!!!
void traitement(char * trame)
{
static int cpt = 0;
cpt++;
if (trame_cmp(trame,"GPGGA"))
{
printf ("> %s\n",trame);
printf("latitude en reel : %f\n",lat_sexagesimal(trame));
printf("longitude en reel : %f\n\n",longitude_sexagesimal(trame));
}
}
......
printf ("Erreur Test unitaire trame_cmp.\n");
exit(-1);
}
if ((decode_int('0')!=0)||(decode_int('9')!=9)||(decode_int('A')!=-1))
if (decode_int('0')!=0)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('1')!=1)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('2')!=2)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('3')!=3)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('4')!=4)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('5')!=5)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('6')!=6)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('7')!=7)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('8')!=8)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('9')!=9)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_int('A')!=-1)
{
printf ("Erreur Test unitaire decode_int.\n");
exit(-1);
}
if (decode_nombre("7541",2)!=75)
{
printf ("Erreur Test unitaire decode_nombre.\n");
exit(-1);
}
if (decode_nombre("7541",3)!=754)
{
printf ("Erreur Test unitaire decode_nombre.\n");
exit(-1);
}
if (decode_nombre("123",3)!=123)
{
printf ("Erreur Test unitaire decode_nombre.\n");
exit(-1);
}
if (decode_nombre("987654321",2)!=98)
{
printf ("Erreur Test unitaire decode_nombre.\n");
exit(-1);
}
if ((sexagesimal_to_float (3723.2475)<=37,387458)||(sexagesimal_to_float (3723.2475)>=37,387460))
{
printf ("Erreur Test unitaire sexagesimal_to_float.\n");
exit(-1);
}
}
// Ne pas modifier cette fonction

Formats disponibles : Unified diff