12,796
回編集
(→使用例) |
(→使用例) |
||
526行目: | 526行目: | ||
<br> | <br> | ||
==== 使用例 ==== | ==== 使用例 ==== | ||
===== QLowEnergyControllerクラスのインスタンスの生成 ===== | |||
まず、<code>QBluetoothDeviceDiscoveryAgent</code>クラスを使用して、スキャンを実行する。<br> | |||
<br> | |||
次に、接続するデバイスの<code>QBluetoothDeviceInfo</code>クラスのデバイス情報を取得する。<br> | |||
取得したデバイス情報を元に、<code>QLowEnergyController</code>クラスのインスタンスを生成する。<br> | |||
<br> | |||
===== コントローラのシグナル / スロット接続 ===== | |||
最低限必要なシグナルを示す。<br> | |||
* connected | |||
*: デバイスへの接続完了を通知 | |||
* disconnected | |||
*: デバイスとの切断を通知 | |||
* serviceDiscovered | |||
*: 新しいサービスの発見を通知 | |||
* discoveryFinished | |||
*: サービス探索の完了を通知 | |||
<br> | |||
===== BLEデバイスの接続 ===== | |||
connectToDeviceメソッドを実行してBLEデバイスに接続する。<br> | |||
connectedシグナルの受信を待つ。<br> | |||
<br> | |||
===== サービスの探索 ===== | |||
BLEデバイスへ接続後、discoverServicesメソッドを実行してサービスの探索を開始する。<br> | |||
<br> | |||
* serviceDiscoveredシグナルで個々のサービスが見つかる度に通知される。 | |||
* discoveryFinishedシグナルで探索完了が通知される。 | |||
<br> | |||
===== サービスの取得 ===== | |||
createServiceObjectメソッドをを実行して、探索で発見したサービスのQLowEnergyServiceオブジェクトを生成する。<br> | |||
このオブジェクトを使用して、特性 (Characteristic) や ディスクリプタにアクセスできる。<br> | |||
<br> | |||
===== 組み合わせ ===== | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
// BLEのサービス探索を管理するクラス | // BLEのサービス探索を管理するクラス | ||
626行目: | 658行目: | ||
{ | { | ||
// タイムアウトタイマの初期化 | // タイムアウトタイマの初期化 | ||
discoveryTimeout.setInterval(10000); // 10秒のタイムアウト | discoveryTimeout.setInterval(10000); // 10秒のタイムアウト | ||
discoveryTimeout.setSingleShot(true); | discoveryTimeout.setSingleShot(true); | ||
connect(discoveryTimeout | connect(&discoveryTimeout, &QTimer::timeout, this, &BLEServiceDiscovery::onDiscoveryTimeout); | ||
} | } | ||
641行目: | 672行目: | ||
// コントローラの初期化 | // コントローラの初期化 | ||
connectControllerSignals(); | connectControllerSignals(); | ||