Projet

Général

Profil

« Précédent | Suivant » 

Révision 640

Ajouté par mamoisan il y a presque 4 ans

test durée de certaines fonction des premiers TPs + vérification du clavier et de l'écran LCD

Voir les différences:

main.c
return latDec;//on retourne cette valeur
}
long latDMStoDec2(char * lat_DMS)//lat_DMS est sous la forme : 3723.2475
{
long deg = decode_nombre2(lat_DMS,2)*10000;//les degr?s de la latitude sont les 2 premiers chiffres on les d?code ainsi avec decode_nombre pour les convertir en flottant
long min = decode_int(lat_DMS[2])*100000+(decode_int(lat_DMS[3])*10000)+(1*decode_int(lat_DMS[5])*1000)+(0.01*decode_int(lat_DMS[6])*100)+(10*decode_int(lat_DMS[7]))+decode_int(lat_DMS[8]);//on d?compose les minutes en d?codant chiffre apr?s chiffre ? l'aide de decode_int
long latDec = deg*60+min;//la latitude en d?cimal est le nombre de degr?s + le nombre de minutes divis? par 60
return latDec;//on retourne cette valeur
}
//test unitaire permettant de voir si latDMStoDec fonctionne (il peut y avoir une erreur de pr?cision)
void test_latDMStoDec(void)
{
if (latDMStoDec("3723.2475")!= 37.387458){
printf ("Erreur Test latDMStoDec.%f\n", latDMStoDec("3723.2475"));
if (latDMStoDec("3723.2475")!= 37.387459){
printf ("Erreur Test latDMStoDec. \n");
latDMStoDec("3723.2475");
exit(-1);
}
}
void test_latDMStoDec2(void)
{
if (latDMStoDec2("3723.2475")!= 37.387459){
printf ("Erreur Test latDMStoDec. \n");
latDMStoDec("3723.2475");
exit(-1);
}
}
//fonction convertissant la cha?ne de caract?re contenant la longitude en nombre flottant
//on effectue le m?me raisonnement sauf que lon_DMS est sous la forme 00306.6036 c'est-?-dire un charact?re de plus que lat_DMS
float lonDMStoDec(char * lon_DMS)
......
return lonDec;
}
long lonDMStoDec2(char * lon_DMS)
{
long deg = decode_nombre(lon_DMS,3)*10000;
long min = (100000*decode_int(lon_DMS[3])*10)+(10000*decode_int(lon_DMS[4]))+(1000*decode_int(lon_DMS[6]))+(100*decode_int(lon_DMS[7]))+(10*decode_int(lon_DMS[8]))+decode_int(lon_DMS[9]);
long lonDec = deg*60+min;
return lonDec;
}
//test unitaire permettant de voir si lonDMStoDec fonctionne (il peut y avoir une erreur de pr?cision)
void test_lonDMStoDec(void)
{
if (latDMStoDec("00306.6036")!= 3.11006){
printf ("Erreur Test latDMStoDec. %f\n",latDMStoDec("00306.6036"));
printf ("Erreur Test latDMStoDec.\n");
exit(-1);
}
}
void test_lonDMStoDec2(void)
{
if (latDMStoDec2("00306.6036")!= 3.11006){
printf ("Erreur Test latDMStoDec.\n");
exit(-1);
}
}
//on rassemble les deux derni?res fonctions pour n'en faire qu'une seule
float lontlatDMStoDec(char * coord)
{
......
{
if(trame_cmp(trame,"GPGGA")==1)//si la trame commence par les 5 premiers caract?res que l'on souhaite
{
//d?finition des variable
char *lon;
char *lat;
char lat[8];
char lon[9];
int i;
for(i=0;i<=7;i++){
lat[i]=trame[i+17];
......
for(i=0;i<=8;i++){
lon[i]=trame[i+29];
}
p->latitude = latDMStoDec(*lat);//on "traduit" la latitude de char ? flottant pour pouvoir les utiliser
p->longitude = lonDMStoDec(*lon);// on fait de m?me avec la longitude
p->longitude = lonDMStoDec(lon);// on fait de m?me avec la longitude
p->latitude = latDMStoDec(lat);//on "traduit" la latitude de char ? flottant pour pouvoir les utiliser
if((p->latitude>=0)&&(p->latitude<=90)){
if((p->longitude>=0)&&(p->longitude<=180))//v?rification dut format de la longitude et de la latitude
{
......
}
//petite fonction permettant de transform? les degr?s en radiant
//petite fonction permettant de transform? les degr?s en radian
float deg2rad(deg)
{
return deg * (M_PI/180);
......
test_decode_int();
test_latDMStoDec();
test_lonDMStoDec();
test_latDMStoDec2();
test_lonDMStoDec2();
test_decode_nombre2();
test_decode_trame();
}

Formats disponibles : Unified diff