Я связываюсь с блоком управления спутниковой антенной через последовательное соединение.
Открытие соединения с последовательным устройством:
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();
Если устройство становится недоступным, я должен очистить поток, прежде чем отправлять новые команды, как только устройство снова запустится. Но этот прозрачный метод для потока ввода/вывода блокирует, если устройство выключено. Также закрытие потоков или закрытие блоков SerialDevice.
Есть ли способ закрыть/очистить эти потоки или SerialDevice без блокировки?
bufferedRead.close(); // blocks until device is up again
outputStream.close(); // blocks until device is up again
serialPort.close(); // blocks until device is up again