2016-01-08 13 views
7

Wystąpił problem z ponownym połączeniem z moim urządzeniem BLE.Windows 10 IoT Bluetooth LE

senario który działa - BLE Urządzenie nie jest sparowane - buty Pi i rozpocząć mojej aplikacji, znaleźć to urządzenie BLE, parą i połączyć, odbieranie danych - Boot Pi i rozpocząć mojej aplikacji, to nie będzie powiązać jak jego już w parze łączy ona dane dokładne i odbierające.

senario że nie działa - BLE Urządzenie nie jest w parę lub pary, nie ma znaczenia - Jeśli moja BLE wtyki z powodu utraty zasilania lub poza zasięgiem i zostanie zasilony lub do tyłu w zakresie Pi będzie ponownie i throw: "System.Exception" w mscorlib.ni.dll Brak klucza sesji użytkownika dla określonej sesji logowania. (Wyjątek od HRESULT: 0x80070572)

Gdy próbuję uruchomić ponownie Pi, ten sam komunikat jest generowany, gdy próbuję wykonać: czekają _readCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync (GattClientCharacteristicConfigurationDescriptorValue.Notify);

Jedyne, co działa, to jeśli rozparuję urządzenie za każdym razem, gdy się rozłączy.

Jest to ten sam problem, że ten facet ma: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b98d77f2-bf5e-45fc-9495-1c444b54450e/uwpreconnecting-to-a-ble-csac-device-causes-exception?forum=wpdevelop

Może jest ktoś tutaj, że widział ten sam problem i go rozwiązał?

Dzięki

Odpowiedz

9

Powodem tego konkretnego błędu jesteś otrzymującego jest prawie na pewno, że samo urządzenie BLE nie jest przechowywanie informacji wiązania, który jest negocjowany podczas procesu parowania. Aby istniejące parowanie BLE było ponownie używane, urządzenie musi zachować wiązanie ze swoim partnerem dla przyszłych sesji komunikacyjnych.

Deweloperzy mogą czasami obejść to urządzenie w swoim (nie-Windows) aplikacji na komputery lub telefony, usuwając poprzednie sprzężenia z urządzeniem już zainstalowanym na komputerze lub urządzeniu mobilnym i negocjując nowe powiązanie za każdym razem, gdy widzi Urządzenie Bluetooth. Jest to możliwe, ponieważ wiele urządzeń Bluetooth ma stały PIN, nie wymaga interakcji do parowania i pozostaje w trybie parowania otwartego. Dzięki temu aplikacja tworzy nowe parowanie urządzeń przy każdej komunikacji. Interfejs API Mac BLE również nie wymaga interakcji użytkownika w celu parowania i rozparowania.

Jednak to rozwiązanie nie działa pod interfejsem Windows BLE API, ponieważ w przeciwieństwie do zwykłego interfejsu Bluetooth, interfejs API Bluetooth o niskiej energii wymaga interakcji użytkownika podczas parowania i "parowania". Użytkownik musi wyrazić zgodę na każde sparowanie i musi wyrazić zgodę na każde rozłączenie. To sprawia, że ​​to rozwiązanie zastępcze nie jest uruchamiane z punktu widzenia UX w systemie Windows. Domyślam się, że producent urządzenia BLE nie przechowuje wiązania.

Wpadliśmy na taką sytuację, sami opracowując własny sterownik BLE, aby porozmawiać z naszą własną tablicą BLE; musieliśmy powtórzyć oprogramowanie wbudowane w nasze urządzenie BLE, ponieważ podczas pracy z Mac OS i Androidem przy użyciu metody opisanej powyżej, interfejs API BLE dostępny w Microsoft UWP wymaga interakcji użytkownika podczas ceremonii parowania. W każdym razie wydaje się to właściwym sposobem robienia rzeczy.

+1

Wielkie dzięki, naprawdę przydatna odpowiedź. Miałem problem z wysłaniem danych do modułu HM11 ble (bazującego na cc2540) i otrzymałem wyjątek "od HRESULT 0x80650003". Twój post rozwiązał mój problem, zmieniłem konfigurację z * "Nie potrzebuję kodu PIN" * na * "Auth and bond" * Jest to jedyna przydatna odpowiedź ze wszystkich stron internetowych. –

+0

@ Vladimir Tsykunov Również mam ten problem, czy zmieniłeś konfigurację z "Nie potrzebujesz kodu PIN" na "Auth and bond" na komputerze lub urządzeniu Bluetooth? Dzięki –

+2

Tak, zmieniłem bluetooth na urządzeniu na Auth i Bond, co bardzo pomogło. Ale win10 nadal ma wiele błędów i rozłącza się. Pomocne może być użycie zewnętrznego dongla BT, a także pewne zmiany w rdzeniu BT w aktualizacji Win10 sierpnia @ danielmetlitski –

Powiązane problemy