Я пишу приложение UWP, я использую метод BluetoothLEAdvertisingWatcher для захвата рекламы с BLE-устройств вокруг.Это все работает нормально, и я могу создать список устройств, захватив BluetoothLEAdvertiseReceivedEventArgs ..... как показано ниже
private async void LockerAdv_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
{
ServiceUuidsFound += args.Advertisement.ServiceUuids.Count;
Adverts.Add(args);
Однако я хочу захватить UUID ServiceData, переносимых в рекламных данных (в нашем случае0x180f для сервисных данных батареи и 0xb991 для наших собственных сервисных данных).
Если я фиксирую рекламу и проверяю Advertising.ServiceUuids.Count, как показано выше, счетчик всегда равен нулю, хотя я знаю, что есть два ServiceDataПрисутствующие UUID и приложения, такие как приложение Nordic nRF, находят их и отображают.
Кроме того, если я использую отладчик, чтобы остановить выполнение и исследовать объект Advertising.ServiceUuids, то они, по-видимому, не были захвачены и, безусловно, недоступны.как видно ниже: Ссылка на скриншот .
Я пытался использовать
ScanningMode = BluetoothLEScanningMode.Active;
и
ScanningMode = BluetoothLEScanningMode.Passive;
, и это не имеет значения.
В конечном итоге я хочу получить ServiceData из рекламных данных.а поскольку он содержит полезные данные для нашего приложения, но если Windows даже не сообщит о существовании идентификаторов UUID, то я уверен, что не могу получить данные, связанные с ним !!
Итак, что мне нужнознаете, я что-то делаю не так?это ограничение Windows 10 (я использую самую последнюю версию)?или это может быть проблема с Dell Optiflex, который я использую?
Любая помощь будет с благодарностью получена