1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-01-17 06:52:18 +01:00

Speed up on serial port touch

This commit is contained in:
Cristian Maglie 2012-02-28 18:28:34 +01:00
parent 5eef4ca79c
commit a5404125f6

View File

@ -102,17 +102,20 @@ public class Serial implements SerialPortEventListener {
}
public static boolean touchPort(String iname, int irate) throws SerialException {
SerialPort port;
boolean result = false;
try {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
if ((CommPortIdentifier.PORT_SERIAL == portId.getPortType()) && (portId.getName().equals(iname))) {
port = (SerialPort) portId.open("tap", 2000);
final SerialPort port = (SerialPort) portId.open("tap", 2000);
port.setSerialPortParams(irate, 8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
port.close();
result = true;
// Sometime the port close takes a lot to complete, so we run it in a parallel thread
new Thread() {
public void run() {
port.close();
};
}.start();
return true;
}
}
} catch (PortInUseException e) {
@ -124,7 +127,7 @@ public class Serial implements SerialPortEventListener {
I18n.format(_("Error touching serial port ''{0}''."), iname), e
);
}
return result;
return false;
}
public Serial(String iname, int irate,