--- src/gnu/io/RXTXCommDriver.java.orig 2008-11-14 00:44:01 UTC +++ src/gnu/io/RXTXCommDriver.java @@ -56,10 +56,15 @@ | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | All trademarks belong to their respective owners. --------------------------------------------------------------------------*/ -/* Martin Pool added support for explicitly-specified - * lists of ports, October 2000. */ -/* Joseph Goldstone reorganized to support registered ports, - * known ports, and scanned ports, July 2001 */ +/** +* +* Martin Pool added support for +* explicitly-specified lists of ports, October 2000. +* +* Joseph Goldstone reorganized to support registered +* ports, known ports, and scanned ports, July 2001. +* +**/ package gnu.io; @@ -69,132 +74,196 @@ import java.io.*; import java.util.StringTokenizer; /** - This is the JavaComm for Linux driver. +* This is the JavaComm for Linux driver. */ + public class RXTXCommDriver implements CommDriver { - private final static boolean debug = false; - private final static boolean devel = false; + private final static boolean debug = "true".equals( System.getProperty( "gnu.io.rxtx.DEBUG" ) ); + private final static boolean CheckLPT = "true".equals( System.getProperty( "gnu.io.rxtx.CheckL" ) ); private final static boolean noVersionOutput = "true".equals( System.getProperty( "gnu.io.rxtx.NoVersionOutput" ) ); - + + static { - if(debug ) System.out.println("RXTXCommDriver {}"); + if(debug) System.out.println("RXTXCommDriver{}:Static"); System.loadLibrary( "rxtxSerial" ); - /* - Perform a crude check to make sure people don't mix - versions of the Jar and native lib - - Mixing the libs can create a nightmare. - - It could be possible to move this over to RXTXVersion - but All we want to do is warn people when first loading - the Library. - */ + /** + * Perform a crude check to make sure people don't mix + * versions of the Jar and native lib + * + * Mixing the libs can create a nightmare. + * + * It could be possible to move this over to RXTXVersion + * but All we want to do is warn people when first loading + * the Library. + **/ + String JarVersion = RXTXVersion.getVersion(); String LibVersion; - try { - LibVersion = RXTXVersion.nativeGetVersion(); - } catch ( Error UnsatisfiedLinkError ) + + try { - // for rxtx prior to 2.1.7 + LibVersion = RXTXVersion.nativeGetVersion(); + } + catch ( Error UnsatisfiedLinkError ) + { + + /** + * for rxtx prior to 2.1.7 + **/ + LibVersion = nativeGetVersion(); } - if ( devel ) + if (!debug) { if ( ! noVersionOutput ) { - System.out.println("Stable Library"); - System.out.println("========================================="); - System.out.println("Native lib Version = " + LibVersion ); - System.out.println("Java lib Version = " + JarVersion ); + System.out.println(" RXTX Comm - Stable Library"); + System.out.println(" ================================="); + System.out.println(" Native lib Version = " + LibVersion); + System.out.println(" Java lib Version = " + JarVersion); } + + } + else + { + System.out.println(" =================================="); + System.out.println(" = ="); + System.out.println(" = RXTX Comm - In Java DEBUG mode ="); + System.out.println(" = ="); + System.out.println(" =================================="); + } if ( ! JarVersion.equals( LibVersion ) ) { - System.out.println( "WARNING: RXTX Version mismatch\n\tJar version = " + JarVersion + "\n\tnative lib Version = " + LibVersion ); + System.out.println(" WARNING: RXTX Version mismatch"); + System.out.println(" ** Jar version = " + JarVersion); + System.out.println(" ** Native lib Version = " + LibVersion); } - else if ( debug ) + else if (debug) { - System.out.println( "RXTXCommDriver:\n\tJar version = " + JarVersion + "\n\tnative lib Version = " + LibVersion ); + System.out.println(" ** Jar version = " + JarVersion); + System.out.println(" ** Native lib Version = " + LibVersion); } + + if(debug) System.out.println("RXTXCommDriver{}:Static:Exit"); + } - /** Get the Serial port prefixes for the running OS */ + /** + * Get the Serial port prefixes for the running OS + **/ + private String deviceDirectory; private String osName; private native boolean registerKnownPorts(int PortType); private native boolean isPortPrefixValid(String dev); private native boolean testRead(String dev, int type); private native String getDeviceDirectory(); - // for rxtx prior to 2.1.7 + + /** + * for rxtx prior to 2.1.7 + **/ + public static native String nativeGetVersion(); - private final String[] getValidPortPrefixes(String CandidatePortPrefixes[]) + private final String[] getValidPortPrefixes( + String CandidatePortPrefixes[] + ) { - /* - 256 is the number of prefixes ( COM, cua, ttyS, ...) not - the number of devices (ttyS0, ttyS1, ttyS2, ...) - - On a Linux system there are about 400 prefixes in - deviceDirectory. - registerScannedPorts() assigns CandidatePortPrefixes to - something less than 50 prefixes. - - Trent - */ - + /** + * 256 is the number of prefixes ( COM, cua, ttyS, ...) not + * the number of devices (ttyS0, ttyS1, ttyS2, ...) + * + * On a Linux system there are about 400 prefixes in + * deviceDirectory. + * registerScannedPorts() assigns CandidatePortPrefixes to + * something less than 50 prefixes. + * + * Trent + **/ + String ValidPortPrefixes[]=new String [256]; - if (debug) - System.out.println("\nRXTXCommDriver:getValidPortPrefixes()"); + + if (debug) System.out.println("RXTXCommDriver:getValidPortPrefixes()"); + if(CandidatePortPrefixes==null) { - if (debug) - System.out.println("\nRXTXCommDriver:getValidPortPrefixes() No ports prefixes known for this System.\nPlease check the port prefixes listed for " + osName + " in RXTXCommDriver:registerScannedPorts()\n"); + if (debug) + { + System.out.println(" No ports prefixes known for this System."); + System.out.println(" Please check the port prefixes listed"); + System.out.println(" for " + osName + " in registerScannedPorts()"); + } } + int i=0; - for(int j=0;jFrom the NullDriver.java CommAPI sample. - * - * added printerport stuff - * Holger Lehmann - * July 12, 1999 - * IBM - - * Added ttyM for Moxa boards - * Removed obsolete device cuaa - * Peter Bennett - * January 02, 2000 - * Bencom - - */ + /** + * initialize() will be called by the CommPortIdentifier's static +* initializer. The responsibility of this method is: +* 1) Ensure that that the hardware is present. +* 2) Load any required native libraries. +* 3) Register the port names with the CommPortIdentifier. + * + *

From the NullDriver.java CommAPI sample. + * added printerport stuff + * Holger Lehmann + * July 12, 1999 + * IBM + * + * Added ttyM for Moxa boards + * Removed obsolete device cuaa + * Peter Bennett + * January 02, 2000 + * Bencom +**/ /** - * Determine the OS and where the OS has the devices located - */ + * Determine the OS and where the OS has the devices located + **/ public void initialize() { - + if (debug) System.out.println("RXTXCommDriver:initialize()"); - + osName=System.getProperty("os.name"); deviceDirectory=getDeviceDirectory(); - - /* - First try to register ports specified in the properties - file. If that doesn't exist, then scan for ports. - */ - for (int PortType=CommPortIdentifier.PORT_SERIAL;PortType<=CommPortIdentifier.PORT_PARALLEL;PortType++) { - if (!registerSpecifiedPorts(PortType)) { - if (!registerKnownPorts(PortType)) { + + /** + * First try to register ports specified in the properties + * file. If that doesn't exist, then scan for ports. + **/ + + for + ( + int PortType=CommPortIdentifier.PORT_SERIAL; + PortType<=CommPortIdentifier.PORT_PARALLEL; + PortType++ + ) + { + /** + * Load prefixes for all ports from env and file pairs + **/ + if (!registerSpecifiedPorts(PortType)) + { + + /** + * Load OS knoow ports (APPLE thing) + **/ + if (!registerKnownPorts(PortType)) + { + + /** + * Load ports via a scan... + **/ registerScannedPorts(PortType); } } } + + if (debug) System.out.println("RXTXCommDriver:initialize:Exit"); + } - private void addSpecifiedPorts(String names, int PortType) + private void addSpecifiedPorts( + String names, + int PortType + ) { + + if (debug) System.out.println("RXTXCommDriver:addSpecifiedPorts()"); + final String pathSep = System.getProperty("path.separator", ":"); final StringTokenizer tok = new StringTokenizer(names, pathSep); - if (debug) - System.out.println("\nRXTXCommDriver:addSpecifiedPorts()"); while (tok.hasMoreElements()) { String PortName = tok.nextToken(); @@ -380,94 +540,186 @@ public class RXTXCommDriver implements C CommPortIdentifier.addPortName(PortName, PortType, this); } + + if (debug) System.out.println("RXTXCommDriver:addSpecifiedPorts:Exit"); + } - /* - * Register ports specified in the file "gnu.io.rxtx.properties" - * Key system properties: - * gnu.io.rxtx.SerialPorts - * gnu.io.rxtx.ParallelPorts - * - * Tested only with sun jdk1.3 - * The file gnu.io.rxtx.properties must reside in the java extension dir - * - * Example: /usr/local/java/jre/lib/ext/gnu.io.rxtx.properties - * - * The file contains the following key properties: - * - * gnu.io.rxtx.SerialPorts=/dev/ttyS0:/dev/ttyS1: - * gnu.io.rxtx.ParallelPorts=/dev/lp0: - * - */ - private boolean registerSpecifiedPorts(int PortType) + /** +* Register ports specified in the file "gnu.io.rxtx.properties" +* Key system properties: +* gnu.io.rxtx.SerialPorts +* gnu.io.rxtx.ParallelPorts +* +* Tested only with sun jdk1.3 +* +* The file gnu.io.rxtx.properties must reside in the java extension dir +* +* Example: /usr/local/java/jre/lib/ext/gnu.io.rxtx.properties +* +* The file contains the following key properties: +* +* gnu.io.rxtx.SerialPorts=/dev/ttyS0:/dev/ttyS1: +* gnu.io.rxtx.ParallelPorts=/dev/lp0: +* +**/ + private boolean registerSpecifiedPorts( + int PortType + ) { + if (debug) System.out.println("RXTXCommDriver:registerSpecifiedPorts(" + PortType + ")"); + + final String pathSep = System.getProperty("path.separator", ":"); + final String fileSep = System.getProperty("file.separator"); String val = null; - Properties origp = System.getProperties();//save system properties - - try - { - - String ext_dir=System.getProperty("java.ext.dirs")+System.getProperty("file.separator"); - FileInputStream rxtx_prop=new FileInputStream(ext_dir+"gnu.io.rxtx.properties"); - Properties p=new Properties(); - p.load(rxtx_prop); - System.setProperties(p); - for (Iterator it = p.keySet().iterator(); it.hasNext();) { - String key = (String) it.next(); - System.setProperty(key, p.getProperty(key)); - } - }catch(Exception e){ - if (debug){ - System.out.println("The file: gnu.io.rxtx.properties doesn't exists."); - System.out.println(e.toString()); - }//end if - }//end catch - - if (debug) - System.out.println("checking for system-known ports of type "+PortType); + String err_str = null; + String ext_loc[]; + boolean props_loaded = false; + + /** + * Save System properties, to restore on func exit. + **/ + + Properties origp = System.getProperties(); + + String ext_dir=System.getProperty("java.ext.dirs"); + + if (ext_dir.length() > 0) + { + + if (ext_dir.indexOf(":") > 0) + { + ext_loc = ext_dir.split(pathSep); + } + else + { + ext_loc = new String[1]; + ext_loc[1] = ext_dir; + + } + + for ( + int el=0; + el The file '" + ext_loc[el] + "gnu.io.rxtx.properties' doesn't exists."); + } + } + } + } + } if (debug) - System.out.println("checking registry for ports of type "+PortType); + System.out.println(" Checking Environment Properties for ports of type " + PortType); switch (PortType) { case CommPortIdentifier.PORT_SERIAL: if ((val = System.getProperty("gnu.io.rxtx.SerialPorts")) == null) - val = System.getProperty("gnu.io.SerialPorts"); + { + val = System.getProperty("gnu.io.SerialPorts"); + if (debug) + System.out.println(" - Capture gnu.io.SerialPorts = '" + val + "' where Port Type =" + PortType); + } break; case CommPortIdentifier.PORT_PARALLEL: if ((val = System.getProperty("gnu.io.rxtx.ParallelPorts")) == null) - val = System.getProperty("gnu.io.ParallelPorts"); + { + val = System.getProperty("gnu.io.ParallelPorts"); + if (debug) + System.out.println(" - Capture gnu.io.ParallelPorts = '" + val + "' where Port Type =" + PortType); + } break; default: if (debug) - System.out.println("unknown port type "+PortType+" passed to RXTXCommDriver.registerSpecifiedPorts()"); + System.out.println(" !!ERROR - Unknown port type " + PortType + " passed to RXTXCommDriver.registerSpecifiedPorts()"); } + /** + * Not sure if the following line undoes the properties load, + * or just ensures properties before the proc is called are + * not manipulated. Anti-injection? - We've finished with + * them anyway... + **/ System.setProperties(origp); //recall saved properties - if (val != null) { + + if (val != null) + { + addSpecifiedPorts(val, PortType); + if (debug) + { + System.out.println(" = Ports added from Environmental Properties"); + System.out.println("RXTXCommDriver:registerSpecifiedPorts(True):Exit"); + } return true; - } else { + } + else + { + if (debug) System.out.println("RXTXCommDriver:registerSpecifiedPorts(False):Exit"); return false; } } - /* - * Look for all entries in deviceDirectory, and if they look like they should - * be serial ports on this OS and they can be opened then register - * them. - * - */ - private void registerScannedPorts(int PortType) + /** + * Look for all entries in deviceDirectory, and if they look like they should + * be serial ports on this OS and they can be opened then register + * them. + **/ + + private void registerScannedPorts( + int PortType + ) { - String[] CandidateDeviceNames; - if (debug) - System.out.println("scanning device directory "+deviceDirectory+" for ports of type "+PortType); + if (debug) System.out.println("RXTXCommDriver:registerScannedPorts(" + PortType + ")"); + + String[] CandidateDeviceNames; + int iFound; + + if (debug) System.out.println(" Scanning " + deviceDirectory + " for ports of type " + PortType); + if(osName.equals("Windows CE")) { - String[] temp = - { "COM1:", "COM2:","COM3:","COM4:", - "COM5:", "COM6:", "COM7:", "COM8:" }; + String[] temp = { + "COM1:", + "COM2:", + "COM3:", + "COM4:", + "COM5:", + "COM6:", + "COM7:", + "COM8:" + }; CandidateDeviceNames=temp; } else if(osName.toLowerCase().indexOf("windows") != -1 ) @@ -482,329 +734,338 @@ public class RXTXCommDriver implements C temp[i + 255] = "LPT" + i; } CandidateDeviceNames=temp; - } - else if ( osName.equals("Solaris") || osName.equals("SunOS")) - { - /* Solaris uses a few different ways to identify ports. - They could be /dev/term/a /dev/term0 /dev/cua/a /dev/cuaa - the /dev/???/a appears to be on more systems. - - The uucp lock files should not cause problems. - */ - /* - File dev = new File( "/dev/term" ); - String deva[] = dev.list(); - dev = new File( "/dev/cua" ); - String devb[] = dev.list(); - String[] temp = new String[ deva.length + devb.length ]; - for(int j =0;j 0 ) - term[l++] ="term/"; - /* - dev = new File( "/dev/cua0" ); - if( dev.list().length > 0 ) - term[l++] = "cua/"; - */ - String[] temp = new String[l]; - for(l--;l >= 0;l--) - temp[l] = term[l]; - CandidateDeviceNames=temp; - } - else - { - File dev = new File( deviceDirectory ); - String[] temp = dev.list(); - CandidateDeviceNames=temp; - } - if (CandidateDeviceNames==null) - { - if (debug) - System.out.println("RXTXCommDriver:registerScannedPorts() no Device files to check "); + String term[] = new String[2]; + int l = 0; + File dev = null; + dev = new File( "/dev/term" ); + if( dev.list().length > 0 ) term[l++] ="term/"; + + /** + * dev = new File( "/dev/cua0" ); + * if( dev.list().length > 0 ) term[l++] = "cua/"; + **/ + + String[] temp = new String[l]; + for(l--;l >= 0;l--) temp[l] = term[l]; + CandidateDeviceNames=temp; + } + else + { + File dev = new File( deviceDirectory ); + String[] temp = dev.list(); + CandidateDeviceNames=temp; + } + + if (CandidateDeviceNames==null) + { + if (debug) System.out.println(" No device files to check "); return; - } - - String CandidatePortPrefixes[] = {}; - switch (PortType) { - case CommPortIdentifier.PORT_SERIAL: - if (debug) - System.out.println("scanning for serial ports for os "+osName); - - - /* There are _many_ possible ports that can be used - on Linux. See below in the fake Linux-all-ports - case for a list. You may add additional ports - here but be warned that too many will significantly - slow down port enumeration. Linux 2.6 has udev - support which should be faster as only ports the - kernel finds should be exposed in /dev - - See also how to override port enumeration and - specifying port in INSTALL. - - taj - */ - - if(osName.equals("Linux")) - { - String[] Temp = { - "ttyS", // linux Serial Ports - "ttySA", // for the IPAQs - "ttyUSB", // for USB frobs - "rfcomm", // bluetooth serial device - "ttyircomm", // linux IrCommdevices (IrDA serial emu) - }; - CandidatePortPrefixes=Temp; - } - else if(osName.equals("Linux-all-ports")) - { - /* if you want to enumerate all ports ~5000 - possible, then replace the above with this - */ - String[] Temp = { - "comx", // linux COMMX synchronous serial card - "holter", // custom card for heart monitoring - "modem", // linux symbolic link to modem. - "rfcomm", // bluetooth serial device - "ttyircomm", // linux IrCommdevices (IrDA serial emu) - "ttycosa0c", // linux COSA/SRP synchronous serial card - "ttycosa1c", // linux COSA/SRP synchronous serial card - "ttyACM",// linux CDC ACM devices - "ttyC", // linux cyclades cards - "ttyCH",// linux Chase Research AT/PCI-Fast serial card - "ttyD", // linux Digiboard serial card - "ttyE", // linux Stallion serial card - "ttyF", // linux Computone IntelliPort serial card - "ttyH", // linux Chase serial card - "ttyI", // linux virtual modems - "ttyL", // linux SDL RISCom serial card - "ttyM", // linux PAM Software's multimodem boards - // linux ISI serial card - "ttyMX",// linux Moxa Smart IO cards - "ttyP", // linux Hayes ESP serial card - "ttyR", // linux comtrol cards - // linux Specialix RIO serial card - "ttyS", // linux Serial Ports - "ttySI",// linux SmartIO serial card - "ttySR",// linux Specialix RIO serial card 257+ - "ttyT", // linux Technology Concepts serial card - "ttyUSB",//linux USB serial converters - "ttyV", // linux Comtrol VS-1000 serial controller - "ttyW", // linux specialix cards - "ttyX" // linux SpecialX serial card - }; - CandidatePortPrefixes=Temp; - } - else if(osName.toLowerCase().indexOf("qnx") != -1 ) - { - String[] Temp = { - "ser" - }; - CandidatePortPrefixes=Temp; - } - else if(osName.equals("Irix")) - { - String[] Temp = { - "ttyc", // irix raw character devices - "ttyd", // irix basic serial ports - "ttyf", // irix serial ports with hardware flow - "ttym", // irix modems - "ttyq", // irix pseudo ttys - "tty4d",// irix RS422 - "tty4f",// irix RS422 with HSKo/HSki - "midi", // irix serial midi - "us" // irix mapped interface - }; - CandidatePortPrefixes=Temp; - } - else if(osName.equals("FreeBSD")) //FIXME this is probably wrong - { - String[] Temp = { - "ttyd", //general purpose serial ports - "cuaa", //dialout serial ports - "ttyA", //Specialix SI/XIO dialin ports - "cuaA", //Specialix SI/XIO dialout ports - "ttyD", //Digiboard - 16 dialin ports - "cuaD", //Digiboard - 16 dialout ports - "ttyE", //Stallion EasyIO (stl) dialin ports - "cuaE", //Stallion EasyIO (stl) dialout ports - "ttyF", //Stallion Brumby (stli) dialin ports - "cuaF", //Stallion Brumby (stli) dialout ports - "ttyR", //Rocketport dialin ports - "cuaR", //Rocketport dialout ports - "stl" //Stallion EasyIO board or Brumby N - }; - CandidatePortPrefixes=Temp; - } - else if(osName.equals("NetBSD")) // FIXME this is probably wrong - { - String[] Temp = { - "tty0" // netbsd serial ports - }; - CandidatePortPrefixes=Temp; - } - else if ( osName.equals("Solaris") - || osName.equals("SunOS")) - { - String[] Temp = { - "term/", - "cua/" - }; - CandidatePortPrefixes=Temp; - } - else if(osName.equals("HP-UX")) - { - String[] Temp = { - "tty0p",// HP-UX serial ports - "tty1p" // HP-UX serial ports - }; - CandidatePortPrefixes=Temp; - } + } + else + { + int found = CandidateDeviceNames.length; + if (debug) System.out.println(" Found " + found + " devices files to check"); + } - else if(osName.equals("UnixWare") || - osName.equals("OpenUNIX")) - { - String[] Temp = { - "tty00s", // UW7/OU8 serial ports - "tty01s", - "tty02s", - "tty03s" - }; - CandidatePortPrefixes=Temp; - } + String CandidatePortPrefixes[] = {}; + + switch (PortType) { + case CommPortIdentifier.PORT_SERIAL: + if (debug) System.out.println(" scanning for serial ports for os " + osName); + + /** + * There are _many_ possible ports that can be used + * on Linux. See below in the fake Linux-all-ports + * case for a list. You may add additional ports + * here but be warned that too many will significantly + * slow down port enumeration. Linux 2.6 has udev + * support which should be faster as only ports the + * kernel finds should be exposed in /dev + * + * See also how to override port enumeration and + * specifying port in INSTALL. + * + * taj + **/ + if(osName.equals("Linux")) + { + String[] Temp = { + "ttyS", // linux Serial Ports + "ttySA", // for the IPAQs + "ttyUSB", // for USB frobs + "rfcomm", // bluetooth serial device + "ttyircomm" // linux IrCommdevices (IrDA serial emu) + }; + CandidatePortPrefixes=Temp; + } + else if(osName.equals("Linux-all-ports")) + { + /** + * If you want to enumerate all ports ~5000 + * possible, then replace the above with this + **/ + + String[] Temp = { + "comx", // linux COMMX synchronous serial card + "holter",// custom card for heart monitoring + "modem", // linux symbolic link to modem. + "rfcomm", // bluetooth serial device + "ttyircomm", // linux IrCommdevices (IrDA serial emu) + "ttycosa0c", // linux COSA/SRP synchronous serial card + "ttycosa1c", // linux COSA/SRP synchronous serial card + "ttyACM", // linux CDC ACM devices + "ttyC", // linux cyclades cards + "ttyCH", // linux Chase Research AT/PCI-Fast serial card + "ttyD", // linux Digiboard serial card + "ttyE", // linux Stallion serial card + "ttyF", // linux Computone IntelliPort serial card + "ttyH", // linux Chase serial card + "ttyI", // linux virtual modems + "ttyL", // linux SDL RISCom serial card + "ttyM", // linux PAM Software's multimodem boards + "ttyMX", // linux Moxa Smart IO cards + "ttyP", // linux Hayes ESP serial card + "ttyR", // linux comtrol cards + "ttyS", // linux Serial Ports + "ttySI", // linux SmartIO serial card + "ttySR", // linux Specialix RIO serial card 257+ + "ttyT", // linux Technology Concepts serial card + "ttyUSB", //linux USB serial converters + "ttyV", // linux Comtrol VS-1000 serial controller + "ttyW", // linux specialix cards + "ttyX" // linux SpecialX serial card + }; + + CandidatePortPrefixes=Temp; + } + else if(osName.toLowerCase().indexOf("qnx") != -1 ) + { + String[] Temp = { + "ser" + }; + CandidatePortPrefixes=Temp; + } + else if(osName.equals("Irix")) + { + String[] Temp = { + "ttyc", // irix raw character devices + "ttyd", // irix basic serial ports + "ttyf", // irix serial ports with hardware flow + "ttym", // irix modems + "ttyq", // irix pseudo ttys + "tty4d",// irix RS422 + "tty4f",// irix RS422 with HSKo/HSki + "midi", // irix serial midi + "us" // irix mapped interface + }; + CandidatePortPrefixes=Temp; + } + else if(osName.equals("FreeBSD")) + //See here: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/serial.html + { + String[] Temp = { + "ttyu", //general purpose serial ports + "ttyU", //general purpose serial ports (UArduino Drv) + "cuau", //general purpose serial ports (post v10) + "cuaU", //general purpose serial ports (UARduino Drv) + "cuad", //general purpose serial ports (pre v10) + "ttyd", //general purpose serial ports + + //Historic From the NullDriver.java CommAPI sample. - */ /** - * @param PortName The name of the port the OS recognizes - * @param PortType CommPortIdentifier.PORT_SERIAL or PORT_PARALLEL - * @return CommPort - * getCommPort() will be called by CommPortIdentifier from its - * openPort() method. PortName is a string that was registered earlier - * using the CommPortIdentifier.addPortName() method. getCommPort() - * returns an object that extends either SerialPort or ParallelPort. - */ - public CommPort getCommPort( String PortName, int PortType ) + *

From the NullDriver.java CommAPI sample. + * + * @param PortName The name of the port the OS recognizes + * @param PortType CommPortIdentifier.PORT_SERIAL or PORT_PARALLEL + * @return CommPort + * getCommPort() will be called by CommPortIdentifier from its + * openPort() method. PortName is a string that was registered earlier + * using the CommPortIdentifier.addPortName() method. getCommPort() + * returns an object that extends either SerialPort or ParallelPort. + **/ + + public CommPort getCommPort( + String PortName, + int PortType + ) { - if (debug) System.out.println("RXTXCommDriver:getCommPort(" - +PortName+","+PortType+")"); - try { + if (debug) System.out.println("RXTXCommDriver:getCommPort(" + PortName + "," + PortType + ")"); + try + { switch (PortType) { case CommPortIdentifier.PORT_SERIAL: if(osName.toLowerCase().indexOf("windows") == -1 ) - { - + { return new RXTXPort( PortName ); } else @@ -868,18 +1143,30 @@ public class RXTXCommDriver implements C return new LPRPort( PortName ); default: if (debug) - System.out.println("unknown PortType "+PortType+" passed to RXTXCommDriver.getCommPort()"); + System.out.println(" Unknown PortType "+PortType+" passed to RXTXCommDriver.getCommPort()"); } - } catch( PortInUseException e ) { - if (debug) - System.out.println( - "Port "+PortName+" in use by another application"); } + catch( PortInUseException e ) + { + if (debug) System.out.println(" Port "+PortName+" in use by another application"); + } + + if (debug) System.out.println("RXTXCommDriver:getCommPort:Exit"); + return null; + + + } - /* Yikes. Trying to call println from C for odd reasons */ - public void Report( String arg ) + /** + * Yikes. + * Trying to call println from C for odd reasons + **/ + + public void Report( + String arg + ) { System.out.println(arg); }