2012年6月3日日曜日

パソコン側のプログラム作成:送信:Bluetooth SPP

Bluetooth でシリアル通信するためのでパソコン側のプログラムを作成しようと思う。
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 件のコメント:

コメントを投稿