import javax.comm.*; import java.util.*; import java.io.*; public class SerialPortReader extends SerialPortHandler implements SerialPortEventListener { protected BufferedReader reader; public SerialPortReader(String portName){ super(portName); try { // SerialPortEvent を受け取るためのリスナの登録 port.addEventListener(this); } catch(TooManyListenersException ex){ ex.printStackTrace(); System.exit(1); } // Data Available イベントを受け取るようにする port.notifyOnDataAvailable(true); try { // 入力用の Reader を生成 reader = new BufferedReader( new InputStreamReader(port.getInputStream())); } catch (IOException ex){ ex.printStackTrace(); System.exit(1); } } // SerialPortEvent 処理ルーチン public void serialEvent(SerialPortEvent event) { switch(event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: // Data Available 以外のイベントは処理しない break; case SerialPortEvent.DATA_AVAILABLE: // Data Available の処理 String buffer = null; try { while (reader.ready()) { // データの読み込み buffer = reader.readLine(); // 標準出力への出力 System.out.println(buffer); } } catch (IOException e){} break; } } public static void main(String[] args){ SerialPortReader portReader = new SerialPortReader(args[0]); } }