この質問は、主に次のように回答されています: Windows UWP は検出後に BLE デバイスに接続します
現在、カスタム サービスを作成し、Windows 10 で C#.NET WinForm を使用して Bluetooth Low Energy (BLE) デバイスに接続してテストしています。フレームワーク 4.6.1 を使用しています。TI CC2650 BLEドーター カードを搭載したTI SmartRF06 評価ボードを使用しています。別の開発者がボードのファームウェアを処理しています。
現在、上記の参照回答と同様の方法を使用して、既にバインドされている BLE デバイスに接続できます。このデバイスは手動でバインドされており、Windows では PIN を入力する必要がありました。デバイスには PIN がないため、「0」を入力するだけでデバイスを接続できました。このように接続すると、すべての GATT サービスにアクセスして、必要なことを実行できます。したがって、Advertising BLE デバイスを見つけて手に入れるのに問題はありません。
問題は、まだペアリングされていない BLE デバイスにどのように接続するかということです。私はネットを調べて、BLE コードの例をたくさん見つけましたが、コードでペアリングがどのように行われるかを示すことに固有のものはありません。ペアリングする必要があるかどうかはわかりませんが、Windows はペアリングされたデバイスで GATT サービスのみを表示するようです。
ペアリングされていないデバイスでこれを行うと:
private void BleWatcherOnReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{
var dev = await BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress);
// dev.DeviceInformation.Pairing.CanPair is true
// dpr.Status is Failed
DevicePairingResult dpr = await dev.DeviceInformation.Pairing.PairAsync(DevicePairingProtectionLevel.None);
var service = await GattDeviceService.FromIdAsync(dev.DeviceInformation.Id);
}
デバイスが手動でペアリングされていない場合、dpr の結果は常に失敗します。その結果、GattDeviceServices
空になります。しかし、広告と BLE デバイスのプロパティを取得できます。
このタイプの接続方法もありますが、使用方法がわかりません。
var prslt = await device.DeviceInformation.Pairing.Custom.PairAsync(DevicePairingKinds.ProvidePin, DevicePairingProtectionLevel.None,IDevicePairingSettings);
IdeviceParingSettings
インターフェイスです。どのクラスを使用するかわかりません。ここで、必要になる可能性のある「O」の PIN を設定できると思いますか?
BLE デバイスにセキュリティがない C# を使用して、Windows で BLE デバイスとペアリングできた人はいますか? 基本的には広く開ける必要があります。単純なものが欠けているか、これは単に不可能だと感じています(そうであると主張する投稿を見てきました。それらのほとんどは何年も前のものです)。
上記の投稿に記載されている方法を試してみましたが、結果に違いはありませんでした。
どんな助けでも大歓迎です。さらに多くのコードが必要な場合は、最初に提供したリンクを参照してください。おそらく、場違いなシーケンスがある場合は、実際のコードをすべて提供させていただきます。