连接到Windows 10上的BLE外设

我尝试连接到BLE外设。 首先,我看广告:

watcher = new BluetoothLEAdvertisementWatcher { ScanningMode = BluetoothLEScanningMode.Active }; watcher.Received += WatcherOnReceived; watcher.Start(); 

并在WatcherOnReceivedcallback我尝试创buildBluetoothLEDevice

 public async void WatcherOnReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs btAdv) { BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromBluetoothAddressAsync(btAdv.BluetoothAddress); } 

但是,我总是在WatcherOnReceivedcallback中获取bleDevice == null。 为什么以及如何解决它? 在UWP应用程序中创buildBLE设备的正确方法是什么? 然后,我需要连接到该设备,发现其GATT服务和特征,启用其中一些通知,并读/写其中的一些。

这个问题的答案很简单 – 不要在Windows 10上使用BLE。API不起作用,或者随机行为,完全没有记录。 我喜欢大家谈论物联网正在成为下一次工业革命,微软在6年BLE存在之后还没有开始使用BLE API。

如果希望能够连接到先前不配对的BLE设备,请参阅https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DeviceEnumerationAndPairing中的示例8和9,即使用DeviceWatcher一个蓝牙LE选择器。

否则,您需要首先在系统的蓝牙配对设置中配对,然后才能从FromBluetoothAddressAsync中检索BluetoothLEDevice。

您可以在WatcherOnReceived()检查设备信息,以确保设备是您要连接的设备。 像这样做:

 public async void WatcherOnReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs btAdv) { if (btAdv.Advertisement.LocalName == "SensorTag") { BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromBluetoothAddressAsync(btAdv.BluetoothAddress); } } 

使用您自己的BLE设备名称而不是“SensorTag”。

注意:您需要预先配对您的BLE设备(编程方式像DeviceEnumerationAndPairing样本或PC的设置应用程序,如下图所示。 在这里输入图像说明 )。

我使用connectBlue的BLE传感器模块,它工作的很好!

  1. 创建一个DeviceWatcher。
  2. 添加事件deviceWatcher.Added和deviceWatcher.EnumerationCompleted
  3. 配对设备
  4. 建立你的传感器驱动

不要使用BLE广告! BLE需要配对!