Révision 309
Ajouté par Pape Demba AMAR il y a environ 3 ans
main.c | ||
---|---|---|
return 0;
|
||
}
|
||
|
||
//....................................SEANCE 2....................................................//
|
||
|
||
typedef struct { // Structure Position
|
||
float latitude;
|
||
float longitude;
|
||
} Position;
|
||
typedef struct { // Structure Zone
|
||
Position rpos;
|
||
float vitmax;
|
||
} Zone;
|
||
Zone zones[] = { //Pour nos tests on cree une zone.
|
||
{{44.7887762, -3.012}, 50}, // Description de la premiere zone
|
||
{{44.7891220, -3,013}, 70},
|
||
};
|
||
Position decode_trame(char * trame){ //On va decoder la trame et l'afficher
|
||
if (trame_cmp(trame, "GPGGA")!= 1){ //On regarde si on est au bon format.
|
||
printf("Cette trame n'est pas au bon format.");
|
||
}
|
||
else{ //Si c'est le cas on continue
|
||
//On definit notre structure
|
||
Position position_trame; //Initialisation.
|
||
char latitude[10];
|
||
char longitude[11];
|
||
int n = 0;
|
||
int i = 0;
|
||
int j = 0;
|
||
int k = 0;
|
||
while (trame[i] != '\0'){ //On veut r?cup?rer les diff?rentes informations suivant le mod?le pr?cis de trame.
|
||
if (trame[i] == ','){ //On rep?re les virgules
|
||
n = n + 1;
|
||
i = i + 1;
|
||
}
|
||
if (n == 2) { //Apr?s virgule 2 on a la latitude
|
||
latitude[j] = trame[i]; //On r?cup?re la latitude
|
||
j = j + 1;
|
||
}
|
||
if (n == 4) { //Apr?s virgule 4 on a la longitude
|
||
longitude[k] = trame[i]; //On stocke caract?re par caract?re pour isoler la longitude afin de la convertir.
|
||
k = k + 1;
|
||
}
|
||
i ++;
|
||
}
|
||
latitude[j] = '\0'; //On ferme bien la chaine
|
||
longitude[k] = '\0';
|
||
position_trame.latitude = conv_lattitude(latitude);
|
||
position_trame.longitude = conv_longitude(longitude); //On stocke la latitude et la longitude convertie dans structure position.
|
||
return position_trame;
|
||
}
|
||
}
|
||
float calcule_distance(Position position_trame1, Position position_trame2){
|
||
//On utilise la formule en connaissant le rayon de la terre.
|
||
float x = (position_trame2.longitude - position_trame1.longitude) * cos( (position_trame1.latitude + position_trame2.latitude) / 2);
|
||
float y = position_trame2.latitude - position_trame1.latitude;
|
||
float z = sqrt(x*x + y*y);
|
||
float k = 1.852 * 60;
|
||
float d = k * z;
|
||
return d;
|
||
}
|
Formats disponibles : Unified diff
implémentation de la fonction decode trame et test