为什么我不能配对我的BLE设备?

时间:2018-05-22 06:49:20

标签: c# winforms bluetooth-lowenergy

这是我的配对代码。

var Name = listBox1.SelectedItem as BluetoothLEDeviceDisplay;
          DevicePairingResult result = await Name.DeviceInformation.Pairing.PairAsync();
          updateUI("Paired.");

我设置了我的"姓名"发现我的设备。

private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
    {

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

    }

当我尝试配对BLE设备(rfduino)时。我收到错误"<Name>5_1 is null"。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我相信您不必配对您的设备。 大多数(如果不是所有)Ble-devices都不需要配对,除非你想要一个用于输入pin-number的配对对话框。

你的代码毫无意义。
BluetoothLEDeviceDisplay是一个单独的类,包含对象和枚举,便于显示, 用于一些UWP示例。
它不是你的Ble-device!
因此,作为所选项目的名称将始终为空 如果您已将此类添加到项目中,请使用自定义配对:

DeviceInformationCustomPairing customPairing = bleDeviceDisplay.DeviceInformation.Pairing.Custom;
                DevicePairingKinds ceremoniesSelected = DevicePairingKinds.None | DevicePairingKinds.ProvidePin;
                DevicePairingProtectionLevel protectionLevel = DevicePairingProtectionLevel.None;
                customPairing.PairingRequested += new TypedEventHandler<DeviceInformationCustomPairing,
                                                      DevicePairingRequestedEventArgs>(CustomPairing_PairingRequested);
                DevicePairingResult result = await customPairing.PairAsync(ceremoniesSelected,
                                                   protectionLevel);                


        private void CustomPairing_PairingRequested(DeviceInformationCustomPairing sender, DevicePairingRequestedEventArgs args)
        {
            //this is where your pin goes.
            //windows requires at least a "0".
            args.Accept("000000");//123456
        }

我在Windows 10创建者更新之前使用过这个,但之后再也没有了。 看看我的Github示例,让你无需配对: https://github.com/GrooverFromHolland/SimpleBleExample_by_Devicename