Discovering available comm ports
From Rxtx
Revision as of 21:32, 22 July 2007 by 81.57.31.116 (Talk)
This code snippet shows how to iretrive the available comms ports on your computer. A CommPort is available if it is not being used by another application. Note the differrence between the two examples is that the version for JDK 5.0 up uses generics:
JDK <= 1.4
/**
* @return A HashSet containing the CommPortIdentifier for all serial ports that are not currently being used.
*/
public static HashSet getAvailableSerialPorts() {
HashSet h = new HashSet();
Enumeration thePorts = CommPortIdentifier.getPortIdentifiers();
while (thePorts.hasMoreElements()) {
CommPortIdentifier com = (CommPortIdentifier) thePorts.nextElement();
switch (com.getPortType()) {
case CommPortIdentifier.PORT_SERIAL:
try {
CommPort thePort = com.open("CommUtil", 50);
thePort.close();
h.add(com);
} catch (PortInUseException e) {
if (log.isInfoEnabled()) {
log.info("Port, " com.getName() ", is in use.");
}
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("Failed to open port " com.getName(), e);
}
}
}
}
return h;
}
JDK >= 5.0
/**
* @return A HashSet containing the CommPortIdentifier for all serial ports that are not currently being used.
*/
public static HashSet<CommPortIdentifier> getAvailableSerialPorts() {
HashSet<CommPortIdentifier> h = new HashSet<CommPortIdentifier>();
Enumeration thePorts = CommPortIdentifier.getPortIdentifiers();
while (thePorts.hasMoreElements()) {
CommPortIdentifier com = (CommPortIdentifier) thePorts.nextElement();
switch (com.getPortType()) {
case CommPortIdentifier.PORT_SERIAL:
try {
CommPort thePort = com.open("CommUtil", 50);
thePort.close();
h.add(com);
} catch (PortInUseException e) {
if (log.isInfoEnabled()) {
log.info("Port, " com.getName() ", is in use.");
}
} catch (Exception e) {
if (log.isErrorEnabled()) {
log.error("Failed to open port " com.getName(), e);
}
}
}
}
return h;
}

