如何在Windows UWP应用程序中正确订阅蓝牙低功耗设备的GattCharacteristic.ValueChanged通知(指示)?

时间:2018-01-06 14:20:06

标签: c# uwp bluetooth-lowenergy

在我的Linux机器上,我已成功使用Java Timeular/ZEI和BlueZ订阅TinyB Library蓝牙LE设备。

但是我确实需要Windows 10(1709)的相同功能。我在Visual Studio 2017中使用最新的Windows SDK。

我的目标是订阅GattCharacteristic.ValueChanged活动,因此每当有人滚动骰子时,BTLE设备都会向Windows应用发送通知并致电我的{{1} }。

到目前为止我得到的是:

DiceOrientationChangeHandler

输出如下:

  

找到蓝牙LE设备[ee:ab:17:be:37:20]:已连接

     

Service @ c7e70010-c847-11e6-8175-8c89a55d403c,找到并访问过!

     

发现特征@ c7e70012-c847-11e6-8175-8c89a55d403c   访问!

     

我们可以访问以下特征:无读取指示

     

订阅指示/通知

     

设备现在是:已断开连接

但每当我改变设备的方向时,都没有任何反应。服务uuid​​和特性uuid与我在Linux程序中使用的相同,其中方向更改处理程序正在工作。

片刻之后,最后一条消息将打印到控制台:

  

线程0x2b40已退出,代码为0(0x0)。

订阅蓝牙LE设备的通知我做错了什么?

1 个答案:

答案 0 :(得分:0)

我终于找到了问题:

使用linux库,它以某种方式自动确定GATT服务正在使用的通知类型。

使用Windows SDK我必须使用GattClientCharacteristicConfigurationDescriptorValue.Indicate明确指定通知类型。

现在,当我掷出骰子"。

时,事件就会被解雇