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

ナビゲーションに移動 検索に移動
666行目: 666行目:
* 1度ペアリングされたデバイスは、特別な設定がない限り、自動的に再接続可能になる。
* 1度ペアリングされたデバイスは、特別な設定がない限り、自動的に再接続可能になる。
<br>
<br>
==== 初期設定 ====
==== ペアリングの準備 ====
<code>QBluetoothLocalDevice</code>クラスのインスタンスを生成して、ローカルのBluetoothアダプタを初期化する。<br>
<code>QBluetoothLocalDevice</code>クラスのインスタンスを生成して、ローカルのBluetoothアダプタを初期化する。<br>
<br>
<br>
677行目: 677行目:
これらの処理は非同期で行われており、シグナル / スロットメカニズムを通じて状態の変更が通知される。<br>
これらの処理は非同期で行われており、シグナル / スロットメカニズムを通じて状態の変更が通知される。<br>
そのため、ユーザインターフェースと組み合わせる場合は、各シグナルに応じて適切なUIの更新を行う必要がある。<br>
そのため、ユーザインターフェースと組み合わせる場合は、各シグナルに応じて適切なUIの更新を行う必要がある。<br>
<br>
<syntaxhighlight lang="c++">
#include <QBluetoothLocalDevice>
#include <QDebug>
QBluetoothLocalDevice localDevice;
// シグナルとスロットの接続
connect(&localDevice, &QBluetoothLocalDevice::pairingFinished, [](const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing status) {
    qDebug() << "ペアリング完了";
});
connect(&localDevice, &QBluetoothLocalDevice::pairingDisplayConfirmation, [](const QBluetoothAddress &address, QString pin) {
    qDebug() << "ペアリング確認:" << pin;
});
connect(&localDevice, &QBluetoothLocalDevice::pairingDisplayPinCode, [](const QBluetoothAddress &address, QString pin) {
    qDebug() << "PINコード:" << pin;
});
connect(&localDevice, &QBluetoothLocalDevice::error, []() {
    qDebug() << "エラー発生";
});
</syntaxhighlight>
<br>
<br>
==== ペアリング要求 ====
==== ペアリング要求 ====
リモートデバイスのBluetoothアドレス (QBluetoothAddressクラス) を指定して、<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br>
リモートデバイスのBluetoothアドレス (QBluetoothAddressクラス) を指定して、<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br>
この時、ペアリングモードとして<code>QBluetoothLocalDevice::Paired</code>を指定する。<br>
この時、ペアリングモードとして<code>QBluetoothLocalDevice::Paired</code>を指定する。<br>
<br>
<syntaxhighlight lang="c++">
#include <QBluetoothAddress>
// デバイスのBluetoothアドレスを設定
QBluetoothAddress address("XX:XX:XX:XX:XX:XX");
// ペアリング開始
localDevice.requestPairing(address, QBluetoothLocalDevice::Paired);
</syntaxhighlight>
<br>
<br>
==== ペアリング処理中 ====
==== ペアリング処理中 ====
688行目: 722行目:
<br>
<br>
<code>QBluetoothLocalDevice::pairingDisplayConfirmation</code>シグナルを受信した場合は、ユーザに確認を求めて、<code>QBluetoothLocalDevice::pairingConfirmation</code>メソッドで応答する。<br>
<code>QBluetoothLocalDevice::pairingDisplayConfirmation</code>シグナルを受信した場合は、ユーザに確認を求めて、<code>QBluetoothLocalDevice::pairingConfirmation</code>メソッドで応答する。<br>
<br>
<syntaxhighlight lang="c++">
// ペアリング確認に応答
localDevice.pairingConfirmation(true);  // 承認する場合
localDevice.pairingConfirmation(false);  // 拒否する場合
</syntaxhighlight>
<br>
<br>
==== ペアリング完了 ====
==== ペアリング完了 ====
693行目: 733行目:
<br>
<br>
エラーが発生した場合は、<code>QBluetoothLocalDevice::error</code>シグナルを受信する。<br>
エラーが発生した場合は、<code>QBluetoothLocalDevice::error</code>シグナルを受信する。<br>
<br>
<syntaxhighlight lang="c++">
// ペアリング結果の確認
#include <QBluetoothLocalDevice>
#include <QDebug>
// ペアリング完了シグナルの処理
connect(&localDevice, &QBluetoothLocalDevice::pairingFinished, [](const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing status) {
    switch (status) {
      case QBluetoothLocalDevice::Paired:
          qDebug() << "ペアリング成功:" << address.toString();
          break;
      case QBluetoothLocalDevice::Unpaired:
          qDebug() << "ペアリング解除:" << address.toString();
          break;
      default:
          qDebug() << "不明な状態:" << address.toString();
          break;
    }
});
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
// エラーの確認
// QBluetoothLocalDevice::errorシグナルを受信してエラー発生を検知する
// エラーシグナルの処理
connect(&localDevice, &QBluetoothLocalDevice::error, []() {
    qDebug() << "ペアリングでエラーが発生しました";
});
</syntaxhighlight>
<br>
<br>
==== ペアリング管理 ====
==== ペアリング管理 ====
699行目: 771行目:
<br>
<br>
ペアリングを解除する場合は、ペアリングモードを<code>QBluetoothLocalDevice::Unpaired</code>に指定して<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br>
ペアリングを解除する場合は、ペアリングモードを<code>QBluetoothLocalDevice::Unpaired</code>に指定して<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br>
<br>
<syntaxhighlight lang="c++">
// ペアリング状態の確認
QBluetoothLocalDevice::Pairing status = localDevice.pairingStatus(address);
// ペアリング済みデバイスの取得
QList<QBluetoothAddress> devices = localDevice.connectedDevices();
</syntaxhighlight>
<br>
<br>
==== 組み合わせ ====
==== 組み合わせ ====

案内メニュー