Révision 329
Ajouté par Yaye Oumy NDONG il y a presque 3 ans
branch/Ndong_Yaye_Oumy/sp4a12/main.c | ||
---|---|---|
"$GPZDA,141914.00,01,02,2006,00,00*69",
|
||
0};
|
||
|
||
|
||
typedef struct {
|
||
float latitude;
|
||
float longitude;
|
||
}Position ;
|
||
|
||
|
||
int trame_cmp(char* trame,char *type){ // fonction qui renvoie 1 si la trame commence par la cha?ne de caract?re type et z?ro dans les autres cas
|
||
int i, ok =1 ;
|
||
for(i=0 ;i<=4 ;i=i+1){
|
||
... | ... | |
}
|
||
|
||
|
||
|
||
int decode_nombre (char *ch,int n){ // fonction qui renvoie qui renvoie la valeur d?cimale des n premiers caract?res de la cha?ne ch
|
||
|
||
int i,s=0;
|
||
... | ... | |
return s;
|
||
}
|
||
|
||
|
||
float conv_lat_flottant(char * ch) { // fonction qui convertit les latitudes en flottant
|
||
float latitude;
|
||
int val_degree,valEnt_min,valDec_min;
|
||
... | ... | |
return latitude;
|
||
}
|
||
|
||
|
||
float conv_long_flottant(char * ch) { //e fonction convertissant la cha?ne de caract?re contenant la longitude en nombre flottant et son test unitaire.
|
||
float longitude;
|
||
int val_degree,valEnt_min,valDec_min;
|
||
... | ... | |
return longitude;
|
||
}
|
||
|
||
|
||
float conv_sexa_flottant(char * ch){ // Qui d?code indiff?remment une latitude ou une longitude.
|
||
float coordonnee;
|
||
if (ch[4]!='.'){ // si la chaine contient 5 caract?res avant le point on consid?re que c'est une longitude
|
||
... | ... | |
}
|
||
return coordonnee;
|
||
}
|
||
|
||
|
||
int decode_trame(char* t, Position* p){
|
||
int a,i;
|
||
char copie_lat[9];
|
||
char copie_long[10];
|
||
a=trame_cmp(t,"GPGGA");
|
||
if(a==1)
|
||
{
|
||
for(i=0;i<9;++i)
|
||
{
|
||
copie_lat[i]=t[27+i];
|
||
}
|
||
(*p).latitude= conv_lat_flottant(copie_lat);
|
||
for(i=0;i<10;++i)
|
||
{
|
||
copie_long[i]=t[29+i];
|
||
}
|
||
(*p).longitude=conv_long_flottant(copie_long);
|
||
}else{
|
||
exit(-1);
|
||
}
|
||
return a; if(decode_nombre("5145",2)!=51){ //test decode_nombre
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
if(decode_nombre("1234",2)!=12){
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
}
|
||
|
||
|
||
//Fonction ? modifier !!!!!
|
||
void traitement(char * trame)
|
||
{
|
||
|
||
static int cpt=0;
|
||
cpt++;
|
||
}
|
||
|
||
//Ajouter vos tests unitaires dans cette fonction.
|
||
void tests_unitaires(void){
|
||
Position a={0.0,0.0}; // on initialise 2 struxtrures afin d'effecuer les test unitaires de decode_trame
|
||
Position b={0.0,0.0};
|
||
Position* p;
|
||
Position* p2; // pour tester decode_trame
|
||
p=&a; // on affecte ? chache pointeur l'adresse d'une stru
|
||
p2=&b;
|
||
|
||
if (5!=5){
|
||
printf ("Erreur Test unitaire basique.\n");
|
||
exit(-1);
|
||
exit(-1);printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
|
||
}
|
||
if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1)
|
||
... | ... | |
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
if(decode_int('0')!=0){
|
||
if(decode_int('0')!=0){ //tests decode_int
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
... | ... | |
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
if(decode_nombre("5145",2)!=51){
|
||
if(decode_nombre("5145",2)!=51){ //test decode_nombre
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
... | ... | |
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
if(conv_lat_flottant("3723.2475")-37.387458>0.0001){ // prise en compte de l'erreur sur la pr?cision
|
||
if(conv_lat_flottant("3723.2475")-37.387458>0.0001){ // test de la fonction de conversion d'une latitude en flottant/ prise en compte de l'erreur sur la pr?cision
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
if(conv_long_flottant("00306.6036")-3.11006>0.0001){ // prise en compte de l'erreur sur la pr?cision
|
||
if(conv_long_flottant("00306.6036")-3.11006>0.0001){ // test de la fonction de conversion d'une longitude en flottant/prise en compte de l'erreur sur la pr?cision
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
if(conv_sexa_flottant("3723.2475")-37.387458>0.0001){ // prise en compte de l'erreur sur la pr?cision
|
||
if(conv_sexa_flottant("3723.2475")-37.387458>0.0001){ // test de la fonction de conversion d'une coordonn?e sexag?simale en flottant/prise en compte de l'erreur sur la pr?cision
|
||
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
} if(conv_lat_flottant("4557.5679")-45.959465>0.0001){ // prise en compte de l'erreur sur la pr?cision
|
||
... | ... | |
printf ("Erreur Test unitaire trame_cmp.\n");
|
||
exit(-1);
|
||
}
|
||
if(decode_trame("$GPGGA,141915.00,4545.0242,N,00306.6039,E,1,05,3.4,499.5,M,,M,,*72",p2)==0){ // test pour voir si la comparaison marche(trame valide ou non)
|
||
printf ("Erreur Test unitaire decode_trame.\n");
|
||
exit(-1);
|
||
}
|
||
decode_trame("$GPGGA,141915.00,3723.2475,N,00306.6036,E,1,05,3.4,499.5,M,,M,,*72",p);
|
||
if((*p).longitude-3.11006>0.0001)
|
||
{
|
||
printf ("Erreur Test unitaire decode_trame.\n"); ////test pour voir si le calcul de la longitude extraite de la trame est bon
|
||
exit(-1);
|
||
}
|
||
if((*p).latitude-37.387458>0.0001) //test pour voir si le calcul de la latitude extraite de la trame est bon
|
||
{
|
||
printf ("Erreur Test unitaire decode_trame.\n");
|
||
exit(-1);
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
// Ne pas modifier cette fonction
|
||
int main(int argc,char ** argv)
|
Formats disponibles : Unified diff
implantation de la fonction decode_trame et de ses tests unitaires