Разница между классом DeviceWatcher и BluetoothLEAdvertisingWatcher и свойством Timeout - PullRequest
0 голосов
/ 07 мая 2018

Я создал приложение для Windows 10, которое отслеживает определенную рекламу и связывается с ней.

Я использовал пример "BluetoothLE" из "Windows-universal-samples" с небольшими правками. В этом примере они использовали класс «DeviceWatcher».

Но я сейчас пытаюсь добавить таймаут для отключения после определенного периода. Я нашел это свойство: OutOfRangeTimeout, принадлежащее классу BluetoothLEAdvertiseWatcher.

Теперь я запутался, в чем разница между «DeviceWatcher» И «BluetoothLEAdirectWatcher»?

И есть ли способ добавить «тайм-аут» с помощью класса DeviceWatcher?

1 Ответ

0 голосов
/ 07 мая 2018

Существует большая разница между классом "DeviceWatcher" и классом "BluetoothLEAdirectWatcher".
DeviceWacher находится на системном уровне; Это означает, что вы должны сначала добавить устройство в настройках Windows, прежде чем его можно будет найти.
Это также означает, что устройство всегда присутствует в Windows.Devices.Enumeration, если вы не удалите его из настроек Windows.
Наблюдателю за устройством требуется много времени.
Также, чтобы сделать хорошо работающее приложение, вам нужно реализовать все добавленные, удаленные и обновленные события. получать уведомления при добавлении, удалении или обновлении устройства.
Если приложение обрабатывает только добавленное событие, обновление не будет получено, если устройство будет добавлено в систему после завершения начального перечисления устройств.

BluetoothLEAdvertWatcher прослушивает только те устройства BLe, которые отправляют рекламные объявления и находятся в пределах досягаемости.
Если вы активируете scanMode, наблюдатель пытается получить всю информацию об устройстве, такую ​​как имя, возможности, адрес ble, Услуги рекламы полезной нагрузки и т.д ..
При установке пассивного режима scanModeer прослушивает только те устройства, которые используют имя и Ble-адрес, что быстрее.
Время сканирования зависит только от количества доступных устройств и их рекламного интервала. OutOfRangeTimeout ссылается на BluetoothSignalStrengthFilter, который решает, недоступно ли устройство.

Что касается времени на отключение:

API-интерфейсы устройств Bluetooth LE не обеспечивают прямой контроль над подключением к устройству.
Вместо этого, Bleutooth-стек отключит устройство через одну секунду, если на него не осталось ни единой ссылки.
Поэтому вы должны использовать таймер, чтобы установить свое время, закрыть и утилизировать устройство!

...