C# Bluetooth Lead VertisementWatcher无法与三星手机BLE beacon通信
我正在Visual Studio 2017社区上开发一个Windows 10 UWP应用程序 我正在尝试从android和IOS设备读取一些信息。我使用BluetoothLEAdvertisementWatcher监视程序,它查找范围内的有效BLE广告包。然后使用特定的服务Uuid连接到Gatt服务。最后,我阅读了服务附带的特性 这适用于我迄今为止测试过的所有设备,除了两部S7三星手机 这个过程确实有效,但非常缓慢,最终会停止工作,甚至阻塞蓝牙协议栈。一段时间后,我将不得不手动关闭和再次打开蓝牙 每次与三星S7手机进行BLE通信后,我都会遇到以下错误: onecoreuap\drivers\wdm\bluetooth\user\winrt\common\devquerydevpropprovider.cpp(297)\Windows.Devices.bluetooth.dll!1462192B:(调用方:14621514)未找到ReturnHr(15)tid(36d4)80070490元素 onecoreuap\drivers\wdm\bluetooth\user\winrt\common\devquerydevpropprovider.cpp(131)\Windows.Devices.bluetooth.dll!14621555:(调用方:14578E83)未找到ReturnHr(16)tid(36d4)80070490元素 onecoreuap\drivers\wdm\bluetooth\user\winrt\device\bluetoothledevice.cpp(1418)\Windows.Devices.bluetooth.dll!14578E9A:(调用方:14576350)未找到LogHr(8)tid(36d4)80070490元素 下面是我用来连接Gatt服务的代码:C# Bluetooth Lead VertisementWatcher无法与三星手机BLE beacon通信,c#,uwp,bluetooth-lowenergy,windows-10-universal,samsung-mobile,C#,Uwp,Bluetooth Lowenergy,Windows 10 Universal,Samsung Mobile,我正在Visual Studio 2017社区上开发一个Windows 10 UWP应用程序 我正在尝试从android和IOS设备读取一些信息。我使用BluetoothLEAdvertisementWatcher监视程序,它查找范围内的有效BLE广告包。然后使用特定的服务Uuid连接到Gatt服务。最后,我阅读了服务附带的特性 这适用于我迄今为止测试过的所有设备,除了两部S7三星手机 这个过程确实有效,但非常缓慢,最终会停止工作,甚至阻塞蓝牙协议栈。一段时间后,我将不得不手动关闭和再次打开蓝牙
private async void OnAdvertisementReceived(
BluetoothLEAdvertisementWatcher sender,
BluetoothLEAdvertisementReceivedEventArgs args)
{
BluetoothLEDevice bleModule = await BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress);
var gattServicesResult = await bleModule.GetGattServicesForUuidAsync(new Guid("YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"));
if (gattServicesResult.Status == GattCommunicationStatus.Success)
{
foreach (var gattService in gattServicesResult.Services.ToList())
{
if (gattServicesResult.Status == GattCommunicationStatus.Success)
{
GattCharacteristicsResult characteristicsImageID = await gattService.GetCharacteristicsForUuidAsync(new Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"));
if (characteristicsImageID.Status == GattCommunicationStatus.Success)
{
string imageID = null;
foreach (GattCharacteristic gattImageID in characteristicsImageID.Characteristics.ToList())
{
GattReadResult valueImageID = await gattImageID.ReadValueAsync();
IBuffer bufferImageID = valueImageID.Value;
DataReader dataReaderImageID = DataReader.FromBuffer(bufferImageID);
imageID = dataReaderImageID.ReadString(bufferImageID.Length);
}
}
}
}
}
}
导致错误(实际上不是致命的)的行是:
我的问题是,是否有其他人发现这是一个问题,是否有解决办法?(可能需要微软解决BLE实现中的问题)。因此,似乎只有三星S7手机存在此类问题。您的SDK版本是什么?您用来从三星S7手机读取数据的设备是什么?我正在使用Creators Update SDK,这样我就可以连接到Gatt服务,而无需专门与设备配对。所有windows设备都会受到影响(surface、Pavilion笔记本电脑、linx平板电脑),因此似乎只有三星S7手机存在此类问题。您的SDK版本是什么?您用来从三星S7手机读取数据的设备是什么?我正在使用Creators Update SDK,这样我就可以连接到Gatt服务,而无需专门与设备配对。所有windows设备都受到影响(surface、Pavilion笔记本电脑、linx平板电脑)
bleModule = await BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress);