读取串口返回数据

179 阅读1分钟

使用了hutool 的读取流,直接进程死掉

之后又试了几种流的读取方法,都是会进程死掉

rxtx java 第一个example 给的读流方法,

image.png rxtx.qbang.org/wiki/index.…

有问题,读不全

byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
return new String(buffer);

第二个例子给的读取流方法可以读全,并且处理了串口数据【换行】结尾。 rxtx.qbang.org/wiki/index.…

正确读法

private String readInputStream1() throws IOException {
    byte[] buffer = new byte[1024];
    int data;
    try {
        int len = 0;
        while ((data = inputStream.read()) > -1) {
            if (data == '\n') {
                break;
            }
            buffer[len++] = (byte) data;
        }
        String readData = new String(buffer, 0, len);
        return readData;
    } catch (IOException e) {
        log.error(e.getMessage(),e);
        //断开串口
        serialPort.close();
        inputStream.close();
        outputStream.close();
        availableSerialPorts = new HashSet<>();
    }
    return "";
}