Bluetooth通信
2
Bluetoothデバイスをスキャンしたい
2
BluetoothデバイスのスキャンはRuntimeクラスのStartBluetoothScanningメソッドを使用します。
第1引数にはスキャンするデバイスの種類を指定します。指定できる定数は下記の2種類です。
定数
内容
Runtime.BLUETOOTH_CLASSIC
Bluetooth Classicに対応したデバイスをスキャンします。OSの制約により、Bluetooth Classicデバイスの探索は約12秒程で自動的に終了します。
Runtime.BLUETOOTH_LE
BLE(Bluetooth Low Energy)に対応したデバイスをスキャンします。BLUETOOTH_CLASSICと異なり、探索時間の制限はありません。探索終了にはCancelBluetoothScanningメソッドを行う必要があります。
第2引数には探索パラメータ(パラメーター名をキーとした連想配列)を指定します。指定できるキーは下記の1種類です。
キー
内容
CONNECTABLE_DEVICE_ONLY
接続可能なデバイスのみを検索するか否かをbooleanで指定します。デフォルトはtrueです。
Bluetoothデバイスのスキャン開始時にBluetoothScanStartedイベントが発生します。スキャンが終了した場合もしくはキャンセルした場合はBluetoothScanFinishedイベントが発生します。スキャンをキャンセルしたい場合はCancelBluetoothScanningメソッドを実行します。
Bluetoothデバイスが検出されるとBluetoothDeviceFoundイベントが発生します。イベントオブジェクトの子オブジェクトからデバイス情報を取得できます。
取得できる各項目の詳細は以下をご参照ください。
・Bluetoothデバイススキャン時に取得できるデバイス情報
[ サンプルコード ]
Form BleHt_002 { Width = 404; Height = 439; OptionButton OptionButton1 { X = 12; Y = 17; Width = 152; Height = 59; BgColor = $WHITE; OptionItem item[2] { Width = 144; Height = 28; X = 5; Y = 3; } item[0].Title = "Bluetooth Classic"; item[0].Value = "1"; item[1].Title = "Bluetooth Low Energy"; item[1].Value = "2"; Value = 0; } Button Button1 { X = 170; Y = 17; Width = 101; Height = 59; Title = "スキャン開始"; Function OnTouch( e ) { try { /* FlexView初期化 */ ^.FlexView1.ClearRows(); /* デバイスの種類を設定 */ var bttype; if(^.OptionButton1.Value == 0){ bttype = Runtime.BLUETOOTH_CLASSIC; }else{ bttype = Runtime.BLUETOOTH_LE; } /* Bluetooth デバイスのスキャン開始 */ var params = new Array(); /* 接続可能なデバイスのみを検索 */ params["CONNECTABLE_DEVICE_ONLY"] = true; Runtime.StartBluetoothScanning(bttype, params); } catch(e) { //.MessageBox("エラー:" + e.Message); } } } Button Button2 { X = 280; Y = 17; Width = 101; Height = 59; Title = "スキャン停止"; Function OnTouch( e ) { /* スキャンを停止 */ Runtime.CancelBluetoothScanning(); } } Label Label1 { X = 8; Y = 85; Width = 157; Height = 24; Value = "スキャン結果"; } Label Label2 { X = 8; Y = 109; Width = 157; Height = 25; Value = ""; HorizontalAlign = $CENTER; VerticalAlign = $CENTER; BgColor = $FFCCFF; } FlexView FlexView1 { X = 9; Y = 150; Width = 379; Height = 199; FlexRecord FlexRecord1{ FlexLabel fl_DeviceID{ title = "デバイスID"; width = 150; } FlexLabel fl_Name{ title = "デバイス名"; width = 150; } FlexLabel fl_AsBTClassic{ title = "Bluetooth Classicデバイス"; width = 170; } FlexLabel fl_AsBLE{ title = "BLEデバイス"; width = 150; } FlexLabel fl_HasRssi{ title = "RSSI値の有無"; width = 150; } FlexLabel fl_Rssi{ title = "RSSI値"; width = 150; } FlexLabel fl_HasTxPowerLevel{ title = "送信出力値の有無"; width = 150; } FlexLabel fl_TxPowerLevel{ title = "送信出力値"; width = 150; } FlexLabel fl_ServiceUuidList{ title = "サービス一覧"; width = 150; } } Function addDeviceInfo(info) { var row; var r; if(rowCount > 0) { /* FlexViewの情報を取得 */ r = GetRow(); do { /* デバイスIDの比較 */ if(r.fl_DeviceID == info.deviceid) { row = r; break; } } while(r.MoveNext()); } if(row == null) { row = InsertRow(); } /* デバイス情報をFlexViewにセット */ row.fl_DeviceID.Value= info.deviceId; row.fl_Name.Value = info.name; row.fl_AsBTClassic.Value = info.ConnectableAsBluetoothClassic; row.fl_AsBLE.Value = info.ConnectableAsBluetoothLE; row.fl_HasRssi.Value = info.HasRssi; if(info.HasRssi != FALSE){ row.fl_Rssi.Value = info.Rssi; } row.fl_HasTxPowerLevel.Value = info.HasTxPowerLevel; if(info.HasTxPowerLevel != FALSE){ row.fl_TxPowerLevel.Value = info.TxPowerLevel; } row.fl_ServiceUuidList.Value = info.serviceUuidList.length; } Function getSelectedDeviceId() { /* 選択した行を取得 */ var rowPos = ^.FlexView1.RowPosition; if(rowPos < 0) { //.MessageBox("デバイスが選択されていません。"); return ""; } /* 選択行のデバイスIDを取得 */ var row = ^.FlexView1.GetRow(rowPos); var r_deviceId = str(row.fl_DeviceID); return r_deviceId; } } } /* Bluetoothデバイスのスキャンを開始した時に発生するイベント */ Function OnBluetoothScanStarted(e) { BleHt_002.Label2.Value = "スキャン開始"; } /* Bluetoothデバイスのスキャンが終了した場合、またはCancelBluetoothScanningメソッドにより スキャンがキャンセルされた時に発生するイベント */ Function OnBluetoothScanFinished(e) { BleHt_002.Label2.Value = "スキャン終了"; } /* Bluetoothデバイスのスキャンにより、Bluetoothデバイスが検出されたときに発生するイベント */ Function OnBluetoothDeviceFound(e) { BleHt_002.FlexView1.addDeviceInfo(e); }
管理番号:BleHt_002
Biz-Collections Bizの宝箱 トップへ
Biz/Browser HT・Biz/Browser SmartDevice・Biz/Browser AI TIPS集 トップへ