Good morning,
I'm having issues using/or installing rxtx on windows 7 64 bits. I worked with it previously on a x86 win XP system and had no issues. Since reinstalling to this new system for some reason rxtx is unable to locate any ports whatsoever. I've tried the rxtx install, Cloud Hopper's 64 bit native library and deleting all rxtx files and starting from scratch. RXTXcomm.jar is found and I can browse the packages in NetBeans but the implementation seems to be broken or not found.
This line fails when executing, every time :
comPort = "COM1";
portId = CommPortIdentifier.getPortIdentifier(comPort);
and throws a NoSuchPortException.
Listing the serial ports using this produces nothing.
Enumeration ports = CommPortIdentifier.getPortIdentifiers();
String portArray[] = null;
while (ports.hasMoreElements()) {
CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
System.out.println(port.getName());
}
I've checked the serial ports are available so at this point I'm wondering if the native libraries are simply broken for windows 7 64 bits.
Has anyone successfully used RXTX 2.2pre2 under windows 7 64 bits?
Offending code section in constructor :
public SerialControl(String name, String comPort, int baudrate, int databits, String parity, double stopbits) throws Exception {
int stop = 0;
int data = 0;
int par = 0;
this.name=name;
// Sanity checks and interpretation
if (baudrate > 115200 || baudrate < 300) {
System.err.println(name+": constructor(): Invalid baudrate "+baudrate);
throw new Exception("Invalid baudrate, " + baudrate);
}
if (databits >= 5 && databits <= 8) {
switch (databits) {
case 5:
data = SerialPort.DATABITS_5;
break;
case 6:
data = SerialPort.DATABITS_6;
break;
case 7:
data = SerialPort.DATABITS_7;
break;
case 8:
data = SerialPort.DATABITS_8;
break;
default:
System.err.println(name+": constructor(): Invalid data bits, switched " + databits);
throw new Exception("Invalid data bits, switched " + databits);
}
} else {
throw new Exception("Invalid data bits=" + databits);
}
if (stopbits >= 1.0 && stopbits <= 2.0) {
if (stopbits == 1.0) {
stop = SerialPort.STOPBITS_1;
} else if (stopbits == 1.5) {
stop = SerialPort.STOPBITS_1_5;
} else if (stopbits == 2.0) {
stop = SerialPort.STOPBITS_2;
} else {
System.err.println(name+": constructor(): Invalid stop bits, switched " + stopbits);
throw new Exception("Invalid stop bits, switched " + stopbits);
}
} else {
System.err.println(name+": constructor(): Invalid stop bits, switched " + stopbits);
throw new Exception("Invalid stop bits " + stopbits);
}
switch (parity) {
case "S":
par = SerialPort.PARITY_SPACE;
break;
case "E":
par = SerialPort.PARITY_EVEN;
break;
case "M":
par = SerialPort.PARITY_MARK;
break;
case "O":
par = SerialPort.PARITY_ODD;
break;
case "N":
par = SerialPort.PARITY_NONE;
break;
default:
System.err.println(name+": constructor(): Invalid parity, switched " + parity);
throw new Exception("Invalid parity, switched " + parity);
}
// Inits
// Try to find the port specified
try {
portId = CommPortIdentifier.getPortIdentifier(comPort);
} catch (Exception e) {
System.err.println(name+": constructor(): No such port \"" + comPort+"\"");
e.printStackTrace();
throw e;
}
// Open the port
try {
serialPort = (SerialPort) portId.open("User Port", 2000);
} catch (PortInUseException e) {
System.err.println(name+": constructor(): Could not open port " + comPort);
throw e;
}
// Grab the input stream
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {
System.err.println(name+": constructor(): Could not get input stream for " + comPort);
throw e;
}
// Set the serial port parameters, no flow control
try {
serialPort.setSerialPortParams(baudrate, data, stop, par);
serialPort.setDTR(false);
serialPort.setRTS(false);
} catch (UnsupportedCommOperationException e) {
System.err.println(name+": constructor(): Error initializing " + comPort);
throw e;
}
}
I got the same problem. I use Eclipse as IDE for programming and i found this alternative configuration in the official wiki:
(It's my first answer, i don't know if i'm allowed to post an external link, but the five step come's from http://rxtx.qbang.org/wiki/index.php/Using_RXTX_In_Eclipse )
Hope it help !