Windows 8 公开了一个 API 来与蓝牙低功耗(智能)设备进行通信,但该 API 在以前的 Windows 版本中不可用,那么如何在 Windows 7 上与 BLE 加密狗进行通信?
我目前使用的 BLE 加密狗 (BLED112) 公开了一个虚拟串行端口,您可以通过它使用他们的自定义专有 API 发送命令,但如果我在我的软件中实现这一点,它将无法与其他制造商的加密狗一起使用。
那么有没有一种方法可以与制造商无关的 Windows 7 上的 BLE 设备进行通信?
Windows 8 公开了一个 API 来与蓝牙低功耗(智能)设备进行通信,但该 API 在以前的 Windows 版本中不可用,那么如何在 Windows 7 上与 BLE 加密狗进行通信?
我目前使用的 BLE 加密狗 (BLED112) 公开了一个虚拟串行端口,您可以通过它使用他们的自定义专有 API 发送命令,但如果我在我的软件中实现这一点,它将无法与其他制造商的加密狗一起使用。
那么有没有一种方法可以与制造商无关的 Windows 7 上的 BLE 设备进行通信?
所以事实证明,有些人找到了解决方法。基本上,这个想法是不使用 Windows BLE API(在 Windows 7 上不起作用),而是直接与加密狗对话。您可以使用 WinUSB(用户空间 USB 驱动程序)来实现。可以使用 Zadig 安装该驱动程序。
这是一个例子:
https://github.com/sandeepmistry/node-bluetooth-hci-socket#windows
它具有 C++ 代码,可让您发送 HCI 命令。还有一个关于如何将 HCI 用于更高级别 BLE 的 Node 库:
https://github.com/sandeepmistry/bleno
我不知道是否有任何非 JS 库可以做到这一点,但我认为无论如何将 Bleno 转换为 C++ 并不难。
BLE 是必需的吗?大多数 BLE 设备可能是双模式的,因此您可以在旧版本的 Windows 上回退到非 LE 模式。
关于专有 API,您看过https://32feet.codeplex.com/吗?
该文档建议大多数加密狗的驱动程序可以替换为 Microsoft 类驱动程序。但是,如果替换不可行,API 也可以与其他堆栈一起使用(根据堆栈的一些注意事项[即,需要额外的 DLL])。
切换到 MS 堆栈
一般文件
据我所知,目前没有办法做到这一点。
您也许可以让开源BTstack工作,但他们的 BLE 实现只是“开始”,并且没有在 Windows 上构建它的说明。他们的 wiki 表明没有人尝试过。
如果有人以这种方式取得任何成功,那么有关如何做到这一点的完整说明会很棒!
实际上,如果您的 PC 中的 BT 芯片组(安装了 Windows 7)支持 BT 4.0(我的是 AR3012)并且您已经安装了正确的 BT 芯片组驱动程序,您可以采取一些解决方法来将您的 BLE(BT 低能耗又名智能)设备与您的 PC(我的设备是 Microsoft Designer 键盘)。我点击托盘中的 BT 图标并选择“添加设备”(键盘处于发现模式),然后点击发现的键盘图标进行配对并选择“输入密码”。然后在我的 android 手机(三星 Galaxy S5)上的蓝牙/可用设备菜单中,我点击发现的键盘进行配对 - 它向我显示了在键盘上输入的密码,但我已经在 PC 上输入了此代码,然后在我的键盘 - 瞧!它就像一个魅力。键盘驱动程序已安装,键盘现在可以正常工作。