Problème RS232 inputstream
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.
Code:
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;
} |
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:
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
}
} |
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
Merci