Révision 410
Ajouté par Mafall FALL il y a presque 3 ans
main.c | ||
---|---|---|
#include <stdlib.h>
|
||
#include <math.h>
|
||
#include <strings.h>
|
||
#include "trame.h"
|
||
#include "trame.h"
|
||
#define Rayon 6378.1370
|
||
|
||
//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",
|
||
... | ... | |
"$GPVTG,99.4,T,,M,0.4,N,0.7,K*57",
|
||
"$GPZDA,141914.00,01,02,2006,00,00*69",
|
||
0};
|
||
// declaration d'un tableau de zones dangereuses
|
||
|
||
/* Zone zones[] = {
|
||
|
||
{{44.78887762, -3.012}, 50},
|
||
{{44.7891220, -3.013}, 70},
|
||
|
||
}; */
|
||
|
||
typedef struct // declaration du type position compos? de la latitude et la longitude
|
||
{
|
||
float latitude;
|
||
float longitude;
|
||
|
||
} position;
|
||
} position;
|
||
|
||
|
||
position test_pos;
|
||
//Fonction ? modifier !!!!!
|
||
void traitement(char * trame)
|
||
{
|
||
static int cpt=0;
|
||
/*static int cpt=0;
|
||
cpt++;
|
||
if (trame_cmp(trame,"$GPGGA"))
|
||
printf ("> %s\n",trames);
|
||
printf ("> %s\n",trames); */
|
||
|
||
position p;
|
||
if (decode_trame(trame,&p))
|
||
{
|
||
printf ("> %s\n",trame);
|
||
printf("la latitude est %f \n la longitude est %f \n ",p.latitude,p.longitude); // affichage des positions de chaque trame GPGGA
|
||
}
|
||
|
||
|
||
}
|
||
|
||
... | ... | |
{
|
||
val_sexa+= (decode_int(longi[i]))*pow(10,-i+4);// d?codage de la partie d?cimale
|
||
}
|
||
res_convers=(int)(val_sexa/1000);// on recueille les degr?s
|
||
res_convers=(int)(val_sexa/100);// on recueille les degr?s
|
||
res_convers= res_convers + (val_sexa - res_convers*100)/60;// conversion des minutes en degr? et ajout ? la somme
|
||
return res_convers;
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
float fonction_generique(char* ch) // fonction qui convertit la latitude ou la longitude en nombre flottant
|
||
{
|
||
float res_convers;
|
||
... | ... | |
|
||
|
||
|
||
int decode_trame(char* trame,position *pos)// fonction qui valide le bon format de la trame "GPGGA" et extrait la position (la latitude et la longitude en float)
|
||
|
||
int decode_trame(char* trame,position *pos)/*fonction qui valide le bon format de la trame "GPGGA" et extrait la position (la latitude et la longitude en float)
|
||
retourne 1 quand la trame est bonn etourne 0 quand la trame est ?rron?e et renseigne les champs de Position*/
|
||
{
|
||
char longi[10]; // tableau pour la longitude
|
||
char lati[9]; // tableau pour la latitude
|
||
... | ... | |
|
||
}
|
||
|
||
float calcul_distance(position* pos1,position* pos2) // fonction qui calcule la distance entre deux positions
|
||
{
|
||
float result= (40000/360) * sqrt(((pos2->latitude - pos1->latitude)*(pos2->latitude - pos1->latitude))+((pos2->longitude - pos1->longitude)*(pos2->longitude - pos1->longitude))) ;
|
||
return result;
|
||
|
||
|
||
}
|
||
|
||
float calcul_vitesse(position* pos1,position* pos2) // fonction qui calcule la vitesse entre deux positions
|
||
{
|
||
float vitesse;
|
||
vitesse=3600*(calcul_distance(&pos1,&pos2)); // calcul de la vitesse entre pos1 et pos2 pendant 1s
|
||
return vitesse;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//Ajouter vos tests unitaires dans cette fonction.
|
||
void tests_unitaires(void) {
|
Formats disponibles : Unified diff
calcul distance et vitesse