2014-11-26 4 views
1

Я пытаюсь разработать приложение для ПК Win 8.1 для связи с устройством BLE. Я прочитал, что в Win 8 нет никакой функции сканирования для BLE, поэтому я прочитал несколько примеров из MS и попробую просто подключиться к моему устройству с UUID: «A9DA45B4-34F8-C660-591D-F6918B5B988C»Соединение с низкой энергией Bluetooth

Итак, я напишите код на основе ms примеров:

var devices = await DeviceInformation.FindAllAsync(
      GattDeviceService.GetDeviceSelectorFromUuid(new Guid("A9DA45B4-34F8-C660-591D-F6918B5B988C")), new string[] { "System.Devices.ContainerId" }); 

if (devices.Count > 0){ 
    //Do something 
} 

Но этот код всегда возвращает мне список пустых устройств. Более того, я все еще могу подключить свое устройство к Android или iOS.

Может кто-нибудь сказал мне, если это хороший способ подключения BLE?

+0

Какое устройство вы используете, и то, что Bluetooth Stack не использует? – Alexandru

+0

http://sviluppomobile.blogspot.ca/2014/02/ble-for-windows-81-part-i.html гласит: «Когда служба не является стандартной, вам придется использовать GetDeviceSelectorFromUuid (новый Guid (serviceGuid)) и передать пользовательский сервис guid ... »« Вы определили свой собственный, нестандартный сервис или используете стандартный профиль? – Alexandru

+3

Код, который вы используете, должен работать нормально. Я сделал это. Несколько предостережений ... 1. вы должны убедиться, что вы спарены своим устройством BLE с Windows, поиск устройства основан на известных устройствах и не вызывает каких-либо фактических чрезмерных ошибок, 4. Я провел пару дней, пытаясь получить именно такой код, я устал и написал код для получения _all_-устройств, а затем только поиск моего GUID. Этот код работал, но незнакомец , после этого работал и код GUID. –

ответ

4

Перейти к настройкам -> Изменение настроек ПК -> -> ПК и устройства -> Bluetooth.

Убедитесь, что ваше устройство доступно для обнаружения, затем установите соединение.

Попробуйте еще раз, когда вы сделали, если она по-прежнему не работает, попробуйте следующий код:

var devices = await DeviceInformation.FindAllAsync(
     GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.GenericAccess)); 

devices.Count должен вернуть по крайней мере 1.

2

В моем случае были 3 вещи неправы.

Если вы планируете использовать BLE на ОС Windows 8.1, сначала убедитесь, что у вас есть

Bluetooth LE Enumerator 

В диспетчере устройств, если не перейти к ПК/ноутбука производитель и переустановить драйвер, пока не найдете BLE Enumerator в ваш менеджер устройств!

Во-вторых, как сказал Питер Дунихо, соедините устройство вручную, прежде чем делать что-либо еще. Windows не имеет ничего похожего на функции сканирования, поэтому перед тем, как попытаться подключиться, сначала выполните сопряжение.

И, наконец, цитируя Alexandru, Windows BLE похож на «Дикий Запад». Несколько раз, когда я пытался соединить свое устройство с Windows, я получил сообщение «Windows не может спарить ваше устройство, убедитесь, что оно все еще доступно для обнаружения». Чтобы пропустить этот шаг, я увеличиваю время на каждого устройства на моем устройстве (я думаю, что когда Windows пыталась подключить мое устройство после звонка, он думал, что ничего не произошло из-за слишком длинных задержек, и он переходит в спящий режим или отклоняет соединение), поэтому вы должны быть пациент. Во-первых, установите каждый тайм-аут на значение MAX и выключите режимы спящего режима и энергосберегающие режимы.

Кроме того, я могу подтвердить, что следующий код работает отлично:

var devices = await DeviceInformation.FindAllAsync(
     GattDeviceService.GetDeviceSelectorFromUuid(new Guid("A9DA45B4-34F8-C660-591D-F6918B5B988C")), new string[] { "System.Devices.ContainerId" }); 
+1

Могу ли я обнаружить BLE в своем рабочем столе? –

Смежные вопросы