Projet

Général

Profil

« Précédent | Suivant » 

Révision 460

Ajouté par yoguer il y a presque 4 ans

Fonction vitesse

Voir les différences:

main.c
#include <strings.h>
#include "trame.h"
#include <math.h>
int tab_memoirelatlong[2];
//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",
......
}
unsigned long int conversion_sexa(char *latitude_longitude)
int conversion_sexa(char *latitude_longitude)
{
float reste,resultat;
unsigned long int resultVF=0;
int resultVF=0;
int tram=decode_nombre(latitude_longitude,12);
......
}
void traitement_trame(char *trame)
void traitement_trame(char *trame,int *platitude,int *plongitude)
{
char tab_latitude[13];
char tab_longitude[14];
char tab_latitude[13],tab_longitude[14];
int i,j;
unsigned long int latitude,longitude;
if (trame_cmp(trame,"GPGGA")==1)
{
for(i=0;i<11;i++)
{
tab_latitude[i]=trame[i+17];
}
latitude=conversion_sexa(tab_latitude);
*platitude=conversion_sexa(tab_latitude);
for(j=0;j<12;j++)
{
tab_longitude[j]=trame[j+29];
}
longitude=conversion_sexa(tab_longitude);
*plongitude=conversion_sexa(tab_longitude);
printf("latitude=%ld\n",latitude);
printf("longitude=%ld\n",longitude);
printf ("> %s\n",trame);
}
int calcul_vitesse(int *platitude,int *plongitude)
{
float vitesse,distance;
if((tab_memoirelatlong[0]!=*platitude) || (tab_memoirelatlong[1]!=*plongitude))
{
distance=sqrt((*platitude-tab_memoirelatlong[0])*(*platitude-tab_memoirelatlong[0])+(*plongitude-tab_memoirelatlong[1])*(*plongitude-tab_memoirelatlong[1]));
vitesse=distance*0.1852507138; //rayon de la terre * kradian=0.1852507138 (vitesse en m/s)
vitesse=vitesse*3.6; //vitesse en km/h, 3.6=3600s/1000m
printf("distance=%d\n",distance);
printf("vitesse=%d\n",vitesse);
printf("latitude=%d\n",*platitude);
printf("longitude=%d\n",*plongitude);
printf("memolat=%d\n",tab_memoirelatlong[0]);
printf("memolong=%d\n",tab_memoirelatlong[1]);
}
tab_memoirelatlong[0]=*platitude;
tab_memoirelatlong[1]=*plongitude;
}
......
static int cpt=0;
cpt++ ;
traitement_trame(trame);
int latitude, longitude;
int *platitude=&latitude,*plongitude=&longitude;
if (trame_cmp(trame,"GPGGA")==1)
{
traitement_trame(trame,platitude,plongitude);
calcul_vitesse(platitude,plongitude);
}
}
......
{
char *trame_latitude_longitude;
trame_latitude_longitude="35723.2475,W";
unsigned long int retour;
int retour;
retour=conversion_sexa(trame_latitude_longitude);
printf("retour=%ld",retour);
//printf("retour=%ld",retour);
}

Formats disponibles : Unified diff