Javaで作るかVC++で作るか迷うところです。
Android アプリもjava で作るので今回はJavaを選択した。
java でシリアル通信プログラムを作るには、RXTX というライブラリが必要。
RXTX のダウンルードサイト
JavaDocs
ダウンロードしたファイル名:rxtx-2.1-7-bins-r2.zip
ダウンロードしたファイルを解凍する。
eclipseの設定
RXTXcomm.jar はライブラリに追加する。
解答したフォルダの中のWindowsフォルダの中のi368-mingw32フォルダの
rxtxParallel.dll rxtxSerial.dll の2つのファイルをプロジェクトのルートにフォルダにコピーしておく。
Tera Taram で通信が成功したので、シリアルポートの設定を確認しておく
シリアル通信(SPP)の接続確認:Android Bluetooth
ポート:COM3
ボー・レート:9600
データ:8bit
パリティー:none
ストップ:1 bit
フロー制御:none
送信遅延
0ミリ秒/字 0ミリ秒/行
アンドロイド端末にシリアル通信で文字を送るプログラムを書いてみる。
import java.io.*;
import gnu.io.*;
public class SerialTestClass {
public static void main(String arg[]) {
try {
// 使用するCOMポートを取得
CommPortIdentifier comID = CommPortIdentifier.getPortIdentifier("COM3");
// COMポートを開きます
CommPort commPort = comID.open("SerialTestClass", 2000);
// シリアルポートのインスタンスを生成…
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();
out.write('r');
out.write('i');
out.write('g');
out.write('h');
out.write('t');
out.write('\r');
out.write('\n');
// ストリームとCOMポートを閉じる処理
out.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();
}
}
}
アンドロイド側で受信するためにBlutooyhSPPを起動させる。
受信するために一番上の
Real-time mode を選択する。
作成したプログラムを実行する。
うまく送られているようだ。



0 件のコメント:
コメントを投稿