Projet

Général

Profil

« Précédent | Suivant » 

Révision 639

Ajouté par annoyau il y a presque 4 ans

Fonction calcul_vitesse + utilisation de ma structure position pour toutes mes fonctions

Voir les différences:

branch/NOYAU/sp4a12/main.c
char lat[11];
char lon[12];
}p_tab;
typedef struct p_long
typedef struct p_vfixe
{
long lat;
long lon;
}p_long;
}p_vfixe;
//Trames de tests ? modifier si n?cessaire.
char * trames[]= {"$GPGSV,3,2,10,15,03,077,,18,04,041,42,19,85,271,,20,08,214,*7C",
"$GPGSV,3,3,10,22,39,053,50,28,15,320,*7E",
......
}
int Conversion_sexagesimale(int nb_sexa)
{
float result=0 ;
int degres=0,result_min=0;
int stock=0;
int result_vf=0;
......
degres=stock/1000000;
result_min=(stock-(degres*1000000));
result=(degres+(result_min/60));
/* 1/10000 de minute => K = 1.666*10^-6 pour passer en degr?s
K_rad = 1.666*10^-6 * Pi/180 */
result_vf = (degres*600000)+(result_min);
......
cpt++ ;
p_tab p1;
int i,j,i2;
char tab_lat[11];
char tab_lon[12];
int resultat_l;
int resultat_L;
int conversion_L;
int conversion_l;
long stockage_lat[2];
long stockage_lon[2];
float distance=0;
double distance1=0;
int i1=0, j1=0;
long lat1 = 0, lat2 = 0, lon1 = 0, lon2 = 0;
p_vfixe p2;
if (trame_cmp(trame,"GPGGA")==1) {
printf ("> %s\n",trame);
decode_trame(&p1,trame);
resultat_L = decode_nombre(&p1.lat);
resultat_l = decode_nombre(&p1.lon);
p2.lat = decode_nombre(&p1.lat);
p2.lon = decode_nombre(&p1.lon);
/* printf("Latitude %ld\n",resultat_L);
printf("Longitude : %ld\n",resultat_l); */
conversion_L = Conversion_sexagesimale(resultat_L);
conversion_l = Conversion_sexagesimale(resultat_l);
printf("Latitude %ld\n",conversion_L);
printf("Longitude : %ld\n",conversion_l);
stock_lat_lon (conversion_L, conversion_l);
p2.lat = Conversion_sexagesimale(p2.lat);
p2.lon = Conversion_sexagesimale(p2.lon);
printf("Latitude %ld\n",p2.lat);
printf("Longitude : %ld\n",p2.lon);
stock_lat_lon (p2.lat, p2.lon);
}
}
......
}
void stock_lon(long lon_R, long * stock_l)
void calcul_distance (long lat1, long lat2, long lon1, long lon2)
{
long delta_lat = lat1 - lat2;
long deltat_lon = lon1 - lon2;
long distance = sqrt(pow(delta_lat,2)+ pow(deltat_lon,2));
calcul_vitesse(distance);
if ((lon_R != stock_l[0]))
{
}
stock_l[0] = lon_R;
printf("bite :%ld\n",stock_l[0]);
printf("Test_dist : %ld\n",distance);
}
void calcul_distance (long lat1, long lat2, long lon1, long lon2)
void calcul_vitesse (long distance)
{
long delta_lat = lat1 - lat2;
long deltat_lon = lon1 - lon2;
int distance = sqrt(pow(delta_lat,2)+ pow(deltat_lon,2));
printf("Test_dist : %d\n",distance);
long vitesse = 0;
// Coef en radiant : 1.85*10^-4
vitesse = distance*0.18522;
vitesse = vitesse*3.6;
printf("Test_vit : %ld \n",vitesse);
}
void decode_trame(p_tab *p1, char *trame)
{

Formats disponibles : Unified diff