Bonjour à tous,

j'ai réalisé un programme qui établit une communication avec le port Série (en utilisant l'API javax.comm).
cette communication effectue une écriture et une attente de réponse sur ce port.
tout tourne parfaitement bien en faisant tourner le soft sur windows (dans ce cas j'initialise un Wind32Driver avant d'ouvrir le port, mais je rencontre un probleme lorsque je porte ce code sur linux...

j'enlève bien entendu l'initialisation de cet objet Win32Driver et je remplace le nom du port par le /dev/tty correspondant, le port est bien trouvé à priori mais pendant l'ouverture j'ai l'erreur suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Exception in thread "Thread-29" java.io.IOException: Erro getting StatusFlags in call to ioctl(TIOCMGET)
        at com.sun.comm.LinuxSerial.nativeGetStatusFlags(Native Method)
        at com.sun.comm.LinuxSerial.access$1500(LinuxSerial.java:14)
        at com.sun.comm.LinuxSerial$SSCheckStatusThread.run(LinuxSerial.java:649)
et voici le bout de code qui effectue l'ouverture du port:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
		System.setSecurityManager(null);
		//recuperation du port de COM dans le fichier de conf
		String com = EMIConfig.getUsbPort();		
		try{
			// ouverture du port serie:
			log.debug("Ouverture du port "+com);
			portId=CommPortIdentifier.getPortIdentifier(com);
			serialPort=(SerialPort)portId.open(EMIConfig.getLogin(),2000);		
			//parametrage du port
			serialPort.notifyOnDataAvailable(true);			
			// 	on selectionne tous les parametres de la connexion serie:
		serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
 
			//ajout du listener
			try {
				serialPort.addEventListener(this);
			} catch (TooManyListenersException e) {
			}
			in = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
			out = serialPort.getOutputStream();	
 
			try {
			    serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, 
							   SerialPort.STOPBITS_1, 
							   SerialPort.PARITY_NONE);
			} catch (UnsupportedCommOperationException ex) {
				log.debug("Erreur de Setting de Parametres: "+ex.toString());
				ready = USB_Not_Ready;
				}
 
			ready = USB_Ready;
		}
		catch (javax.comm.PortInUseException ex){
			log.debug("Port en cours d'utilisation: "+ex.toString());
			ready = USB_Not_Ready;
			try{
			serialPort.close();
			}catch(Exception e){
				if (log.isDebugEnabled()) {
					log.debug("Toujours Occupe."+e.toString());
				} else {
					log.error(e, e);
				}
 
				ready = USB_Not_Ready;
			}
		}
		catch (Exception e){
			if (log.isDebugEnabled()) {
				log.debug("Probleme d'ouverture de port.", e);
				ready = USB_Not_Ready;
			} else {
				log.error(e, e);
			}
			ready = USB_Not_Ready;
		}
		if(ready == USB_Ready){
			log.debug("port USB ouvert");
			USBState = comUSBConstants.USB_READY;
		}
		else
			log.debug("Erreur d'ouverture de port");
	}//fin constructeur
donc le port de COM s'ouvre bien (mais avec l'exception citée plus haut) et lors de la premiere ecriture sur le port il se ferme et je n'arrive plus à le réouvrir derrière...

avec vous une idée ?
Merci,

Tiamat.