Antwort

2

Derzeit kann Windows nur ein GATT-Client sein; Es kann jedoch immer noch auf BLE-Geräten lesen und schreiben, die GATT-Server sind. Es gibt ein paar Schritte zu einem BLE-Gerät in Windows 10.

Berechtigungen

Stellen Sie zunächst sicher zu verbinden, dass Sie die richtigen Fähigkeiten gesetzt haben. Wechseln Sie zu Package.appxmanifest, Registerkarte Capabilities, und aktivieren Sie Bluetooth.

Package.appxmanifest > Capabilities > Turn on Bluetooth

ein BLE Geräte

Wichtiger Hinweis zu finden. Momentan unterstützt Windows 10 keine Verbindung zu eines ungepaarten BLE-Geräts. Sie müssen das Gerät auf der Einstellungsseite koppeln oder die In-App-Pairing-APIs verwenden.

Da das Gerät gepaart ist, gibt es einige Möglichkeiten, ein BLE-Gerät zu finden. Sie können nach Aussehen, BluetoothAddress, ConnectionStatus, DeviceName oder PairingState suchen. Sobald Sie das gesuchte Gerät gefunden haben, verwenden Sie seine ID, um sich mit ihm zu verbinden. Unten ist ein Beispiel das Gerät durch seinen Namen zu finden:

string deviceSelector = BluetoothLEDevice.GetDeviceSelectorFromDeviceName("SOME_NAME"); 
var devices = await DeviceInformation.FindAllAsync(deviceSelector); 

// Choose which device you want, name it yourDevice 

BluetoothLEDevice device = await BluetoothLEDevice.FromIdAsync(yourDevice.Id); 

Die FromIdAsync Methode ist auf das Windows das BLE-Gerät verbinden.

Kommunizieren

Sie aus lesen kann, und durch die folgenden Eigenschaften zu auf einem Gerät schreiben.

// First get the characteristic you're interested in  
var characteristicId = new Guid("SOME_GUID"); 
var serviceId = new Guid("SOME_GUID"); 
var service = device.GetGattService(serviceId); 
var characterstic = service.GetCharacteristics(characteristicId)[0]; 

// Read from the characteristic 
GattReadResult result = await characterstic.ReadValueAsync(BluetoothCacheMode.Uncached); 
byte[] data = (result.Value.ToArray()); 

// Write to the characteristic 
DataWriter writer = new DataWriter(); 
byte[] data = SOME_DATA; 
writer.WriteBytes(data); 
GattCommunicationStatus status = await characteristic.WriteValueAsync(writer.DetachBuffer()); 
+0

Wenn die GATT-Dienste nicht verfügbar sind, sollten Sie eine Kopplung mit dem Gerät durchführen und die DeviceWatcher-API verwenden. Die Leute bei Microsoft arbeiten an einer besseren API, aber im Moment ist dies der Weg, dies zu tun. Weitere Informationen finden Sie hier: http://stackoverflow.com/questions/35420940/windows-uwp-connect-to-ble-device-after-discovery/39040812#39040812 – LanderV