Problème avec CommPortIdentifier.getPortIdentifiers [Résolu]

PWM63 127 Messages postés lundi 11 octobre 2004Date d'inscription 18 mai 2016 Dernière intervention - 18 déc. 2013 à 18:21 - Dernière réponse : BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention
- 19 déc. 2013 à 09:36
Bonjour,

Je commence à peine avec Java ET avec NetBeans. (j'ai l'habitude de programmer en VB .Net)
Je suis sous Windows 7.

Je viens de créer 1 nouveau projet qui affiche 1 fenêtre avec du code qui s'exécute comme il faut.

Cependant, lorsque le code arrive sur la ligne :
portEnum = CommPortIdentifier.getPortIdentifiers();
toute la suite est ignorée, comme si j'avais 1 erreur, mais sauf qu'il n'y a pas d'erreur d'affichée...
Je vous mets le code concerné (dans le formulaire, j'ai mis 1 texbox de test (jTextArea1) pour suivre où j'en suis dans le code, et 1 combobox (jComboBox_Port) censé lister mes ports)

import gnu.io.CommPortIdentifier;



    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton_Ouvrir;
    private javax.swing.JComboBox jComboBox_Port;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    // End of variables declaration                   
}



    private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        // TODO add your handling code here:
        liste_ports();

    }                                 


    public final void liste_ports() {

        // OK
        this.jComboBox_Port.removeAllItems();
        this.jTextArea1.append("jComboBox_Port.removeAllItems OK");
        this.jTextArea1.append("\n");

        // OK
        java.util.Enumeration<CommPortIdentifier> portEnum;
        this.jTextArea1.append("java.util.Enumeration<CommPortIdentifier> portEnum OK");
        this.jTextArea1.append("\n");

        try {
        // marche PAS... 
        //  ICI
            portEnum = CommPortIdentifier.getPortIdentifiers();

        // la ligne ci-dessous n'est pas exécutée 
        // car la ligne ci-dessus a stoppé mais sans aller dans le catch du try... :/
            this.jTextArea1.append("portEnum = CommPortIdentifier.getPortIdentifiers OK");
            this.jTextArea1.append("\n");
            this.jTextArea1.append("portEnum.toString = " + portEnum.toString());
            this.jTextArea1.append("\n");
            
            while (portEnum.hasMoreElements()) {
            
                CommPortIdentifier portIdentifier = portEnum.nextElement();
                this.jTextArea1.append(portIdentifier.getName());
                this.jTextArea1.append("\n");
                this.jTextArea1.append(getPortTypeName(portIdentifier.getPortType()));
                this.jTextArea1.append("\n");

                this.jComboBox_Port.addItem(portIdentifier.getName() + " - " + getPortTypeName(portIdentifier.getPortType()));

            }
            
        } catch (RuntimeException ex) {
        // la ligne ci-dessous n'est pas exécutée non plus...
            this.jTextArea1.append("ERREUR TRY");
            this.jTextArea1.append("\n");
            this.jTextArea1.append(ex.getMessage());
            this.jTextArea1.append("\n");

        }

    }


Quand j'exécute le code, la texbox n'affiche que :
jComboBox_Port.removeAllItems OK
java.util.Enumeration<CommPortIdentifier> portEnum OK

et n'affiche rien d'autre

je ne vois strictement aucune erreur qui s'affiche quand j'exécute le code, ni dans le programme...

PS : la librairie que j'ai ajouté via Libraries / Add library est RXTXcomm.jar

Merci de votre aide.
Afficher la suite 

5 réponses

Répondre au sujet
BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 18 déc. 2013 à 21:31
+1
Utile
Hello,

Si tu changes
catch (RuntimeException ex)
par
catch (Exception ex)
, tu sera plus générique et tu catchera toutes les erreurs.
Sauf erreur de ma part,
portEnum
ne semble pas déclaré...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BunoCS
BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 19 déc. 2013 à 09:36
+1
Utile
Cool!
Reviens quand tu veux ;)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de BunoCS
PWM63 127 Messages postés lundi 11 octobre 2004Date d'inscription 18 mai 2016 Dernière intervention - 19 déc. 2013 à 00:53
0
Utile
Merci Buno,

Je regarde ça demain matin pour le catch et je te tiens au courant.

Concernant la déclaration, je crois comprendre que c'est cette ligne :
  java.util.Enumeration<CommPortIdentifier> portEnum;

Non ?
Commenter la réponse de PWM63
PWM63 127 Messages postés lundi 11 octobre 2004Date d'inscription 18 mai 2016 Dernière intervention - Modifié par PWM63 le 19/12/2013 à 09:24
0
Utile
Bonjour Buno,

J'ai remplacé le catch par :
        } catch (Exception ex) {


Mais c'est toujours pareil... le code ne continue pas et ne vas pas dans le catch non plus....

ps : et l'appli n'est pas plantée, je peux cliquer par exemple sur la combobox et elle s'ouvre vide

Stéphane
Commenter la réponse de PWM63
PWM63 127 Messages postés lundi 11 octobre 2004Date d'inscription 18 mai 2016 Dernière intervention - 19 déc. 2013 à 09:34
0
Utile
Problème résolu !

En fait, la dll que j'avais mis était en 32 bits alors que je suis sur 1 système en 64 bits.

J'ai trouvé 1 autre endroit où récupérer les fichiers :
RXTXcomm.jar
rxtxSerial.dll

que j'ai rangé au bon endroit, et tout fonctionne comme il faut, j'ai mes ports dans ma combobox !

Merci Buno de t'être penché sur mon cas. Il est même fort probable que je revienne sur ce forum étant donné mon niveau Java...
Commenter la réponse de PWM63

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.