Révision 632
Ajouté par jcguifodjo il y a environ 4 ans
main.c | ||
---|---|---|
#include <strings.h>
|
||
#include "trame.h"
|
||
#include "math.h"
|
||
#define k 0.017453292519943
|
||
#define k 111120
|
||
#define N 200
|
||
#define rads 0.01745329252
|
||
|
||
//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",
|
||
... | ... | |
"$GPGSA,A,3,,03,,22,14,,01,,18,,,,3.9,3.4,1.9*39",
|
||
"$GPVTG,99.4,T,,M,0.4,N,0.7,K*57",
|
||
"$GPZDA,141914.00,01,02,2006,00,00*69",
|
||
0};
|
||
0};
|
||
|
||
typedef struct {
|
||
float latitude;
|
||
float longitude;
|
||
... | ... | |
for(i=0;i<n;i++){
|
||
valeur+=decode_int(c[i])*pow(10,n-1-i);
|
||
}
|
||
|
||
return valeur;
|
||
}
|
||
//Conversion de la latitude et longitude en degree floatant
|
||
float conversion(char *c)
|
||
... | ... | |
p.latitude=-p.latitude;
|
||
}
|
||
|
||
if(indx_lat[0]=='W'){
|
||
if(indx_lon[0]=='W'){
|
||
p.longitude=-p.longitude;
|
||
}
|
||
}
|
||
}
|
||
else{
|
||
d=0;
|
||
|
||
}
|
||
return d;
|
||
}
|
||
|
||
|
||
//Fonction qui calcule la distance entre deux positions
|
||
float calcul_distance(Position p1,Position p2){
|
||
float x,a,y,z,distance,b;
|
||
a=(p2.longitude-p1.longitude);
|
||
b=(p1.latitude+p2.latitude)/2;
|
||
x=a*cos(b*rads);
|
||
y=p2.latitude-p1.latitude;
|
||
z=sqrt((x*x)+(y*y));
|
||
distance=k*z;
|
||
return distance;
|
||
|
||
}
|
||
|
||
//Fonction qui calcule la vitesse du vehicule par seconde
|
||
/*float calcule_vitesse(Position p1, Position p2){
|
||
|
||
float distance,vitesse;
|
||
distance=calcul_distance(Position p1, Position p2);
|
||
vitesse=3.6*distance;
|
||
return vitesse;*
|
||
|
||
}*/
|
||
//Fonction ? modifier !!!!!
|
||
void traitement(char * trame)
|
||
{
|
||
int d;
|
||
static int cpt=0 ;
|
||
cpt++ ;
|
||
if (trame_cmp(trame,"GPGGA")==1)
|
||
{
|
||
printf ("> %s\n",trame);
|
||
d=decode_trame(trame,Position p);
|
||
printf ("d= %d",d);
|
||
|
||
}
|
||
|
||
}
|
||
... | ... | |
printf ("Erreur Test unitaire basique decode nombre.\n");
|
||
exit(-1);
|
||
}
|
||
if (decode_nombre("632",2)!=63){
|
||
if (decode_nombre("400",2)!=40){
|
||
printf ("Erreur Test unitaire basique decode nombre.\n");
|
||
exit(-1);
|
||
}
|
Formats disponibles : Unified diff
Implémentation de la fonction calcul vitesse
Et implémentation de la matrice observation du filtre de Kalman