Révision 639
Ajouté par annoyau il y a presque 4 ans
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
Fonction calcul_vitesse + utilisation de ma structure position pour toutes mes fonctions