アプリの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 件のコメント:
コメントを投稿