Diese Frage wird meist beantwortet von: Windows UWP connect to BLE device after discoveryWie manuell an ein BlueTooth Low Energy Device in einem WinForm mit C# zu binden?
ich einen benutzerdefinierten Dienst und Prüfung, denn nun schreiben, ein C# .NET Windows Forms unter Windows 10 unter Verwendung von mit einem Bluetooth Low Energy (BLE) Gerät zu verbinden. Ich benutze Framework 4.6.1. Wir verwenden eine TI SmartRF06 Evaluation Board mit einer TI CC2650 BLE Tochterkarte. Ein anderer Entwickler behandelt die Firmware des Boards.
Derzeit mit Methoden ähnlich wie die Referenzantwort above Ich bin in der Lage, eine Verbindung zu einem bereits gebundenen BLE-Gerät herzustellen. Dieses Gerät wurde manuell gebunden und Windows erforderte von mir die Eingabe einer PIN. Da das Gerät keine PIN hat, kann nur durch Eingabe von "0" eine Verbindung hergestellt werden. Sobald ich verbunden bin, kann ich auf diese Weise zu allen GATT-Diensten gelangen und tun, was ich tun muss. So habe ich keine Probleme mit der Suche nach einem Advertising BLE-Gerät.
Das Problem ist, dass ich eine Verbindung zu einem BLE-Gerät herstellen kann, das noch nicht gepaart wurde? Ich bin durch das Netz gegangen und habe viele Beispiele für BLE-Code gefunden, aber nichts, das zeigt, wie die Paarung im Code erfolgt. Nicht sicher, ich brauche es sogar zu paaren, aber Windows scheint nur meine GATT-Dienste auf gepaarten Geräten zu zeigen.
Wenn ich dies tun mit ungepaarten Gerät:
private void BleWatcherOnReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{
var dev = await BluetoothLEDevice.FromBluetoothAddressAsync(args.BluetoothAddress);
// dev.DeviceInformation.Pairing.CanPair is true
// dpr.Status is Failed
DevicePairingResult dpr = await dev.DeviceInformation.Pairing.PairAsync(DevicePairingProtectionLevel.None);
var service = await GattDeviceService.FromIdAsync(dev.DeviceInformation.Id);
}
Das Ergebnis der DPR ist immer gescheitert, wenn wurde Gerät nicht manuell gekoppelt wurde. Was dazu führt, dass die GattDeviceServices
leer ist. Aber ich kann die Werbung und die Eigenschaften des BLE-Geräts bekommen.
Es gibt auch diese Art von Verfahren zu verbinden, aber ich kann nicht herausfinden, wie es zu benutzen:
var prslt = await device.DeviceInformation.Pairing.Custom.PairAsync(DevicePairingKinds.ProvidePin, DevicePairingProtectionLevel.None,IDevicePairingSettings);
IdeviceParingSettings
eine Schnittstelle ist. Nicht sicher, welche Klasse damit zu verwenden ist. Ich denke, das ist, wo ich die PIN von "O" setzen kann, die ich brauchen könnte?
Hat jemand Glück gehabt, ein Pairing zu einem BLE-Gerät in Windows mit C#, wo das BLE-Gerät keine Sicherheit hat. Grundsätzlich sollte es weit offen sein. Ich fühle mich, als ob ich etwas Einfaches vermisse oder das ist einfach nicht möglich (was ich einige Posts gesehen habe, die behaupten, dass das der Fall ist. Die meisten davon waren viele Jahre alt).
Ich habe die Methoden, die in dem erwähnten Beitrag beschrieben sind, ohne jeden Unterschied im Ergebnis versucht.
Jede Hilfe wird geschätzt. Wenn Sie mehr Code benötigen, schauen Sie sich bitte den oben angegebenen Link an, mit dem ich angefangen habe. Ich werde glücklich sein, meinen ganzen tatsächlichen Code zur Verfügung zu stellen, wenn es vielleicht eine Folge gibt, die ich am falschen Ort mache.
Ich habe die Datenblattlinks eingefügt. Wenn diese falsch sind, wäre es großartig, wenn Sie sie beheben würden. – zx485