使用gatt协议的Windows 10蓝牙通信

时间:2016-04-28 19:25:22

标签: bluetooth win-universal-app windows-10-universal bluetooth-lowenergy

我有多个BLE设备需要与之通信。如何连接到特定设备并与之通信?

在Windows 10中,似乎没有连接方法。

谢谢

2 个答案:

答案 0 :(得分:2)

我认为现在还没有。你需要等到周年纪念更新(希望如此)。在Windows开发人员反馈Uservoice页面https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/7176829-gatt-server-api

上查看此信息
  

GATT Server API将在该更新中供开发者使用,敬请关注

他指出Build 2016中的更新,周年纪念更新

答案 1 :(得分:2)

目前,Windows只能是GATT客户端;但是,它仍然可以读取和写入作为GATT服务器的BLE设备。在Windows 10中,有几个步骤可以连接到BLE设备。

<强>权限

首先,确保您具有正确的功能集。转到Package.appxmanifest,Capabilities选项卡,然后打开蓝牙。

Package.appxmanifest > Capabilities > Turn on Bluetooth

寻找BLE设备

  

重要提示。目前,Windows 10不支持连接   一个未配对的BLE设备。您必须在设置页面中配对设备,   或使用in app配对API。

知道设备已配对,有几种方法可以找到BLE设备。您可以通过Appearance,BluetoothAddress,ConnectionStatus,DeviceName或PairingState找到。找到要查找的设备后,可以使用其ID连接到该设备。以下是按名称查找设备的示例:

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);

FromIdAsync方法是Windows将连接到BLE设备的地方。

<强>沟通

您可以通过以下方式读取和写入设备上的特征。

// 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());