2016-06-20 19 views
5

Ho un'app UWP di Windows 10 che è in grado di eseguire l'accoppiamento con una periferica LE bluetooth a livello di programmazione. Una volta eseguita l'associazione, viene stabilita anche una connessione al dispositivo.Come connettersi al dispositivo Bluetooth accoppiato in modo programmatico una volta che la connessione è andata persa in Windows 10 UWP

Se a un certo punto, il dispositivo viene disconnesso, non sono in grado di leggere alcuno dei GattCharacteristics dal dispositivo LE. Sono in grado di verificare se la connessione è presente o meno ma non riesco a ristabilire la connessione.

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

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

Grazie.

risposta

7

Il problema

dispositivo Bluetooth LE non memorizza le informazioni di legame creato durante il processo di accoppiamento. Le informazioni di legame consentono a due dispositivi precedentemente accoppiati di avviare nuove connessioni se sono state disconnesse.

Windows 10 Soluzione

Utilizzando il in-app pairing APIs, di programmazione è possibile dire al sistema di accoppiamento con il dispositivo Bluetooth LE (suona come si sta già facendo questo). Per ovviare al problema di incollaggio descritto sopra, è necessario impostare DevicePairingProtectionLevel su None. Così il vostro codice di associazione in-app potrebbe sembrare:

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

Impostazione del DevicePairingProtectionLevel-None dice al sistema di ignorare le informazioni di legame e basta guardare per un dispositivo di corrispondenza.

La soluzione Peripheral

In alternativa, se si ha accesso al firmware della periferica, è possibile impostarlo per ricordare le informazioni di legame. Quindi le tue attuali chiamate di abbinamento su Windows 10 dovrebbero funzionare.

+0

+1 Grazie per la spiegazione. L'impostazione di DevicePairingProtectionLevel su Nessuno sembra aiutare ad accedere ai dati. Anche se a un certo punto ho notato che la connessione sembrava esplodere. Sto testando per verificare la coerenza. Purtroppo non ho accesso al firmware della periferica, quindi procederò con la soluzione di Windows 10 che hai spiegato sopra. Grazie! –

+0

Anche io non riesco a ristabilire la connessione nel mio programma. Funziona bene dopo il paring iniziale, ma in un secondo momento non si connetterà mai più. Non sto utilizzando l'accoppiamento in-app, ma come test ho modificato il codice Scenario8_PairDevice.xaml.cs di Windows Universal Samples per utilizzare DevicePairingProtectionLevel.None. Ho accoppiato il mio dispositivo usando il codice di esempio modificato. Nel mio programma, non ero ancora in grado di ristabilire la connessione in un secondo momento. DevicePairingProtectionLevel.None è stato salvato globalmente in modo che qualsiasi programma possa successivamente ristabilire la connessione? – JFar

+0

@JFar Non sono sicuro di come l'aggiornamento della creatività di Windows 10 cambi questo aspetto (mi aspetto che ci siano alcuni aggiornamenti BT), ma penso che "DevicePairingProtectionLevel.None" sia globale. Può essere che la periferica a cui stai cercando di ricollegarti non sia pubblicitaria come collegabile: sei in grado di vederla con un altro dispositivo? – Carter

Problemi correlati