Java serialport cierra bloques
e comunico con una unidad para controlar una antena de satélite a través de una conexión en serie.
Apertura de una conexión con el dispositivo serie:
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
portIdentifier = CommPortIdentifier.getPortIdentifier(device);
serialPort = (SerialPort) portIdentifier.open(name,
serialPort.setSerialPortParams(baudrate, databits, stopbits, parity);
serialPort.setFlowControlMode(flowMode);
bufferedReader = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
outputStream = serialPort.getOutputStream();
Si la unidad no está disponible, tengo que borrar la transmisión antes de poder enviar nuevos comandos, una vez que el dispositivo vuelva a funcionar. Pero este método claro en el flujo de entrada / salida bloquea si el dispositivo está inactivo. También cerrando las transmisiones o cerrando los bloques SerialDevice.
¿Hay alguna forma de cerrar / borrar estas transmisiones o SerialDevice sin bloquear?
bufferedRead.close(); // blocks until device is up again
outputStream.close(); // blocks until device is up again
serialPort.close(); // blocks until device is up again