2016-06-20 16 views
5

Ich habe eine Windows 10 UWP-App, die programmgesteuert mit einem Bluetooth LE-Gerät gekoppelt werden kann. Sobald die Kopplung erfolgreich ist, wird auch eine Verbindung zum Gerät hergestellt.Wie programmgesteuert eine Verbindung zu einem gekoppelten Bluetooth-Gerät herstellen, sobald die Verbindung in Windows 10 verloren ist UWP

Wenn das Gerät irgendwann getrennt wird, kann ich keine der GattCharacteristics vom LE-Gerät lesen. Ich kann überprüfen, ob die Verbindung vorhanden ist oder nicht, aber ich kann die Verbindung nicht wiederherstellen.

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

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

Danke.

Antwort

7

Das Problem

Die Bluetooth LE Gerät speichert nicht die Bindungsinformationen während des Paarungsprozesses erstellt. Verbindungsinformationen ermöglichen es zwei zuvor gekoppelten Geräten, neue Verbindungen zu initiieren, wenn sie getrennt wurden.

Die 10 Windows-Lösung

die in-app pairing APIs Verwenden Sie programmatisch das System mit dem Bluetooth LE Gerät zu koppeln sagen kann (es klingt wie Sie dies bereits tun). Um das oben beschriebene Verbindungsproblem zu umgehen, muss DevicePairingProtectionLevel auf None eingestellt werden. So Ihr In-App-Pairing-Code könnte wie folgt aussehen:

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

die Einstellung DevicePairingProtectionLevel-None das System sagt Bonden Informationen zu ignorieren und suchen gerade nach einem passenden Gerät.

Die Peripherie Lösung

Alternativ, wenn Sie den Zugriff auf die Firmware des peripheren haben, können Sie es die Bindung an Informationen zu erinnern. Dann sollte Ihre aktuelle Paarung unter Windows 10 funktionieren.

+0

+1 Danke für die Erklärung. Wenn Sie DevicePairingProtectionLevel auf None festlegen, scheint dies beim Zugriff auf die Daten zu helfen. Obwohl mir irgendwann auffiel, schien die Verbindung zu funktionieren. Ich teste, um die Konsistenz zu überprüfen. Leider habe ich keinen Zugriff auf die Firmware des Peripheriegeräts. Daher werde ich mit der oben beschriebenen Windows 10-Lösung fortfahren. Vielen Dank! –

+0

Auch ich kann die Verbindung in meinem Programm nicht wiederherstellen. Es funktioniert gut nach der anfänglichen Verschönerung, aber zu einem späteren Zeitpunkt verbindet es sich nie wieder. Ich verwende keine In-App-Kopplung, aber als Test habe ich den Windows Universal Samples-Code Scenario8_PairDevice.xaml.cs so geändert, dass DevicePairingProtectionLevel.None verwendet wird. Ich habe mein Gerät mit dem modifizierten Beispielcode gekoppelt. In meinem Programm konnte ich die Verbindung zu einem späteren Zeitpunkt noch nicht wiederherstellen. Wird DevicePairingProtectionLevel.None global gespeichert, sodass jedes Programm die Verbindung später wiederherstellen kann? – JFar

+0

@JFar Ich bin nicht sicher, wie das Windows 10 Creative-Update dies ändert (ich erwarte, dass es einige BT-Updates darin gibt), aber ich denke, dass 'DevicePairingProtectionLevel.None' global ist. Es kann sein, dass das Peripheriegerät, mit dem Sie eine Verbindung herstellen möchten, nicht als verbindbar angezeigt wird - können Sie es mit einem anderen Gerät anzeigen? – Carter