Bonjour à tous,
Voilà j'ai un petit programme qui lit les données provenant d'un télémètre laser via le port rs232 de mon PC, jusqu'ici tout va bien l'inconvénient c'est que au bout d'un moment j'ai l'impression que les trames que je récupère ne sont plus valide.
Je me suis dis que ça venait peut être du télémètre mais si je me déconnecte puis me reconnecte les trames sont de nouveau bonnes.
ci dessus le code que j'utilise pour le paramétrage et la création des flux sur mon port COM et ci dessous l'utilisation que je fais de mon inputStream.
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
65
66
67
68
69 private CommPortIdentifier portId = null; private SerialPort port = null; private InputStream in = null; private OutputStream out = null; public RS232_PROXI() { initCom(); } /** * initialisation des paramètres de communication */ public void initCom(e) { // initialisation du driver Win32Driver w32Driver = new Win32Driver(); w32Driver.initialize(); // récupération du port COM try { portId = CommPortIdentifier.getPortIdentifier("COM1"); } catch (NoSuchPortException ex) { // traitement de l'exception System.out.println("pb récupération port " + portId.getName()); } try { port = (SerialPort) portId.open("PROXI", 5000); } catch (PortInUseException ex) { // traitement de l'exception System.out.println("pb ouverture port " + portId.getName()); } // paramétrage du port try { port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); port.setSerialPortParams(19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException ex) { // traitement de l'exception System.out.println("pb paramétrage port " + portId.getName()); } // création des flux try { out = port.getOutputStream(); in = port.getInputStream(); } catch (IOException ex) { // traitement de l'exception System.out.println("pb création des flux " + portId.getName()); } } protected void closeCom() { try { in.close(); out.close(); port.close(); } catch (IOException e) { e.printStackTrace(); } } /** * Récupération du flux entrant pour mon port COM * * @return InputStream */ public InputStream getIn() { return in; }
quelqu'un aurait il déjà rencontré ce problème ou existe t-il un moyen pour réinitialiser mon inputstream sans devoir tout fermer pour les réouvrir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public void run() { while(continu) { try { n = in.read(); } catch (IOException e) { e.printStackTrace(); } switch(n){ // Traitement des données } }
Merci
Partager