2016-06-20 22 views
5

Mam aplikację Windows 10 UWP, która może programowo sparować z urządzeniem Bluetooth LE. Po pomyślnym zakończeniu parowania ustanawiane jest również połączenie z urządzeniem.Sposób programowego łączenia ze sparowanym urządzeniem Bluetooth po utracie połączenia w systemie Windows 10 UWP

Jeśli w którymś momencie urządzenie zostanie odłączone, nie będę w stanie odczytać żadnego z parametrów GattCharacteristics z urządzenia LE. Mogę sprawdzić, czy połączenie jest obecne lub nie, ale nie mogę ponownie ustanowić połączenia.

DeviceInformation deviceInfo = await DeviceInformation.CreateFromIdAsync("deviceId", "additionalProperties", "DeviceInformationKind"); 

if(deviceInfo.ConnectionStatus != BluetoothConnectionStatus.Connected) { // re-establish the connection } 

Dzięki.

Odpowiedz

7

Problem

urządzenie Bluetooth LE nie jest przechowywanie informacji wiązania utworzone podczas procesu parowania. Informacje dotyczące wiązania umożliwiają dwóm wcześniej powiązanym urządzeniom zainicjowanie nowych połączeń, jeśli zostały rozłączone.

Windows 10 Rozwiązanie

Używanie in-app pairing APIs, można programowo powiedzieć system do parowania z urządzeniem Bluetooth LE (to brzmi jak już to robi). Aby obejść problem związany z wiązaniem opisany powyżej, należy ustawić DevicePairingProtectionLevel na None. Więc w-app kod parowania może wyglądać tak:

var result = await someDevice.Pairing.PairAsync(DevicePairingProtectionLevel.None); 

Ustawianie DevicePairingProtectionLevel do None informuje system ignorować informacje klejenia i wystarczy spojrzeć na urządzenia dopasowującego.

obwodowego Rozwiązanie

Ewentualnie, jeśli masz dostęp do oprogramowania obwodowych, można ustawić go do zapamiętania informacji wiążących. Wtedy twoje obecne połączenia parujące w systemie Windows 10 powinny działać.

+0

+1 Dziękuję za wyjaśnienie. Ustawienie DevicePairingProtectionLevel na None wydaje się pomóc w dostępie do danych. Chociaż zauważyłem, że w pewnym momencie połączenie zdawało się zanikać. Próbuję sprawdzić spójność. Niestety nie mam dostępu do oprogramowania układowego peryferii, więc będę kontynuował rozwiązanie Windows 10, które wyjaśniłeś powyżej. Dzięki! –

+0

Również nie jestem w stanie ponownie nawiązać połączenia w moim programie. Działa dobrze po wstępnym parowaniu, ale później nie łączy się ponownie. Nie używam parowania w aplikacji, ale jako test zmodyfikowałem kod Scenariusze uniwersalnych sampli Windows 8_PairDevice.xaml.cs, aby używać DevicePairingProtectionLevel.None. Sparowałem urządzenie przy użyciu zmodyfikowanego kodu przykładowego. Po powrocie do mojego programu nadal nie mogłem przywrócić połączenia w późniejszym czasie. Czy to urządzenie DevicePairingProtectionLevel.None jest zapisywane globalnie, aby każdy program mógł później ponownie nawiązać połączenie? – JFar

+0

@JFar Nie jestem pewien, w jaki sposób aktualizacja Kreacji Windows 10 zmienia to (spodziewam się, że będą w nim jakieś aktualizacje BT), ale myślę, że 'DevicePairingProtectionLevel.None' jest globalna. Możliwe, że urządzenie peryferyjne, z którym próbujesz się połączyć, nie jest reklamą jako możliwe do połączenia - czy widzisz je na innym urządzeniu? – Carter