尝试使用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中使用它们,但是什么也没发现。
答案 0 :(得分:0)
从您对DeviceInformation::CreateWatcher
的使用中可以看出,您拥有可能的最简单的AQS字符串:它仅区分BLE设备,并且存在这种情况的原因是您需要比这更精确的东西。我还看到您要在阵列中列出许多属性。到目前为止,无论您要查找的是哪种配置文件,您都可以收回每台BLE设备。
您的问题有两个主要组成部分: