如何配置DeviceInformation.createWatcher()来过滤BTLE服务?

问题描述 投票:0回答:1

尝试使用C ++ / winRT UWP发现蓝牙低功耗设备并应用合理的过滤器。在git hub示例中,代码如下:

    hstring aqsAllBluetoothLEDevices = L"(System.Devices.Aep.ProtocolId:=\"{bb7bb05e-5972-42b5-94fc-76eaa7084d49}\")";

    auto requestedProperties = single_threaded_vector<hstring>
        ({ L"System.Devices.Aep.DeviceAddress", L"System.Devices.Aep.Bluetooth.Le.IsConnectable",
            L"System.Devices.Aep.IsPresent" });

    deviceWatcher = DeviceInformation::CreateWatcher(aqsAllBluetoothLEDevices,
        requestedProperties,                                                   
        DeviceInformationKind::AssociationEndpoint                             
    );

只要我使用上面的内容,我会发现所有直播的BTLE设备;我还发现了一些没有主动广告的设备,因此使用的设备存在一些漏洞

System.Devices.Aep.IsPresent

但是,我想过滤掉遵循某些BTLE健康状况的BTLE设备。这些配置文件有像

GATT - Blood pressure   18100000-0000-1000-8000-00805F9B34FB
GATT - Body composition 181B0000-0000-1000-8000-00805F9B34FB
GATT - Glucose  18080000-0000-1000-8000-00805F9B34FB
GATT - Health thermometer   18090000-0000-1000-8000-00805F9B34FB
GATT - Heart rate   180D0000-0000-1000-8000-00805F9B34FB
GATT - Pulse oximeter   18220000-0000-1000-8000-00805F9B34FB
GATT - Weight scale 181D0000-0000-1000-8000-00805F9B34FB

任何人都知道如何配置deviceWatcher()只报告那些宣传上述服务UUID之一的设备?

我已经尝试在protocolId中使用它们但没有发现任何东西。

uwp bluetooth-lowenergy c++-winrt
1个回答
0
投票

我从你对DeviceInformation::CreateWatcher的用法中看到,你有尽可能最简单的AQS字符串:它只能区分BLE设备,而且这种情况存在的原因是你需要更精确的东西。我还看到你想要在数组中列出许多属性。截至目前,无论是否是您正在寻找的各种配置文件,您都可以恢复每台BLE设备。

您的问题有两个主要组成部分:

  1. 了解所列各种健康概况的正确AQS字符串。如果您没有,则无法调用CreateWatcher或使用其他方法列出通过AQS支持这些配置文件的当前可用设备。为此,如果您使用的是16位ID,则需要调用GattDeviceService.GetDeviceSelectorFromShortId,或者使用GID获取字符串GattDeviceService.GetDeviceSelectorFromUuid
  2. 在您的代码示例中,不清楚#1是否是阻止您的唯一问题,或者是否存在无法充分了解AQS语法以指定所需内容的问题。如果您不知道需要通过AQS搜索的名称,AQS的语法将阻止您。提示提示的快速示例位于页面底部以获取正确的字符串:https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/aep-service-class-ids在您的情况下,您需要做的是使用AND添加所需的OR条件,其中您始终将BLE协议ID组合在一起使用您希望过滤的任何适用的System.Devices.AepService.ServiceClassId值。密切关注AQS的语法。 AQS的更详细的文档在这里:https://docs.microsoft.com/en-us/windows/desktop/search/-search-3x-advancedquerysyntax
© www.soinside.com 2019 - 2024. All rights reserved.