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 :

Ouverture d'un port COM - Récupération de trames GPS encodées via un récepteur GPS


Sujet :

Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Ouverture d'un port COM - Récupération de trames GPS encodées via un récepteur GPS
    Bonjour à tous !

    J'ai un recepteur GPS qui m'envois des trames NMEA. J'utilise le logiciel PuTTY afin de visualiser ces dernières :



    Mon code JAVA permet de récupérer les trames reçues par le récepteur GPS et les affiches en console. Mais voilà que je me retrouve avec ce genre de trame :



    Voici mon code :
    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
    public class GPSFrame extends Observable implements Runnable
    {
        static Thread myThread=null;
        static BufferedReader br;
        static BufferedWriter wr;
        static PrintWriter out;
        static InputStreamReader isr;
        static OutputStreamWriter osw;
        static java.io.RandomAccessFile port; 
     
     
        /**  CONSTRUCTOR **/
        public  GPSFrame()
        {    
             myThread=new Thread(this);
        }
     
        public void start()
        {
            try 
            {
                port=new java.io.RandomAccessFile("COM5","rwd");
                port.writeBytes("\r\n");
                port.writeBytes("c,31,0,0,5\r\n");
                port.writeBytes("T,1000,1\r\n");
            }
            catch (Exception e){ System.out.println("start "+e.toString()); }
            // The thread start automatically run() method
            myThread.start();
        }
     
    /**********************************************************************************************
     *************************** RETRIEVE GPS FRAMES AND SEND TO SERVEUR **************************
     **********************************************************************************************/
        public void run() 
        {
            System.out.println("lecture COM...");
            // INFINIT LOOP - GPSFrame is always listening for the GPS receptor
            for(;;)
            {
                String st = null;
                try 
                {
                    st=port.readLine();
                    String[]gpsframe=st.split(",");
     
                    /* IMPORTANT - DON'T FORGET SETCHANGED() or GPSFrame'll never
                     * notify UPDATE() ServerBoard method - We'll never see any changes */
                    setChanged();
                    notifyObservers(st);
     
                } 
                catch (IOException e){ System.out.println(e.getMessage()); }
                // Show in console
                System.out.println(st);
            }
        }   
    }

    Petite note : Lorsque je lance mon application SANS avoir lancé PuTTY une première fois avant, je tombe sur des trames encodées. Si j'ai déjà lancé PuTTY une première fois avant mon application, les trames reçues sont correctes.

    Quelqu'un aurait une idée sur la provenance de ce "bug" ?

    Je vous remercie par avance pour vos réponses !

    Cordialement,

    Tofuw

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Ca se comporte pareil en changeant le baud rate ? (1000 c'est étrange en effet).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Ca se comporte pareil en changeant le baud rate ? (1000 c'est étrange en effet).
    Bonjour, merci pour la réponse.

    Je crois que sur le forum précédent, j'ai mal compris la question. Le Baud Rate est bien la vitesse de transmission des trames ?

    Sinon, pourriez vous me dire comment je dois m'y prendre pour modifier le baud rate ?

    Merci

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Bah au lieu de mettre 1000 tu mets un autre chiffres ^^ (en general ca va par tranche genre 1200,2400,4800,9600, etc ... comme au bon vieux temps du port com)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Suis je bête ! En fait, dans PuTTY, le Baud est de 115200.

    Sinon, je souhaitais savoir comment modifier cette valeur en programmation Java ?

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Ha ben j'ai naivement cru (a la lecture de ton lien) que c'était dut a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             port.writeBytes("T,1000,1\r\n");
    mais a mon avis je me suis trompé sans doute.

    Et comme je n'y connais rien en port série et java, j'ai cherché un peu sur developpez et j'ai trouvé ceci : http://christophej.developpez.com/tu...vacomm/#L2.3.1
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour les réponses !
    Dès que j'aurai résolu le problème, je n'hésiterai pas à vous poster la solution (si j'arrive à la trouver)...

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bonjour à tous,

    J'aurais encore une petite question concernant le code.
    Je ne comprend pas ces quelques lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try 
            {
                port=new java.io.RandomAccessFile("COM5","rwd");
                port.writeBytes("\r\n");
                port.writeBytes("c,31,0,0,5\r\n");
                port.writeBytes("T,1000,1\r\n");
            }
    A quoi sert le T, le c et les autres chiffres mis en paramètre dans writeBytes ?

    Si j'ai bien compris, on envoit des données au recepteur GPS ?


    Je vous remercie par avance de vos réponses !

    Bonne journée !

  9. #9
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Bonjour,


    Ça ne se configure pas au hasard.

    Déjà regarder du coté de l'appareil à quel baud ça fonctionne.

    Ensuite tout ne se résume pas un simple flux d'échange, lire la doc et se servir des API fournit par le GPS.


    Cordialement,
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Résolution du problème
    Bonjour à tous,

    Pour ceux qui rencontrerai un problème similaire, voici une solution :

    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
    public class GPSFrame extends Observable implements Runnable
    {
        static Thread myThread=null;
        static BufferedReader br;
        static BufferedWriter wr;
        static PrintWriter out;
        static InputStreamReader isr;
        static OutputStreamWriter osw;
        static java.io.RandomAccessFile port; 
     
     
        /**  CONSTRUCTOR **/
        public  GPSFrame()
        {    
             myThread=new Thread(this);
        }
     
        public void start()
        {
            try 
            {
                port=new java.io.RandomAccessFile("COM5","rwd");
                port.writeBytes("\r\n");
                port.writeBytes("c,31,0,0,5\r\n");
                port.writeBytes("T,1000,1\r\n");
            }
            catch (Exception e){ System.out.println("start "+e.toString()); }
            // The thread start automatically run() method
            myThread.start();
        }
     
    /**********************************************************************************************
     *************************** RETRIEVE GPS FRAMES AND SEND TO SERVEUR **************************
     **********************************************************************************************/
        public void run() 
        {
            System.out.println("lecture COM...");
            // INFINIT LOOP - GPSFrame is always listening for the GPS receptor
            for(;;)
            {
                String st = null;
                try 
                {
                    st=port.readLine();
                    String[]gpsframe=st.split(",");
     
                    /* IMPORTANT - DON'T FORGET SETCHANGED() or GPSFrame'll never
                     * notify UPDATE() ServerBoard method - We'll never see any changes */
                    setChanged();
                    notifyObservers(st);
     
                } 
                catch (IOException e){ System.out.println(e.getMessage()); }
                // Show in console
                System.out.println(st);
            }
        }   
    }

    Bonne journée à vous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'ouverture de port Com
    Par Fr33dom dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/08/2009, 14h22
  2. pb sur ouverture port com bluetooth
    Par fenderthrice dans le forum Visual C++
    Réponses: 12
    Dernier message: 17/07/2007, 10h41
  3. Récupération depuis port com
    Par vallgui dans le forum Composants
    Réponses: 4
    Dernier message: 08/03/2007, 13h44
  4. [C++, COM] Ouverture d'un port RS232 > 9
    Par fred777888999 dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/06/2006, 14h26
  5. ouverture port com
    Par finlande dans le forum C++
    Réponses: 2
    Dernier message: 06/05/2006, 21h32

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