第8項. Bluetooth機能

Bluetooth機能について説明する。Bluetooth機能は、端末間の通信を行う機能です。Bluetooth機能を使用するためには、build.ymlに以下を追記する必要があります。


capabilities:
  - bluetooth

 

 1. Bluetooth機能が利用できるかを調べる

Bluetooth機能を利用する際に、Bluetooth機能が有効かを調べるために、Rho::BluetoothManager.is_bluetooth_availableメソッドを使用します。

 

Rho::BluetoothManager.is_bluetooth_available # => true or false

  2. Bluetooth機能をOFFにする。

Bluetooth機能をOFFにするためには、Rho::BluetoothManager.off_bluetoothメソッドを使用します。

 

Rho::BluetoothManager.off_bluetooth

 3. Bluetooth機能のデバイス名を取得する。

Bluetooth機能のデバイス名を取得するには、Rho::BluetoothManager.get_device_nameメソッドを使用します。

 

Rho::BluetoothManager.get_device_name # => デバイス名

 4. Bluetooth機能のデバイス名を変更する。

Bluetooth機能のデバイス名を変更するには、Rho::BluetoothManager.set_device_nameメソッドを使用します。

 

Rho::BluetoothManager.set_device_name(name)
# => nameに入れた値に変更する。

  5. Bluetoothセッションの作成を行う

Bluetoothセッションの作成行うには、Rho::BluetoothManager.create_sessionメソッドを使用します。

 

Rho::BluetoothManager.create_session(role, callback_url)

 

roleには、作成する際の権限の値を設定します。設定のできる値は以下となります。


● Rho::BluetoothManager::ROLE_SEVER - サーバとして作成する。
● Rho::BluetoothManager::ROLE_CLIENT ・クライアントとして作成する。
callback_urlには、作成処理のコールバックとして呼び出すアクションを設定します。
コールバック先では以下のパラメータを取得することができます。
● “status” ・作成処理の結果を返す。返る値は以下とする。

  • ・“OK” - 成功
  • ・“ERROR” - エラー発生
  • ・“CANCEL” - 接続のキャンセル

● “connected_device_name” - 接続先デバイス名

 

例; コントローラ


def create_session
  Rho::BluetoothManager.create_session(Rho::BluetoothManager::ROLE_SERVER,
      url_for(:action => :create_session_callback)
end
def create_session_callback
  if @params[“status”] == Rho::BluetoothManger::OK # セッションの作成に成功
    Rho::BluetoothSession.set_callback(@params['connected_device_name'],
       url_for(:action => :session_callback))
  elsif @params{“status” == Rho::BluetoothManager::CANCEL
    puts “cancel create session”
  end
end

 6. クライアント接続を行う

サーバを指定してクライアントとして接続を行うには、Rho::BluetoothManager.create_client_connection_to_deviceメソッドを使用します。

 

Rho::BluetoothManager.create_client_connection_to_device(server_name, callback_url)

 

server_nameには、接続先のサーバ名を指定する。
callback_urlには、接続処理のコールバックとして呼び出すアクションを設定します。
コールバック先では以下のパラメータを取得することができます。


● “status” ・接続処理の結果を返す。返る値は以下とする。

  • ・“OK” - 成功
  • ・“ERROR” - エラー発生
  • ・“CANCEL” - 接続のキャンセル

● “connected_device_name” - 接続先デバイス名

 

例: コントローラ


def create_sessoin_client
  # クライアントとしてBluetooth接続をする。
  Rho::BluetoothManager.create_session(
    Rho::BluetoothManger::ROLE_CLIENT,
    url_for(:action => :create_session_client_callback
  )
end
def create_session_client_callback
  if @params[“status”] == Rho::BluetoothManger::OK # セッションの作成に成功
    Rho::BluetoothSession.set_callback(@params['connected_device_name'],
       url_for(:action => :session_callback))
    # グローバル変数にサーバ名を代入する
    $server_name = @params['connected_device_name']
  elsif @params{“status” == Rho::BluetoothManager::CANCEL
    puts “cancel create session”
  end
end
def client_connection
  # クライアント接続をする
  Rho::BluetoothManager.create_client_connection_to_device($server_name,
    url_for(:action => :client_connection_callback))
end
def  client_connection_callback
  if @params[“status”] == Rho::BluetoothManger::OK # セッションの作成に成功
    Rho::BluetoothSession.set_callback(@params['connected_device_name'],
       url_for(:action => :session_callback))
  elsif @params{“status” == Rho::BluetoothManager::CANCEL
    puts “cancel create connection”
  end
end

 7. 他の端末から発見できる状態にし、他の端末からの接続を待つ

他の端末から発見できる状態にし、他の端末からの接続を待つには、Rho::BluetoothManager.create_server_and_wait_for_connectionメソッドを使用します。
本メソッドを使用するときは、UIがない状態で接続してください。

 

Rho::BluetoothManager.create_server_and_wait_for_connection(callback_url)

 

callback_urlには、他の端末からの接続待ち状態のコールバックとして呼び出すアクションを設定します。コールバック先では以下のパラメータを取得することができます。


● “status” ・接続処理の結果を返す。返る値は以下とする。

  • ・“OK” - 成功
  • ・“ERROR” - エラー発生
  • ・“CANCEL” - 接続のキャンセル

● “connected_device_name” - 接続先デバイス名

 

例: コントローラ


def  server_wait_connection
  Rho::BluetoothManger.create_server_and_wait_for_connection(
    url_for(:action => :server_wait_connection_callback)
end
def  server_wait_connection_callback
  if @params[“status”] == Rho::BluetoothManger::OK # セッションの作成に成功
    Rho::BluetoothSession.set_callback(@params['connected_device_name'],
       url_for(:action => :session_callback))
  elsif @params{“status” == Rho::BluetoothManager::CANCEL
    puts “cancel create connection”
  end
end

8. 現在の接続を取り消す

現在の接続を取り消すには、Rho::BluetoothManager.stop_current_connection_processメソッドを使用します。

 

Rho::BluetoothManager.stop_current_connection_process

 9. 接続後にセッションに対してコールバック処理を設定する

接続後にセッションに対してコールバック処理を設定するには、Rho::BluetoothSession.set_callbackメソッドを使用します。

 

Rho::BluetoothSession .set_callback(connected_device_name, session_callback_url)

 

connected_device_name - 接続しているデバイス名を指定する。
session_callback_url ・セッションに対してコールバックとして呼び出すアクションを設定します。コールバック先では以下のパラメータを取得することができます。


● “connected_device_name” - 接続先デバイス名
● “event_type” - イベントの種類を返します。以下の値のいずれかが入ります。

  • ・Rho::BluetoothManager::SESSION_INPUT_DATA_RECEIVED - データを受け取ったとき
  • ・Rho::BluetoothManager::ERROR - エラーが発生したとき
  • ・Rho::BluetoothManager::SESSION_DISCONNECT ・接続が切れたとき

 

例: コントローラ


def  server_wait_connection
  Rho::BluetoothManger.create_server_and_wait_for_connection(
    url_for(:action => :server_wait_connection_callback)
end
def  server_wait_connection_callback
  if @params[“status”] == Rho::BluetoothManger::OK # セッションの作成に成功
    Rho::BluetoothSession.set_callback(@params['connected_device_name'],
       url_for(:action => :session_callback))
  elsif @params{“status” == Rho::BluetoothManager::CANCEL
    puts “cancel create connection”
  end
end

def session_callback
 
  case @params[“event_type”]
  # データを受け取ったとき
  when Rho::BluetoothSession::SESSION_INPUT_DATA_RECEIVED
    msg = Rho::BluetoothSession.read_string($connected_device_name)
    puts msg
  # エラー発生時
  when Rho::BluetoothSession::ERROR
    puts “error”
  # 接続が切れたとき
  when Rho::BluetoothSession::SESSION_DISCONNECT
    puts “session dis connect”
  end
end

 10. デバイスへの接続を解除する。

デバイスへの接続を解除するには、Rho::BluetoothSession.disconnectメソッドを使用します。

 

Rho::BluetoothSession.disconnect(connected_device_name)

 

connected_deviece_nameには解除するデバイスの名前を指定します。

 11. 接続の状態を取得する。

接続の状態を取得するには、Rho::BluetoothSession.get_statusメソッドを使用します。

 

Rho::BluetoothSession.get_status(connected_device_name)
# => 受信したデータサイズを返します。


戻り値として受信データのサイズを返します。
エラーが発生した場合は、「-1」を返します。
データがない場合は、「0」を返します。
connected_device_nameには、取得したい端末名を設定します。

 12. 送られたデータを読む

送られてきたデータを読み込むには、Rho::BluetoothSession.readメソッドを使用します。

 

Rho::BluetoothSession.read(connected_device_name)
# => 読み込んだデータ(バイト数値の入った配列)を返す。

 

connected_decvice_nameには、読み込みたいデータのデバイス名を設定します。

  13. データを書き込む

データの書き込みを行うには、Rho::BluetoothSession.writeメソッドを使用します。

 

Rho::BluetoothSession.write(connected_device_name, data)

 

connected_device_nameには、書き込み先のデバイス名を設定します。
dataには、書き込みを行うデータを設定します。dataの中身には、バイト数値の配列を設定する必要があります。

 

 14. 送られた文字列を読む

送られてきた文字列データを読み込むには、Rho::BluetoothSession.read_stringメソッドを使用します。

 

Rho::BluetoothSession.read_string(connected_device_name)

 

connected_device_nameには接続先のデバイス名を設定します。
戻り値は、文字列になります。

文字列を送る
文字列を送るには、Rho::Bluetooth.write_stringメソッドを使用します。

 

Rho::Bluetooth.write_string(connected_device_name, data)
# => “OK” or “ERROR”

 

connected_device_nameには接続先のデバイス名を設定します。
dataには書き込みを行いたい文字列を設定します。
戻り値は、”OK”もしくは”ERROR”が返ってきます。

 

注意事項

  • ・Apple端末はApple端末同士でのみ接続することができます。
  • ・BlackBerry端末を任意の端末と接続をするには、BlueToothサーバサービスが動作している端末とのみ接続が可能となります。接続できるデバイスは、シリアルポートプロファイルに対応したもので、デバイスリストに登録されているもののみです。
  • ・iOS以外の端末は、ペアリングをした後に接続をしてください。
  • ・調査中
  • ・BlackBerryのサーバに接続しているときは、他の端末を見ることはできません。
  • ・BlueToothで接続している状態で、別のBlueToothに接続する場合、現在のセッションを閉じる必要があります。
  • ・複数のBlueTooth接続には現在、対応していません。
システム工房エムのサイトへのリンク

住所〒690-0017 島根県松江市西津田3-2-3 TEL.0852-23-8590 FAX.0852-23-8591
Copyright 2008-2010 System Maker M,All right reserved