begin process at 2012 05 28 19:58:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

decoupage de trame NMEA


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

decoupage de trame NMEA

vendredi 14 mars 2008 à 19:37:44 | decoupage de trame NMEA

max59000

Bonjours,
je souhaite decouper une trame MNEA du type:
$IIMWV,R,000.30,N,A<CR><LF>
$WIXDR,C,020.0,C,<CR><LF>
$IIVHW, , , , ,7.2,N, ,<CR><LF>
$IIMTW,9,C<CR><LF>

et pour cela j'ai fais cette fonction qui devrai decouper la trame separer par les virgules, les ranger dans un tableau pour ensuite mettre a jours une autre classes mais elle ne fonctionne pas pouriez vous m'aider svp.

voila ce que j'ai fais:
DecoderTrame();
{
 istringstream iss=Text;
 AnsiString mot[20];
 i=0;
 
 do
 {
  std::getline(iss,mot[i],',');
  i=i+1;
 }
 while (i!=15);

 switch(mot[0])
 {
  
  case '$IIMWV':
   if(mot[5]!="N<CR><LF>")
   {
    SetAngleVent(mot[1]);                // angle du vent en degré
    SetDirRelat(mot[2]);                 // direction relative par rapport au cv3f
    SetVitVent(mot[3]);       // vitesse du vent
    SetUnitVitVent(mot[4]);              //unité de la vitesse du vent (en noeud)
   }
   else
   break;
  
  case '$WIXDR':
   if(mot[5]="<CR><LF>")
   {
    
    SetTempAir(mot[2]);      // temperature de l'air
    SetUnitTempEau(mot[3]);             //identique a l'unite de temperature de l'air
    
   }
   else
   break; 

  case '$IIVHW':
   if(mot[8]="<CR><LF>")
   {
    
    SetVitVent(mot[5]);      //vitesse du vent
    SetUnitVitVent(mot[6]);             //unité de vitesse du vent identique a celle de la vitesse du bateau
    
   }
   else
   break;

  case '$IIMTW' :
   if(mot[3]="C<CR><LF>")
   {
    
    SetTempEau(mot[1]);       //vitesse du vent
        
   }
   else
   break;
 }

samedi 15 mars 2008 à 00:03:48 | Re : decoupage de trame NMEA

juju12

avec un switch on ne peut utiliser que des entiers...
là tu compares des adresses mémoires et sûrement pas les chaîne donc ça ne peut pas marcher...
samedi 15 mars 2008 à 08:38:47 | Re : decoupage de trame NMEA

max59000

il faudrai donc que je fasse des "if"?? mais il y a aussi un probleme avec getline ...
merci
samedi 15 mars 2008 à 11:31:36 | Re : decoupage de trame NMEA

jfrancois

Fonction strcmp(chaîne1,chaîne2) pour comparer 2 chaînes de caractères, retourne 0 si les chaînes sont égales (stricmp() si la casse des caractères ne doit pas être prise en compte).

Ce qui peut donner :

DecoderTrame()
{
   // --- Séparer les mots de la phrase NMEA
   istringstream iss = Text;
   AnsiString mot[20];
   int i = 0;
   do
   {
      std::getline(iss,mot[i],',');
      ++i;
   }
   while (i != 15);


   // --- Traiter en fonction du premier mot
   if (strcmp(mot[0],"$IIMWV") == 0) // 1er mot = $IIMWV
   {
      if (strcmp(mot[5],"N\r\n") != 0) // 6ème mot != N<CR><LF>
      {
         SetAngleVent(mot[1]);   // angle du vent en degrés
         SetDirRelat(mot[2]);    // direction relative par rapport au cv3f
         SetVitVent(mot[3]);     // vitesse du vent
         SetUnitVitVent(mot[4]); // unité de la vitesse du vent (en noeud)
      }
   }
   else if (strcmp(mot[0],"$WIXDR") == 0) // 1er mot = $WIXDR
   {
      if (strcmp(mot[5],"\r\n") == 0) // 6ème mot = <CR><LF>
      {
         SetTempAir(mot[2]);     // température de l'air
         SetUnitTempEau(mot[3]); // identique à l'unité de température de l'air
      }
   }
   else if (strcmp(mot[0],"$IIVHW") == 0) // 1er mot = $IIVHW
   {
      if (strcmp(mot[8],"\r\n") == 0) // 9ème mot = <CR><LF>
      {
         SetVitVent(mot[5]);     // vitesse du vent
         SetUnitVitVent(mot[6]); // unité de vitesse du vent identique à celle de la vitesse du bateau
   
      }
   }
   else if (strcmp(mot[0],"$IIMTW") == 0) // 1er mot = $IIMTW
   {
      if (strcmp(mot[3],"C\r\n") == 0) // 4ème mot = C<CR><LF>
      {
         SetTempEau(mot[1]); // vitesse du vent
      }
   }
}

Jean-François



Cette discussion est classée dans : mot, case, trame, vitesse, vent


Répondre à ce message

Sujets en rapport avec ce message

Traiter Trame météo URGENT !!!!! [ par Ruben_Manu ] Bonjour à tout le monde !Je suis sur un projet informatique sur une station météo WMR928. Mon but est de traiter chaque trames envoyer par cette stati Lecture d'un fichier texte en C [ par toto000 ] Bonjour, j'ai un fichier texte avec un mot par ligne et je voudrai mettre ces mots dans un tableau de telle sorte que le premier mot soit dans la prem analyseur lexical en C [ par janyoura ] salut je suis chargée de faire un analyseur lexical développé en langage C, j'arrive pas à faire un plan pour mon travail, les principaux structures exercice d'algo [ par Mjblue ] int chainehsrd( int i; int N; char Mot=''; char Mot[255]; int E=97; char L=(char)E) { for (i=0; i< char Mot[255]-1; i++) randomize [ par niconico ] salut à tous, je débute en C++ et j'utilise VC++ pour compiler mes prog :le prob :avec ce petit programe (plus bas)il me sort 2 erreurs :error C2065: Qui veut gagné 50Frs!!!!!!!!!!!!!! [ par Akil ] Bonjour à tousJe cherche quelqu'un qui sait bien programmer en langage C++ et Vb.J'ai un projet d'éditeur de texte Farsi (Righttoleft)en C++ et je vou crypter un mot de passe et créer un répertoire [ par Vinsou ] salut,je cherchais une focntion qui permetrai de crypter un mot de passe sous linux pour pouvoir l'ajouter dans /etc/passw (dans un script bien sûr).O Palindrome et espaces [ par TheRecliner ] Bonjour,je dois faire petit programme qui détécte si un phrase est un plaindrome ou non....j'ai bien résussi à faire cette détection mais uniquement p Diminuer la vitesse du fade_out avec DJGPP & Allegro [ par GoldenEye ] Qui peut me dire comment on fait pour ralentirla vitesse de fade_out ou de fade_in avec Allegro ?J'ai beau mettre le paramètre de speed au minimumc'es


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales