蓝牙LE代码在Windows 8.1和10上的行为有所不同

时间:2015-08-24 16:21:13

标签: bluetooth windows-10

我正在使用微软推出的蓝牙低功耗(BLE)API和Windows 8,即BluetoothGATTxxx功能。

我的代码在Windows 8.1上运行良好,但我发现在8.1和Windows 10之间BluetoothGATTSetDescriptorValue的行为有所不同。

方案如下:

  1. 将设备与Windows界面配对。
  2. 通过调用BluetoothGATTSetDescriptorValue找到它并启用数据通知,将ClientCharacteristicConfiguration的字段'IsSubscribeToNotification'设置为true。
  3. 注册回调以接收新值(我尝试先注册回调,但效果不佳)。
  4. 每次从设备发送新数据时都会调用回调。
  5. 一切都很好。现在,如果我关闭和打开设备,然后重复步骤2到4,它将在Windows 8.1上正常工作,但在Windows 10上不能正常工作:

      

    BluetoothGATTSetDescriptorValue返回0x80070572,即   HRESULT_FROM_WIN32(ERROR_NO_USER_SESSION_KEY)。

    实际上,这意味着用户每次关闭设备时都必须删除配对并重做它。

    由于设备具有一些电源管理功能,并且如果它保持闲置太长时间,它将自动关闭,从而使问题变得更糟。如果我不希望用户每次想要使用设备时删除/重做配对,我似乎需要保持活着!

    还有其他人遇到过这个问题吗?我在这里和网上尝试了几次搜索,但没有运气。一种解决方案是以编程方式强制进行新的配对,并且由于没有API,因此这将是一个丑陋的黑客攻击。我绝对不想走那条路......

0 个答案:

没有答案