public int setUpBam() { Enumeration<?> portIdentifiers = CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier portId = null; while (portIdentifiers.hasMoreElements()) { CommPortIdentifier pid = (CommPortIdentifier) portIdentifiers.nextElement(); if (pid.getPortType() == CommPortIdentifier.PORT_SERIAL && pid.getName().equals(wantedPortName)) { portId = pid; System.out.println("Found port: " + pid.getName()); break; } } try { port = (SerialPort) portId.open("Driver", 10000); } catch (PortInUseException e) { System.err.println("Port already in use: " + e); System.exit(1); } try { port.setSerialPortParams( 57600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) { System.err.println("Failed to set up port: " + e); } System.out.println("Port should be open now"); return 0; }
public static void main(String[] args) { /* * 不带参数的getPortIdentifiers方法获得一个枚举对象 * , * 该对象又包含了系统中管理每个端口的CommPortIdentifier对象 * 。 * 注意这里的端口不仅仅是指串口,也包括并口 * 。这个方法还可以带参数。 * getPortIdentifiers * (CommPort) * 获得与已经被应用程序打开的端口相对应的CommPortIdentifier对象 * 。 * getPortIdentifier * (String * portName)获取指定端口名 * (比如“COM1”) * 的CommPortIdentifier对象 * 。 */ portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) /* getPortType方法返回端口类型 */ { if (portId.getName().equals(CommPortUtil.getCommPortName())) /* 找Windows下的第一个串口*/ { // if (portId.getName().equals("/dev/term/a"))/* // * 找Unix-like系统下的第一个串口 // */{ @SuppressWarnings("unused") SimpleRead reader = new SimpleRead(); } } } }
/** * Check that the port specified is in fact available; * * @return true or false */ public static boolean isPortAvailable(String portName) { Enumeration enumr = CommPortIdentifier.getPortIdentifiers(); while (enumr.hasMoreElements()) { CommPortIdentifier comId = (CommPortIdentifier) enumr.nextElement(); if (comId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portName.equalsIgnoreCase(comId.getName())) { return true; } } } return false; }
public static String getStatusOfPorts() { Enumeration enumr = CommPortIdentifier.getPortIdentifiers(); StringBuffer s = new StringBuffer(); while (enumr.hasMoreElements()) { CommPortIdentifier comId = (CommPortIdentifier) enumr.nextElement(); if (comId.getPortType() == CommPortIdentifier.PORT_SERIAL) { s.append(comId.getName() + ": "); if (comId.isCurrentlyOwned()) { s.append("owner: " + comId.getCurrentOwner() + " "); } else { s.append("no owner."); } s.append("\n"); } } return s.toString(); }
/** * Check that the port specified is in fact available; * * @return The portName specified, or, if not available, return first port found (to use as * default) */ public static String checkPortAvailable(String portName) { String firstPort = null; Enumeration enumr = CommPortIdentifier.getPortIdentifiers(); int i = 1; while (enumr.hasMoreElements()) { CommPortIdentifier comId = (CommPortIdentifier) enumr.nextElement(); if (comId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (i == 1) { firstPort = comId.getName(); } i++; if (portName.equalsIgnoreCase(comId.getName())) { return portName; } } } return firstPort; }
/** * -------------------------------------------------------------------------- Get serial ports * * @return String array of ports on workstation (may return null) */ public static String[] getAvailablePorts() { Enumeration enumr = CommPortIdentifier.getPortIdentifiers(); String[] retStr = null; ArrayList list = new ArrayList(); while (enumr.hasMoreElements()) { CommPortIdentifier comId = (CommPortIdentifier) enumr.nextElement(); if (comId.getPortType() == CommPortIdentifier.PORT_SERIAL) { list.add(comId.getName()); // System.out.println(comId.getName()); } } Object[] ports = list.toArray(); if (ports != null) { retStr = new String[ports.length]; for (int i = 0; i < ports.length; i++) { retStr[i] = (String) ports[i]; } } return retStr; }