在我的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设备的通知我做错了什么?
答案 0 :(得分:0)
我终于找到了问题:
使用linux库,它以某种方式自动确定GATT服务正在使用的通知类型。
使用Windows SDK我必须使用GattClientCharacteristicConfigurationDescriptorValue.Indicate
明确指定通知类型。
现在,当我掷出骰子"。
时,事件就会被解雇