Windows 7.0的蓝牙低功耗API

17

Windows 8提供了一种API来与蓝牙低功耗(智能)设备进行通信,但在之前的Windows版本中无法使用此API,那么我该如何在Windows 7上与BLE dongle进行通信呢?

我目前正在使用的BLE dongle(BLED112)公开了一个虚拟串口,通过该串口可以使用他们的自定义专有API发送命令,但是如果我在我的软件中实现这个功能,它将不能与其他制造商的dongle一起使用。

那么是否存在一种厂商无关的方式来在Windows 7上与BLE设备通信呢?


不,Win7只能使用专有驱动程序,而且只能与特定的 dongle 兼容。如果您想要标准兼容性,您需要使用 Win8。 - TJD
1
@TJD 我不是不想使用Win8,只是我不能要求所有客户升级。 - Maestro
BLE是相当新的技术,现在才开始在设备/操作系统中推广使用...因此您的老客户可能会没有这个运气。 - TJD
4个回答

4
所以事实证明,有些人已经找到了一个解决方法。基本上的想法是不要使用Windows BLE API(在Windows 7上无效),而是直接与dongle通信。您可以使用WinUSB(用户空间USB驱动程序)来实现这一点。可以使用Zadig安装该驱动程序。
以下是一个示例:

https://github.com/sandeepmistry/node-bluetooth-hci-socket#windows

它有C++代码,可让您发送HCI命令。还有一个Node库,用于如何使用HCI进行更高级别的BLE操作:

https://github.com/sandeepmistry/bleno

我不知道是否有任何非JS库能够做到相同的事情,但无论如何,我认为将Bleno转换为C ++不会很难。


2
BLE是否必需? 大多数BLE设备可能都是双模的,因此在旧版Windows上可以回退到非LE模式。
关于专有API,您看过https://32feet.codeplex.com/吗?
文档显示,大多数适配器的驱动程序可以替换为Microsoft类驱动程序。但是,如果替换不可行,该API也可以使用其他堆栈(取决于堆栈而有一些注意事项[即需要额外的DLL])。
切换到MS堆栈

https://32feet.codeplex.com/wikipage?title=Switching%20any%20dongle%20to%20the%20Microsoft%20stack&referringTitle=Documentation

一般文档。

https://32feet.codeplex.com/documentation


2
我的设备不是双模的,所以BLE是一个硬性要求。否则就会容易得多 :) - Maestro
10
不,实际上大多数BLE设备都不是双模的。你可能会在手机或笔记本电脑中找到双模的中央芯片组,但嵌入式端往往是单模的。 - Chris Stratton
@Muis 我和你当时处于同样的情况,你有什么建议吗? - daniel metlitski

1
据我所知,目前没有办法做到这一点。
  • 自2009年以来,Broadcom的WIDCOMM蓝牙堆栈SDK未进行更新,不支持BLE。
  • 微软的堆栈仅在Windows 8中支持BLE。

您可能可以让开源BTstack工作,但是他们的BLE实现仅“开始”,并且没有关于在Windows上构建它的说明。他们的维基表明,没有人尝试过。

如果有人通过这种方式取得成功,提供如何操作的完整说明将会很棒!


有关此事是否有任何更新?我也需要在Win7上开发BLE。 - daniel metlitski
1
不,我从未让它工作。最终,我使用了一个nRF51 dongle作为BLE-串口转换器。 - Timmmm
@danielmetlitski:找到了解决方案!请看我的另一个答案。 - Timmmm

0
实际上,如果您的PC中的BT芯片组(安装了Windows 7)支持BT 4.0(我的是AR3012),并且您已经安装了适当的BT芯片组驱动程序,则可以通过一些解决方法将BLE(BT低功耗,又称智能)设备与PC配对(我的设备是Microsoft Designer键盘)。我在托盘中点击了BT图标,选择了“添加设备”(键盘处于发现模式),然后点击了发现的键盘图标进行配对,并选择了“输入密码”。然后,在我的Android手机(三星Galaxy S5)的蓝牙/可用设备菜单中,我点击了发现的键盘以进行配对-它向我显示了要在键盘上输入的密码,但我先在PC上输入了此代码,然后在我的键盘上输入-哇!它像魔术一样工作。键盘驱动程序已安装,键盘现在正在工作。 BT设备状态窗口不显示BT连接(这可能是因为系统中没有BT LE枚举器),但一切正常运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接