diff -Bbur jSSC-0.9.0-Release/src/jssc/SerialPort.java jSSC-0.9.0-briar/src/jssc/SerialPort.java --- jSSC-0.9.0-Release/src/jssc/SerialPort.java 2011-12-21 13:29:10.000000000 +0000 +++ jSSC-0.9.0-briar/src/jssc/SerialPort.java 2012-12-06 15:07:37.786033300 +0000 @@ -30,13 +30,13 @@ */ public class SerialPort { - private SerialNativeInterface serialInterface; - private SerialPortEventListener eventListener; - private int portHandle; - private String portName; - private boolean portOpened = false; - private boolean maskAssigned = false; - private boolean eventListenerAdded = false; + private volatile SerialNativeInterface serialInterface; + private volatile SerialPortEventListener eventListener; + private volatile int portHandle; + private volatile String portName; + private volatile boolean portOpened = false; + private volatile boolean maskAssigned = false; + private volatile boolean eventListenerAdded = false; public static final int BAUDRATE_110 = 110; @@ -915,7 +915,7 @@ private class EventThread extends Thread { - private boolean threadTerminated = false; + private volatile boolean threadTerminated = false; @Override public void run() { diff -Bbur jSSC-0.9.0-Release/src/jssc/SerialPortList.java jSSC-0.9.0-briar/src/jssc/SerialPortList.java --- jSSC-0.9.0-Release/src/jssc/SerialPortList.java 2011-12-21 13:30:30.000000000 +0000 +++ jSSC-0.9.0-briar/src/jssc/SerialPortList.java 2012-12-06 14:31:50.142033801 +0000 @@ -97,20 +97,15 @@ */ private static String[] getLinuxPortNames() { String[] returnArray = new String[]{}; - try { - Process dmesgProcess = Runtime.getRuntime().exec("dmesg"); - BufferedReader reader = new BufferedReader(new InputStreamReader(dmesgProcess.getInputStream())); + File dir = new File("/dev"); + if(dir.exists() && dir.isDirectory()){ + File[] files = dir.listFiles(); + if(files.length > 0){ TreeSet<String> portsTree = new TreeSet<String>(); ArrayList<String> portsList = new ArrayList<String>(); - String buffer = ""; - while((buffer = reader.readLine()) != null && !buffer.isEmpty()){ - if(buffer.matches(".*(ttyS|ttyUSB)[0-9]{1,3}.*")){ - String[] tmp = buffer.split(" "); - for(String value : tmp){ - if(value.matches("(ttyS|ttyUSB)[0-9]{1,3}")){ - portsTree.add("/dev/" + value); - } - } + for(File file : files){ + if(!file.isDirectory() && !file.isFile() && file.getName().matches(".*(ttyS|ttyUSB|ttyACM)[0-9]{1,3}.*")){ + portsTree.add("/dev/" + file.getName()); } } for(String portName : portsTree){ @@ -130,10 +125,7 @@ } } returnArray = portsList.toArray(returnArray); - reader.close(); } - catch (IOException ex) { - //Do nothing } return returnArray; } @@ -179,7 +171,7 @@ TreeSet<String> portsTree = new TreeSet<String>(); ArrayList<String> portsList = new ArrayList<String>(); for(File file : files){ - if(!file.isDirectory() && !file.isFile() && file.getName().matches("tty.(serial.*|usbserial.*)")){ + if(!file.isDirectory() && !file.isFile() && file.getName().matches("tty.(modem.*|usbmodem.*|serial.*|usbserial.*)")){ portsTree.add("/dev/" + file.getName()); } }