Winforms 成对可编程器件

Winforms 成对可编程器件,winforms,bluetooth-lowenergy,Winforms,Bluetooth Lowenergy,我将此设置作为发现我的BLE设备(rfduino)的一种方式。它起作用了。当我点击一个按钮时,它会在列表框上显示我的ble设备。但是,在配对过程中我需要帮助。我已经给出了如何使用“PairAsync”方法和“PairingRequested”事件的事件处理程序的示例代码 我给出了如何使用“PairAsync”方法和“PairingRequested”事件的事件处理程序的示例代码 var watcher = new BluetoothLEAdvertisementWatcher();

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

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


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

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); 
      }
    }
    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
        {
        }
    }