アプリのBlutooyhSPPを起動させて、Command Line を選択して、文字を送る。
おはよう、と入力して送信
うまく送られているようだ。
import java.io.*; import java.util.TooManyListenersException; import gnu.io.*; public class SerialTestClass { public static void main(String arg[]) { try { // 使用するCOMポートを取得 CommPortIdentifier comID = CommPortIdentifier.getPortIdentifier("COM3"); // COMポートを開きます CommPort commPort = comID.open("SerialTest", 2000); if (commPort instanceof SerialPort ) { } // シリアルポートのインスタンスを生成… SerialPort port = (SerialPort) commPort; // シリアルポートの設定 // ボーレート、データビット数、ストップビット数、パリティを設定 port.setSerialPortParams(9600, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); // フロー制御はしない port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); // ストリームを生成して、1文字ずつ送信していきます //OutputStream out = port.getOutputStream(); InputStream in = port.getInputStream(); try { //port.addEventListener(new SerialReader(in)); //port.notifyOnDataAvailable(true); // イベントリスナー登録 port.addEventListener( new SerialReader(in) ); port.notifyOnDataAvailable(true); } catch (TooManyListenersException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // ストリームとCOMポートを閉じる処理 //閉じたら待受状態にならないで終了する //in.close(); //port.close(); } catch (NoSuchPortException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (PortInUseException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (UnsupportedCommOperationException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } public static class SerialReader implements SerialPortEventListener { private InputStream in; private byte[] buffer = new byte[1024]; public SerialReader(InputStream in) { // TODO 自動生成されたコンストラクター・スタブ this.in = in; } @Override public void serialEvent(SerialPortEvent arg0) { int data; try { int len = 0; while ((data = in.read()) > -1) { if (data == '\n') { break; } buffer[len++] = (byte) data; } System.out.print(new String(buffer, 0, len)); } catch (IOException e) { e.printStackTrace(); System.exit(-1); } } } }
0 件のコメント:
コメントを投稿