BluetoothLEDevice.FromIdAsync返回null

时间:2016-09-13 22:11:38

标签: bluetooth-lowenergy

这是获取BLE设备的UWP代码。为什么我的某些设备会得到bleDevice == null?我没有找到任何解释这一点的文件。

    var devices = await DeviceInformation.FindAllAsync(BluetoothLEDevice.GetDeviceSelector());
    foreach (DeviceInformation di in devices)
    {
        Debug.WriteLine(di.Name);
        BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(di.Id);

        if (bleDevice == null) {
            Debug.WriteLine("--- NULL ----");
            continue;
        }
        Debug.WriteLine(bleDevice.Name);
    }

我注意到,对于在Windows中的设备管理器中带有STATUS_DEVICE_POWER_FAILURE感叹号的BLE设备,我得到了bleDevice!= null。

对于在设备管理器中没有感叹号的BLE设备,我得到bleDevice == null。

2 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。以前的answer from Chi Lee实际上是好的,但没有详细说明如何做到(对于非专家;-))。

这里是详细的过程(假设您在Microsoft visual studio下有一个c#项目):

  1. 双击项目下的属性字段:这将打开一个新选项卡 select properties
  2. 在打开的标签页中,选择左侧的 应用 ,然后点击 套餐清单... 按钮 pkg manifest button
  3. 打开名为“ package.appxmanifest ”的新标签页。在其中选择 功能 标签
  4. 检查功能下的蓝牙字段 select BT capability
  5. 保存并重新编译项目。
  6. BluetoothLEDevice.FromIdAsync(di.Id)将不再返回null ,前提是您已经配对设备(在您的程序中或在Windows中手动

答案 1 :(得分:0)

您必须在appxmanifest文件中添加蓝牙功能。