IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Comment décomposer un trame NMEA?


Sujet :

Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut Comment décomposer un trame NMEA?
    Bonjour à tous, voilà je bosse sur un projet personnel de GPS et je souhaiteré décomposé une trame NMEA : @eq,064036.289,4836.5375,N,00740.9373,E,1,04,3.2,200.2,M,,,,0000*0E

    Le problème est que je ne sais pas par ou m'y prendre, je doit récupérer, la longitude, la latitude et la position horaire afin de réaliser mes calculs, en ce qui concerne la récupération de trame je n'ai aucun problème cependant je ne sais pas comment m'y prendre pour décomposé cette trame, ma fonction gettrame();
    retourne la trame ci dessus, La longitude la latitude et l'horaire sont de type String, voici les méthodes de ma classe PositionGPS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      String getlongitude() {
     
            return longitude;//retourne la longitude de type String
        } 
     String getlatitude() {
           return latitude;
        }
      String gethoraire() {
            return horaire;
        }
    Voici une méthode de ma classe PositionGPS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
        public void transferertrame(String a){
     
         try
            {
     
                tr=gps.Gettrame();
                if(tr!=null)
                {
                    System.out.println("trame récupérée : " + tr );
     
                }
                else
                    System.out.println("aucune trame");
     
            }
            catch(Exception e)
            {
     
            }
                //horaire
                horaire = tr.substring(12,20);
                System.out.println("heure:" + horaire);
     
               //Latitude
                latitude = tr.substring(21,33);
                System.out.println("latitude:" + latitude);
     
               //Longitude
                longitude = tr.substring(34,47); 
               System.out.println("longitude:" + longitude);
     
        }
    Pourriez vous m'aider s'il vous plait?
    Si possible avec une explication pour que je puisse mieu comprendre, merci
    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut
    J'ai finalement résolu mon problème. merci tout de même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
     class PositionGPS {
        private PositionGPS util;  
        private SerialGPS gps;
        private String longitude;
        private String latitude;
        private String horaire;
        private String tr;
     
        public PositionGPS()
        {
            util =  new PositionGPS();
     
            gps = new SerialGPS(util);
            tr=gps.Gettrame();
        }
     
        public void setGPS(SerialGPS gps)
        {
            this.gps = gps  ;
        }
      public Position recupererPos() {
          Position pos = new Position();
          pos.stockerPos(gethor(), getlongi(), getlat());
          return pos;
      }
     
        String gethoraire() {
            horaire = tr.substring(12,20);
            return horaire;
        }
     
        float gethor(){
            //Récupérer l'horaire
            gethoraire();
            //Convertion du string horaire en float
            float h = Float.parseFloat(horaire);
     
            return h;
        }
     
     
        String getlatitude() {
            latitude = tr.substring(21,33);
            return latitude;
        }
     
        float getlat(){
            //Récupérer la latitude
            getlatitude();
            //Convertion du String latitude en float
            float lt = Float.parseFloat(latitude);
            return lt;
        }
     
        String getlongitude() {
            longitude = tr.substring(34,47); 
            return longitude;
        }
     
        float getlongi(){
            //Récupérer la longitude
            getlongitude();
            //Convertion du String longitude en float
            float lg = Float.parseFloat(longitude);
            System.out.println(lg);
            return lg;
        }
     
     
        public void transferertrame(String a){
     
         try
            {
     
                //tr=gps.Gettrame();
                if(tr!=null)
                {
                    System.out.println("la trame finale est maintenant : " + tr );
     
     
                }
                else
                    System.out.println("aucune trame");
     
            }
            catch(Exception e)
            {
     
            }
     
     
     
                horaire = tr.substring(12,20);
                System.out.println("heure:" + horaire);
     
     
                //Latitude
                latitude = tr.substring(21,33);
                System.out.println("latitude:" + latitude);
     
               //Longitude
                longitude = tr.substring(34,47); 
               System.out.println("longitude:" + longitude);
               System.out.println("");
     
     
     
        }
    }

  3. #3
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, j'ai déja eu l'occasion de faire un décodeur de trames NMEA et plutôt que d'utiliser substring, j'avais utilisé la méthode de String split(",").
    Il y a plusieurs types de trames NMEA (la plus courante est la trame GPGGA), et elles n'ont pas toutes le même nombre d'information, ni la même longueur.

    En plus la méthode split te permettra d'utiliser directement ta trame avec les indices du tableau renvoyé, sans faire de substring à chaque fois. (attention, il faut tester si un champ est vide -> "")

    Voila un lien qui poura peut-être t'aider. http://aprs.gids.nl/nmea/#gga

Discussions similaires

  1. récupérer données GPS (trames NMEA) sur PDA
    Par duguek dans le forum C++
    Réponses: 2
    Dernier message: 14/02/2007, 16h57
  2. Réponses: 21
    Dernier message: 10/08/2006, 16h10
  3. Réponses: 3
    Dernier message: 18/07/2006, 13h37
  4. Réponses: 2
    Dernier message: 13/07/2006, 09h21
  5. Comment reconnaître une trame Profibus ?
    Par hasna45 dans le forum Développement
    Réponses: 4
    Dernier message: 25/10/2004, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo