質問: はじめまして。 早速で申し訳無いのですが、、、、 現在、BLE通信をするアプリケーションを検討しており、そこで利用する Bluetoothモジュールとして、「BLED112」を利用したいと考えています。 やりたいことは、機器と接続して、指定したUUIDに対し書き込み処理を したいのです。機器とのペアリングは6桁のPassKeyを用いるのですが、 Passkeyを利用してペアリングをするサンプルコードがネット上に無く、 困っています。 BLED112 + bglibを利用してアプリケーション作成を経験された方が いましたら、BLE接続フローについてご教授願えればと思い、 投稿させていただきました。 言葉足らずでわかりづらい部分も有ると思いますが、協力をお願いします。 ■開発環境 Windows7、VisualStudio2010 ■開発言語 c# (.NET Framework4.0を希望) ※もしC++等のほうが回答しやすのであればそれでもOKとします ★不足情報がありましたら、指示をいただけると助かります。
回答: BLE接続のフローについてですが、簡単に説明致しますと以下のフローとなります。 1.ペリフェラルがアドバタイズを開始する。 2.セントラルがスキャンし、アドバタイズしているペリフェラルを検索する。 3.セントラルがスキャンした結果より接続したいペリフェラルを選択し、接続を行う。 4.セントラルが接続したペリフェラルからサービスを取得する。 5.セントラルが取得したサービスからキャラクタリスティクスを選択し、読み書きを行う。 PassKey認証ですと、PassKey Entry時に接続となるようですので、3の際に認証を行う必要があることになります。 また、質問内容より今回対象となっているのはセントラルかと思います。 以下のサイトを参考に(ソースは流し読み程度ですが)bglibでのBLED112へのコマンド送信をざっと説明させて頂きますと、 1.BGLibクラスのインスタンスを生成(Bluegiga.BLE名前空間) 2.コマンド送信結果のEventHandlerを設定 (PassKey認証の場合、BLEResponseSMPasskeyEntryかと思います) 3.送信したいコマンドに紐づく生成メソッドを呼び出し、コマンド送信用のbyte配列を受け取る (PassKey認証ですとBLECommandSMPasskeyEntryメソッドが該当するかと思います) 4.SendCommandメソッドにBLED112との接続を行ったSerialPortのオブジェクトと3のコマンド送信用のbyte配列を引き渡す 5.送信結果がSerialPortオブジェクトのDataReceveイベントにコールバックされる 6.コールバック結果を1のParseメソッドへ引き渡す 7.コールバック結果をParseしたものが2で設定したEventHandlerにコールバックされる のようなフローとなるかと思います。 参考サイト: https://github.com/jrowberg/bglib/blob/master/MSVCSharp/BGLib.cs http://plen.jp/playground/wiki/ja/tutorials/advanced/bgapi