Programmation avec l'api javacomm

Gwillherm Messages postés 24 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 22 février 2006 - 26 janv. 2006 à 13:25
Gwillherm Messages postés 24 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 22 février 2006 - 27 janv. 2006 à 12:17
Bonjour, je suis en ce moment en train de tester l'API javacomm en vu de l'utiliser dans un futur projet perso.
Dans mon code de test je suis tombé sur un problème inatendu :

SerialPort port = null;
try{
port = (SerialPort)portId.open("SerialPortTest", 4000);
isPortAvailable = true;
}
catch(PortInUseException ex){
System.out.println("Port "+serialPort+" in use !");
}

//affichage des paramètres courants du port série
System.out.println("Paramètres courants du port "+serialPort+" .");
System.out.println("BaudRate : "+port.getBaudRate());
System.out.println("DataBits : "+port.getDataBits());
System.out.println("Flow Control Mode : "+port.getFlowControlMode());
System.out.println("Parity : "+port.getParity());
System.out.println("Stop bit : "+port.getStopBits());

si jamais la ligne en gras lève une exception PortInUseException, alors la ligne en rouge va elle aussi lever une exception mais de type NullPointerexception (ce qui est logique !!!).

Pour remédier à ce problème j'ai trouvé une sollution et comme mon expérience en java est "toute neuve" je voulais un avis sur cette solution :

SerialPort port = null;
boolean isPortAvailable;
try{
port = (SerialPort)portId.open("SerialPortTest", 4000);
isPortAvailable = true;
}
catch(PortInUseException ex){
System.out.println("Port "+serialPort+" in use !");
isPortAvailable = false;
}

//affichage des paramètres courants du port série
if (isPortAvailable) {
System.out.println("Paramètres courants du port "+serialPort+" .");
System.out.println("BaudRate : "+port.getBaudRate());
System.out.println("DataBits : "+port.getDataBits());
System.out.println("Flow Control Mode : "+port.getFlowControlMode());
System.out.println("Parity : "+port.getParity());
System.out.println("Stop bit : "+port.getStopBits());
}

... et ça fonctionne !!!

Gwillherm

4 réponses

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
26 janv. 2006 à 14:14
ce qui est pas logique c est que si t as une exception et que tu la catch tu devrai pas passer dans tes System.out.println(... a moins d avoir mis la clause finaly{
System.out.....
}

bref j comprend pas trop mais tu devraii plutot faire ce qu il y a en dessous c plus propre
try{
port = (SerialPort)portId.open("SerialPortTest", 4000);
isPortAvailable = true;
//affichage des paramètres courants du port série
System.out.println("Paramètres courants du port "+serialPort+" .");
System.out.println("BaudRate : "+port.getBaudRate());
System.out.println("DataBits : "+port.getDataBits());
System.out.println("Flow Control Mode : "+port.getFlowControlMode());
System.out.println("Parity : "+port.getParity());
System.out.println("Stop bit : "+port.getStopBits());
}
catch(PortInUseException ex){
System.out.println("Port "+serialPort+" in use !");
}

+++ Toinou
0
Gwillherm Messages postés 24 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 22 février 2006
27 janv. 2006 à 09:13
Ok, mais je pensais que ce n'était que les exceptions graves comme les Runtime qui stopaient l'exécution du programme...
parce qu'apparemment celle-ci ne l'arrête pas...

Gwillherm
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
27 janv. 2006 à 12:00
ouai c les exception grave style run time qui stopent l execution du pg par contre les autres exception doivent stopper l execution de ta méthode !!!
0
Gwillherm Messages postés 24 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 22 février 2006
27 janv. 2006 à 12:17
C'est ce qui se passe à mon avis, car lorsque port = (SerialPort)portId.open("SerialPortTest", 4000) génère une exception port est un pointeur Null, rien n'est retourné dedans la méthode open est arrêté.
0
Rejoignez-nous