C# Bluetooth Lead VertisementWatcher无法与三星手机BLE beacon通信

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三星手机 这个过程确实有效,但非常缓慢,最终会停止工作,甚至阻塞蓝牙协议栈。一段时间后,我将不得不手动关闭和再次打开蓝牙

我正在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服务的代码:

    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);