Bonjour
Je cherche à faire une applie qui scanne en continue les ports de ma machine. Cela pour detecter l'ajout d'une nouvelle comm (émulateur USB port serie par ex)
Avec javax.comm je peux scanner en faisant:
Pas de souci, les ports sont scannées. Mais si je rajoute un port, celui-ci n'est pas detecter quand je relance mon scan.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Enumeration portList = CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier portId; while (portList.hasMoreElements()){ portId = (CommPortIdentifier)portList.nextElement(); System.out.println(portId.getName()); }
J'ai donc decidé de rajouter ceci:
et en sortie, j'obtien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Win32Driver w32Driver = new Win32Driver(); w32Driver.initialize(); Enumeration portList = CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier portId; while (portList.hasMoreElements()){ portId = (CommPortIdentifier)portList.nextElement(); System.out.println(portId.getName()); }
Scan 1:
Au scan1, les ports sont détectées deux fois. Une fois par w32Driver.initialize();Scan 1:
COM1
LPT1
LPT2
COM1
LPT1
LPT2
Scan2 :
COM1
LPT1
LPT2
COM1
LPT1
LPT2
COM1
COM4 (le port rajouté)
LPT1
LPT2
et par CommPortIdentifier.getPortIdentifiers();.
Au scan2, les port sont de nouveaux doublé.
J'en deduit que CommPortIdentifier.getPortIdentifiers(); fais appelle une fois à l'initialization, range les ports trouvé dans une liste, et quand on refais appelle à lui, resort juste cette liste sans refaire d'init et retrouver d'éventuelle port rajouté. De plus à chaque initialization, les ports s'ajoute à ceux de la précedente initialization, devenant rapidement une liste ingérable au bout de dix init.
Question, comment rafraichir la liste de port régulierment sans se retrouver avec une liste longue comme le bras?
Si vous avez des idées, je vous en remerciert
Partager