对于一个项目,我需要使用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#
基础教程推荐
- C#控制台实现飞行棋小游戏 2023-04-22
- ZooKeeper的安装及部署教程 2023-01-22
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- C#类和结构详解 2023-05-30
- unity实现动态排行榜 2023-04-27
- 一个读写csv文件的C#类 2022-11-06
- C# 调用WebService的方法 2023-03-09
- winform把Office转成PDF文件 2023-06-14
- C# windows语音识别与朗读实例 2023-04-27
- C# List实现行转列的通用方案 2022-11-02