Search code examples
javaserial-portrxtx

Java readLine from Com port


is any way to change this java code (read from com port) to read lines ?
eg.

I'm using rxtx com

original method:

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));
    }
}

Solution

  • Assuming inputStream is an InputStream, you could wrap it with an InputStreamReader and wrap that with a BufferedReader (that has a readLine()). Something like,

    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();
        }
      }
    

    or you could possible use with 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();
      }