He escrito un programa Java para leer las salidas de mi Arduino a través del puerto serie (utilizando la biblioteca RXTX). Hay un pequeño problema al que me estoy enfrentando.
Arduino escribe continuamente en serie. Pero cada vez, después de ejecutar el programa Java, tengo que reiniciar el Arduino para que el programa vea los valores del puerto serie. De lo contrario no leerá ningún valor.
Espero que esté claro. Necesito saber si hay una manera de arreglar esto. ¿Cómo puedo hacer que mi programa lea los valores de los puertos serie cuando se inicia sin hacer nada a los dispositivos externos?
¡Gracias!
EDITAR Este es el método que inicializará el puerto serie.
SerialPort serialPort;
private static final String PORT = "COM32";
private InputStream input;
private static final int TIME_OUT = 2000;
private static final int DATA_RATE = 9600;
public void initialize() {
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
if (currPortId.getName().equals(PORT)) {
portId = currPortId;
break;
}
}
if (portId == null) {
System.out.println("Could not find COM port.");
return;
}
try {
serialPort = (SerialPort) portId.open(this.getClass().getName(),
TIME_OUT);
serialPort.setSerialPortParams(DATA_RATE,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
input = serialPort.getInputStream();
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (Exception e) {
System.err.println(e.toString());
}
}