Windows 10蓝牙低功耗连接c#

对于一个项目,我需要使用C#从Windows 10上的蓝牙设备获取一些数据.我对蓝牙API不太熟悉,无法弄清楚为什么以下不起作用:使用BluetoothLEAdvertisementWatcher我搜索广告,工作正常.我确实从设备接收广告(本地名称适合...

对于一个项目,我需要使用C#从Windows 10上的蓝牙设备获取一些数据.我对蓝牙API不太熟悉,无法弄清楚为什么以下不起作用:

使用BluetoothLEAdvertisementWatcher我搜索广告,工作正常.我确实从设备接收广告(本地名称适合)以及它的ServiceUuids.接下来,我尝试使用与广告一起收到的BluetoothAddress连接到设备:

private async void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, 
                    BluetoothLEAdvertisementReceivedEventArgs eventArgs)
{
    ulong blAdress = eventArgs.BluetoothAddress;
    BluetoothLEDevice blDevice = await 
         Windows.Devices.Bluetooth.BluetoothLEDevice.FromBluetoothAddressAsync(blAdress);
}

但是,这样做会导致异常:

Element not found. (Exception from HRESULT: 0x80070490).

这是从设备读取数据的正确方法吗?是否有其他选项可用于从服务中读取数据?在Windows中手动配对设备实际上不是一个选项,似乎也失败了.

/编辑1:我检查设备的本地名称,以确保我只尝试连接到正确的名称.所以我想连接到这个特定的设备有问题,但我仍然不知道如何解决这个问题.服务数据在iOS上成功读取,因此应该可以.

解决方法:

在MS修复此问题之前,我发现连接到BLE设备的唯一可靠解决方案是向注册表询问配对的BLE设备列表,并将广告中的蓝牙地址与配对设备的注册表列表进行比较.我的经验是,当在未配对的设备上调用FromBluetoothAddressAsync时,Windows会抛出异常并杀死观察者线程.我有一些C代码,我很乐意分享它读取注册表并创建配对的BLE设备列表.

希望MS能像苹果那样花时间全力支持BLE.

本文标题为:Windows 10蓝牙低功耗连接c#

基础教程推荐