来自Com端口的Java readLine

时间:2014-08-12 17:02:14

标签: java serial-port rxtx

是否可以通过任何方式更改此java代码(从com端口读取)来读取行?
例如。

我正在使用rxtx com

原始方法:

public void serialEvent(SerialPortEvent event) {
    switch (event.getEventType()) {
        case SerialPortEvent.DATA_AVAILABLE:
            byte[] readBuffer = new byte[10];
            int numBytes = 0;
            try {
                while (inputStream.available() > 0) {                       
                    numBytes = inputStream.read(readBuffer);
                }
            } catch (IOException e) {
                System.out.println(e);
            }
        System.out.println(Arrays.toString(readBuffer));
    }
}

1 个答案:

答案 0 :(得分:2)

假设inputStreamInputStream,您可以用InputStreamReader包裹它,然后用BufferedReader(包含readLine())包裹它。像,

case SerialPortEvent.DATA_AVAILABLE:
  String line;
  BufferedReader br = null;
  try {
    br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
    while ((line = br.readLine()) != null) {
      System.out.println(line);
    }
  } catch (IOException e) {
    e.printStackTrace();
  } finally {
    try {
      br.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

或者您可以使用try-with-resouces

case SerialPortEvent.DATA_AVAILABLE:
  String line;
  BufferedReader br = null;
  try (br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));) {
    while ((line = br.readLine()) != null) {
      System.out.println(line);
    }
  } catch (IOException e) {
    e.printStackTrace();
  }