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

Signaler
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016
-
Messages postés
15063
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 juin 2021
-
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.

5 réponses

Messages postés
15063
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 juin 2021
95
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é...
Messages postés
15063
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 juin 2021
95
Cool!
Reviens quand tu veux ;)
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016

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 ?
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016

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
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016

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...