配对BLE设备

时间:2018-05-21 14:48:31

标签: winforms bluetooth-lowenergy

var watcher = new BluetoothLEAdvertisementWatcher();
      watcher.ScanningMode = BluetoothLEScanningMode.Active;
      watcher.Received += OnAdvertisementReceived;
      watcher.Start();
    }

    #region BLE
    private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
    {     

      if (items.Contains(eventArgs.Advertisement.LocalName) == false)
      {
        items.Add(eventArgs.Advertisement.LocalName); 
      }
    }

我将此设置作为发现我的BLE设备(rfduino)的一种方式。有用。单击按钮时,它会在列表框中显示我的ble设备。但是,我在配对过程中需要帮助。

1 个答案:

答案 0 :(得分:2)

我给出了示例代码,说明如何使用“ PairAsync”方法和“ PairingRequested”事件的事件处理程序。

    public async Task Connect(BluetoothLEDevice leDevice, DevicePairingProtectionLevel pairingProtection)
    {
        try
        {
            if (leDevice != null)
            {
                DevicePairingKinds ceremoniesSelected = DevicePairingKinds.ConfirmOnly;

                DeviceInformationCustomPairing customPairing = leDevice.DeviceInformation.Pairing.Custom;
                customPairing.PairingRequested += CustomPairing_PairingRequested;
                DevicePairingResult result = await customPairing.PairAsync(ceremoniesSelected, pairingProtection);
                customPairing.PairingRequested -= CustomPairing_PairingRequested;
            }
        }
        catch
        {
        }
    }




    private void CustomPairing_PairingRequested(DeviceInformationCustomPairing sender, DevicePairingRequestedEventArgs args)
    {
        try
        {
            string deviceID = args.DeviceInformation.Id;

            switch (args.PairingKind)
            {
                case DevicePairingKinds.ConfirmOnly:
                    // Windows itself will pop the confirmation dialog as part of "consent" if this is running on Desktop or Mobile
                    // If this is an App for 'Windows IoT Core' where there is no Windows Consent UX, you may want to provide your own confirmation.
                    args.Accept();

                    Task.Factory.StartNew(new Action(async () =>
                    {
                        await Task.Delay(2000);
                        BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(deviceID);
                        // Write your making connection related code here
                    }));

                    break;
            }
        }
        catch
        {
        }
    }