Buenos días,RXTX no puede enumerar o encontrar puertos en Windows 7 64 bits de
Tengo problemas utilizando/o la instalación de rxtx en Windows 7 64 bits. Trabajé previamente con un sistema x86 win XP y no tuve problemas. Desde la reinstalación de este nuevo sistema por alguna razón, rxtx no puede localizar ningún puerto. Probé la instalación rxtx, la biblioteca nativa de 64 bits de Cloud Hopper y eliminé todos los archivos rxtx y comencé desde cero. RXTXcomm.jar se encuentra y puedo navegar por los paquetes en NetBeans pero la implementación parece estar rota o no encontrada.
Esta línea de falla cuando se ejecuta, cada vez que:
comPort = "COM1";
portId = CommPortIdentifier.getPortIdentifier(comPort);
y lanza un NoSuchPortException.
Enumerar los puertos serie usando esto no produce nada.
Enumeration ports = CommPortIdentifier.getPortIdentifiers();
String portArray[] = null;
while (ports.hasMoreElements()) {
CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
System.out.println(port.getName());
}
He comprobado los puertos serie están disponibles por lo que en este punto me pregunto si las bibliotecas nativas simplemente se rompen para Windows 7 64 bits.
Alguien ha utilizado con éxito RXTX 2.2pre2 bajo Windows 7 64 bits?
sección de código erróneo en el 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;
}
}
tanto 'SerialControl' como CommPortIdentifier # getPortIdentifiers() 'funcionan desde Eclipse y la línea de comando – GrahamA
Un poco de seguimiento para las personas que pueden encontrar esto, mis proyectos fueron importados de un entorno Windows XP, reconstruyéndolos en Windows 7 parecen tener corregido sea cual sea el problema. – darkhelmet