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 14091 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 septembre 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 

Votre réponse

5 réponses

Meilleure réponse
BunoCS 14091 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 septembre 2018 Dernière intervention - 18 déc. 2013 à 21:31
1
Merci
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é...

Merci BunoCS 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de BunoCS
Meilleure réponse
BunoCS 14091 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 septembre 2018 Dernière intervention - 19 déc. 2013 à 09:36
1
Merci
Cool!
Reviens quand tu veux ;)

Merci BunoCS 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

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