对于一个项目,我需要使用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#
- Unity Shader实现模糊效果 2023-04-27
- Unity3D实现渐变颜色效果 2023-01-16
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- user32.dll 函数说明小结 2022-12-26
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- Oracle中for循环的使用方法 2023-07-04
- .NET CORE DI 依赖注入 2023-09-27
- c# 模拟线性回归的示例 2023-03-14
- 如何使用C# 捕获进程输出 2023-03-10