Révision 464
Ajouté par annoyau il y a presque 4 ans
main.c | ||
---|---|---|
#include <strings.h>
|
||
#include "trame.h"
|
||
#include <math.h>
|
||
|
||
int memo_L;
|
||
int memo_l;
|
||
//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)
|
||
{
|
||
int result=0, result_min=0;
|
||
float result=0, result_min=0;
|
||
int degres=0;
|
||
int stock=0;
|
||
int result_vf=0;
|
||
|
||
stock = nb_sexa;
|
||
degres=stock/1000000;
|
||
result_min=(stock-(degres*1000000));
|
||
result_min = (result_min/10000);
|
||
|
||
degres=nb_sexa/1000000;
|
||
result_min=(nb_sexa-(degres*1000000));
|
||
|
||
result=(degres+(result_min/60));
|
||
|
||
|
||
... | ... | |
int i,j,i2;
|
||
char tab_lat[11];
|
||
char tab_lon[12];
|
||
long resultat_l;
|
||
long resultat_L;
|
||
long conversion_L;
|
||
long conversion_l;
|
||
int resultat_l;
|
||
int resultat_L;
|
||
int conversion_L;
|
||
int conversion_l;
|
||
long stockage_lat[2];
|
||
long stockage_lon[2];
|
||
float distance=0;
|
||
float distance=0;
|
||
double distance1=0;
|
||
int i1=0, j1=0;
|
||
long lat1 = 0, lat2 = 0, lon1 = 0, lon2 = 0;
|
||
... | ... | |
conversion_l = Conversion_sexagesimale(resultat_l);
|
||
printf("Latitude %ld\n",conversion_L);
|
||
printf("Longitude : %ld\n",conversion_l);
|
||
stock_lat (conversion_L, &stockage_lat);
|
||
stock_lon (conversion_l, &stockage_lon);
|
||
if (stockage_lat[0]>stockage_lat[1])
|
||
{
|
||
lat1 = stockage_lat[1];
|
||
lat2 = stockage_lat[0];
|
||
lon1 = stockage_lon[1];
|
||
lon2 = stockage_lon[0];
|
||
distance = calcul_distance(&lat1,&lat2,&lon1,&lon2);
|
||
printf("La distance est : %f\n",distance);
|
||
stock_lat_lon (conversion_L, conversion_l);
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
void stock_lat (long lat_R, long * stock_L)
|
||
void stock_lat_lon (long lat_R, long lon_R)
|
||
{
|
||
if ((lat_R != stock_L[0]))
|
||
if ((lat_R != memo_L) || (lon_R != memo_l))
|
||
{
|
||
stock_L[1] = stock_L[0];
|
||
stock_L[0] = lat_R;
|
||
calcul_distance(lat_R,memo_L,lon_R,memo_l);
|
||
printf("bite2 :%ld\n",memo_L);
|
||
printf("bite1 :%ld\n",memo_l);
|
||
}
|
||
printf("bite :%ld\n",stock_L[1]);
|
||
memo_L = lat_R;
|
||
memo_l = lon_R;
|
||
|
||
}
|
||
|
||
|
||
... | ... | |
|
||
if ((lon_R != stock_l[0]))
|
||
{
|
||
stock_l[1] = stock_l[0];
|
||
stock_l[0] = lon_R;
|
||
|
||
}
|
||
|
||
stock_l[0] = lon_R;
|
||
printf("bite :%ld\n",stock_l[0]);
|
||
}
|
||
void calcul_distance (long * lat1, long * lat2, long * lon1, long * lon2)
|
||
void calcul_distance (long lat1, long lat2, long lon1, long lon2)
|
||
{
|
||
long delta_lat = lat1 - lat2;
|
||
long deltat_lon = lon1 - lon2;
|
||
float distance = sqrt(pow(delta_lat,2)+ pow(deltat_lon,2));
|
||
int distance = sqrt(pow(delta_lat,2)+ pow(deltat_lon,2));
|
||
|
||
printf("SAlope : %lf\n",distance);
|
||
printf("SAlope : %d\n",distance);
|
||
}
|
||
void decode_trame(char * tab_lat, char * tab_lon, char *trame)
|
||
{
|
Formats disponibles : Unified diff
Calcul de la distance en virgule fixe