节点-蓝牙-hci-socket
蓝牙 HCI 套接字装入节点.js
注: 目前仅支持 链接, (中文(简体) ), 免费BSD 财务报告和审定财务报表 窗口。 。 。 .
先决条件
注: node-gyp 只有在 npm 无法为您的 OS 版本找到二进制时才需要, 否则将预建二进制 .
链接
- 蓝牙 4. 0 适应器
说明: 页:1 节点-usb 依赖性可能安装失败, 这是好的, 因为它是一个可选的依赖性 。 安装 libudev-dev 通过您的 Linux 发行软件包管理器可以解决问题 .
窗口
这个库需要原始的USB访问蓝牙 4.0 USB适配器,因为它需要绕过Windows蓝牙堆栈.
A 类 温USB 需要驱动程序, 使用 Zadig 工具 用于替换适配器的驱动程序.
警报: 这将使得适配器在 Windows 蓝牙设置中无法使用 ! 滚回原司机那里去: Device Manager -> Open Device -> Update Driver
说明:
- 如果 Zadig 生成的系统休眠点失败, 如果想要使用恢复系统休眠点作为选项, 则应该按照 Zadig 指令选择“ 删除此设备的驱动软件 ” .
相容蓝牙 4.0 USB 适应者
| 名称 | USB 维德 | USB 密码 |
|---|---|---|
| BCM920702 蓝牙 4.0 | 0x0a5c (中文(简体) ) | 0x21e8 (英语) |
| BCM920702 蓝牙 4.0 | 0x0a5c (中文(简体) ) | 0x21f1 (英语) |
| BCM20702A0 蓝牙 4.0 | 0x19ff (英语) | 0x0239 (英语) |
| BCM20702A0 蓝牙 4.0 | 0x0489 (英语) | 0xe07a (韩语) |
| BCM20702A0 蓝牙 4.0 | 0x413c (英语) | 0x8143 (英语) |
| CSR8510 A10 (中文(简体) ) | 0x0a12 (英语) | 0x0001 (英语) |
| 阿苏斯 BT-400 | 0x0b05 (英语) | 0x17 cb (中文(简体) ) |
| 无线蓝牙6235 | 0x8087 (英语) | 0x07da (英语) |
| 无线蓝牙 7260 | 0x8087 (英语) | 0x07dc (英语) |
| 无线蓝牙 7265 | 0x8087 (英语) | 0x0a2a (中文(简体) ) |
| 无线蓝牙 8265 | 0x8087 (英语) | 0x0a2b (英语) |
| 贝尔金BCM20702A0 | 0x050D (英语) | 0x065A (英语) |
| 戴尔精度5530 | 0x8087 (英语) | 0x0025 (英语) |
相容蓝牙 4.1 USB 适应者
| 名称 | USB 维德 | USB 密码 |
|---|---|---|
| BCM2045A0 蓝牙 4.1 | 0x0a5c (中文(简体) ) | 0x6412 (英语) |
| 马维尔·阿瓦斯塔 | 0x1286 (英语) | 0x204C (英语) |
安装
npm install @abandonware/bluetooth-hci-socket
使用量
var BluetoothHciSocket = require('@abandonware/bluetooth-hci-socket');
行动
创建
var bluetoothHciSocket = new BluetoothHciSocket();
设置过滤器
var filter = Buffer.alloc(14);
// ...
bluetoothHciSocket.setFilter(filter);
说明: setFilter 如果 bindRaw 已使用.
捆绑
原始频道
bluetoothHciSocket.bindRaw([deviceId]); // optional deviceId (integer)
用户频道
bluetoothHciSocket.bindUser([deviceId]); // optional deviceId (integer)
要求设备处于电源下状态(sudo hciconfig hciX down) (中文(简体) ).
控制频道
bluetoothHciSocket.bindControl();
是设备向上
查询设备状态.
var isDevUp = bluetoothHciSocket.isDevUp(); // returns: true or false
说明: 必须在后面调用 bindRaw。 。 。 .
开始/停止
开始或停止事件处理 :
bluetoothHciSocket.start();
// ...
bluetoothHciSocket.stop();
说明: 必须在后面调用 bindRaw 或者说 bindControl。 。 。 .
写入
var data = Buffer.from(/* ... */);
// ...
bluetoothHciSocket.write(data);
说明: 必须在后面调用 bindRaw 或者说 bindControl。 。 。 .
活动
数据
bluetoothHciSocket.on('data', function(data) {
// data is a Buffer
// ...
});
错误
bluetoothHciSocket.on('error', function(error) {
// error is a Error
// ...
});
实例
见 示例文件夹 代码示例.
平台说明
链接
强制 Raw USB 模式
卸载 btusb 内核模块 :
sudo rmmod btusb
设定 BLUETOOTH_HCI_SOCKET_FORCE_USB 环境变量 :
sudo BLUETOOTH_HCI_SOCKET_FORCE_USB=1 node <file>.js
免费BSD
禁用默认蓝牙堆栈的自动加载 无怀疑.conf 输入 /usr/local/etc/devd/no-ubt.conf 并重新启动devd(sudo service devd restart) (中文(简体) ).
卸载 ng_ubt 如果已装入内核模块 :
sudo kldunload ng_ubt
操作系统X
禁用 CSR USB 驱动程序
sudo kextunload -b com.apple.iokit.CSRBluetoothHostControllerUSBTransport
禁用 Broadcom USB 驱动程序
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
窗口
强制适配器 USB VID 和 PID
设定 BLUETOOTH_HCI_SOCKET_USB_VID 财务报告和审定财务报表 BLUETOOTH_HCI_SOCKET_USB_PID 环境变量.
USB设备的示例 id: 050d:065a:
set BLUETOOTH_HCI_SOCKET_USB_VID=0x050d
set BLUETOOTH_HCI_SOCKET_USB_PID=0x065a
node <file>.js