「Qtの基礎 - Bluetooth Low Energy」の版間の差分

ナビゲーションに移動 検索に移動
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 = std::make_unique<QTimer>(this);
       discoveryTimeout.setInterval(10000);  // 10秒のタイムアウト
       discoveryTimeout.setInterval(10000);  // 10秒のタイムアウト
       discoveryTimeout.setSingleShot(true);
       discoveryTimeout.setSingleShot(true);
   
   
       connect(discoveryTimeout.get(), &QTimer::timeout, this, &BLEServiceDiscovery::onDiscoveryTimeout);
       connect(&discoveryTimeout, &QTimer::timeout, this, &BLEServiceDiscovery::onDiscoveryTimeout);
     }
     }
   
   
641行目: 672行目:
   
   
           // コントローラの初期化
           // コントローラの初期化
          controller = std::make_unique<QLowEnergyController>(device, this);
           connectControllerSignals();
           connectControllerSignals();
   
   

案内メニュー