Gwillherm
Messages postés24Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention22 février 2006
-
26 janv. 2006 à 13:25
Gwillherm
Messages postés24Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention22 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());
}
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20117 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 !");
}
Gwillherm
Messages postés24Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention22 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
Messages postés24Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention22 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é.