Noble - Window平台NodeJs蓝牙BLE开发库
背景
我和我的团队曾经开发过一款基于蓝牙连接的智能家居产品,但由于市场的原因,这个产品和项目已经停止了。最近,想用手上剩下的存货做一些使用电脑与硬件连接应用实验。
然后发现在电脑平台下进行蓝牙开发,远远没有在 Andorid / iOS 上简单。主要问题如下:
- 蓝牙硬件
我所使用的开发电脑并没有蓝牙,于是我在网上买了一个USB蓝牙适配器,但收到货以后,装上后的确是免驱动的,可以传文件,连接蓝牙耳机,但却不能和我的设备进行通讯。搜索了一下资料,发现 Window 自带的蓝牙开发比较复杂,对于没 Window 开发经验的我,Window 蓝牙那套 Api 简直天书一样,到这里是第一次放弃。 - Linux / MacOS 的 Gatttool 工具
后来有一段时间使用 Ubuntu 做开发。然后无意中发现那个 USB蓝牙适配器在 Ubuntu 下也是免驱的,然而系统有一个hcitool
的工具,可以比较轻松的完成与蓝牙设备的搜索、连接、传输数据。并且使用pygatt
库可以完成我的大部分需求,但是,在 Window 下并没有这个工具,而且,使用 Python 编写 GUI 也不是太方便,使用 Web 作为 GUI,又涉及到部署,不方便转移,到这里,我完成了设备的指令代码封装就又一次搁浅了。 - noble 再三尝试
Node.js 有一个库叫 Electron,可以通过 JavaScript、HTML、CSS 比较简单的构建跨平台的桌面应用。所以想如果能用 Node.js 去完成这个需求,那也是不错。于是就找到了 noble 这个库。然而,这个库在 Window 上也是没能简单的使用,却在树莓派上成功安装了。这由回到了上面的问题,不能做成桌面应用,就不大方便了,于是再一次搁浅。
新进展
最近有新的需求,需要使用 Electron ,于是最近有研究一下 Node.js,然后又开始心痒痒去研究下这个 noble 库。然后发现之前在 Window 平台上安装,并没有按照它的介绍先去安装依赖以及替换 USB 蓝牙适配器的驱动,所以才会造成安装失败。
然后经过我仔细看说明,然后尝试了一番,终于可以完成 noble 的安装,以及能正常使用。以下是一个搜索的 Demo:
图中可以看到,可以正常使用 noble 搜索到我附近的设备,其中 Upots 是我的设备,另外一个是手上的小米手环3。
依赖安装
noble 在 Linux 和 MacOS 上的安装还是比较简单的,所以可以参考 noble/github 上的介绍就可以了。以下着重演示以下 Window10 下的依赖安装和驱动替换。
首先,我们需要安装的是 node-gyp / github。
在 WIndow 下安装,需要先使用管理员权限打开 powershell 或者 CMD命令行工具,这里推荐使用 powershell。打开后,输入以下命令:
npm install --global --production windows-build-tools
等待安装完成后即可。
然后,我们需要继续安装 (node-bluetooth-hci-socket / github)[https://github.com/noble/node-bluetooth-hci-socket#windows] 库,在安装之前,我们需要先替换我们的 USB蓝牙适配器驱动。这里要注意的是,当我们替换掉驱动以后,我们就不能在 Window 设置里面使用蓝牙了,如果想要恢复,可以通过 设备管理器-打开设备-更新驱动
把驱动替换回来。
替换驱动我们需要使用一个 Zadig 的工具,下载后,打开软件,然后选择 Option - List All Devices
,再在下拉菜单中选中我们的设备,我这款绿联的USB蓝牙适配器的名称是 CSR8510 A10,关于这个蓝牙的名称,可以在 设置 - 蓝牙和其他设备
中查看。
选择好以后,选择 Reinstall Diver
,等待片刻即可。
完成上面的替换驱动操作后,再使用下面的代码安装 node-bluetooth-hci-socket 即可:
npm install bluetooth-hci-socket
最后,我们再把 (noble / github)[https://github.com/noble/noble] 安装好即可:
npm install noble
测试
接下来,我们可以测试一下我们的安装和配置是否成功。scan.js / tigoe github 这是在 Github 上的一个 noble 扫描设备的 Demo,可以下载这个程序,测试一下,如果安装正确,就能看到能搜索出来我们周边的蓝牙设备。
后续
到这里为止,我仅仅是完成了这个库的配置和基本的搜索测试,接下来,将继续研究一下内容:
- 连接设备
- 发送指令
- Electron 结合开发桌面应用
参考资料
tigoe/BluetoothLE-Examples
noble/noble
nodejs/node-gyp
noble/node-bluetooth-hci-socket
Noble - Window平台NodeJs蓝牙BLE开发库相关推荐
- 命令行 蓝牙_Noble - Window平台NodeJs蓝牙BLE开发库
背景 我和我的团队曾经开发过一款基于蓝牙连接的智能家居产品,但由于市场的原因,这个产品和项目已经停止了.最近,想用手上剩下的存货做一些使用电脑与硬件连接应用实验. 然后发现在电脑平台下进行蓝牙开发,远 ...
- Android 蓝牙BLE开发详解
Android 蓝牙BLE开发详解 由于年初接手了个有关蓝牙BLE的项目,开始了对蓝牙ble的学习,经过长时间的慢慢学习(学得太慢,太拖了),终于了解了该怎么写蓝牙BLE,现在就给大家分享一下. 一. ...
- 微信小程序蓝牙BLE开发——关于进制转换(四)
微信小程序蓝牙BLE开发--进制转换 这段时间开发共享设备,对接蓝牙BLE设备通信协议,过程中用到一些进制转换, 记录下方便使用. 有些参考大神们,感谢分享. 文章目录 微信小程序蓝牙BLE开发--进 ...
- 微信小程序蓝牙BLE开发实战——案例(二)
微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...
- Android蓝牙BLE开发
最近正在研究Android的蓝牙BLE开发学习,以下是自己做的个人总结 1.1何为BLE? 首先得说明什么是低功耗蓝牙BLE,BLE的全称为Bluetooth low energy(或称Blooth ...
- Android低功耗蓝牙(BLE)开发(二)
在上一篇文章Android低功耗蓝牙(BLE)开发(一)中我们了解了BLE的相关概念,这里我们来实际用代码演示安卓进行BLE连接和通讯的功能.本文代码基于Android5.0以上(API 21) 1. ...
- Android蓝牙BLE开发(一)-基本原理
公司有需求要做蓝牙BLE传输,经查阅后发现关于BLE开发的知识还真不多.对于BLE开发的同学来说,我的建议是先快速了解一下BLE的基本原理,磨刀不误砍柴工. 什么是BLE BLE全称Bluetooth ...
- 经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID
经典蓝牙和低功耗蓝牙BLE的区别 蓝牙大致被认为是1.0 2.0 3.0 4.0版本,不过现在已经不再用版本号区分蓝牙了,蓝牙1.0~3.0都是经典蓝牙,在塞班系统就已经开始使用了.而蓝牙4.0开始就 ...
- send函数 获得已发送数据长度_蓝牙BLE开发1--起因与回调函数
1 起因 笔者在开发蓝牙芯片CC2540,试图取实现大量数据的BLE透传功能,在认真学习了蓝牙4.0协议标准以及TI提供的SDK说明,我总结了两个发送函数,以及两个接收函数的位置. 两个发送函数包括 ...
最新文章
- 万字长文爆肝 DNS 协议!
- nginx win 启动关闭_windows下Nginx启动、关闭、重启bat工具
- 7秒钟的记忆?Facebook提出DL新算法,东南大学90后博士新作
- C++ 实现高精度的计算
- 数据结构:表达式之中缀转后缀
- 企业项目开发--企业中的项目架构以及多环境分配(2)
- c/s 自动升级(WebService)
- the little schemer 笔记(7)
- json类的解析,调试实例
- Axure RP使用攻略--动态面板的用途(8)
- 最大素数有用吗?安全上网就靠它
- OC 应用跳转QQ私聊界面或者申请加群
- 一加8渲染图曝光:后置三摄/五种配色可选
- 分享两条关于Eclipse Perl插件EPIC的tips吧~
- CSS样式设置语法全解,样式优先级、值和单位、字体、文本、块级元素,行内元素,替换元素、非替换元素、display、float、position、table、li、光标、边距边框、轮廓、颜色背景
- OCS:运营商制胜3G的关键
- zabbix监控nginx的状态
- 【Docker Desktop】Neo4j
- 格式化的硬盘能恢复吗 硬盘格式化以后能恢复吗
- TexturePacker纹理打包打方法及技巧
热门文章
- 资金互助社业务学习园地(一) 灵活运用通知储蓄存款
- board在java是什么意思_Java 大白话讲解设计模式之
- 杭州电子科技大学acm---2009
- 第1章Android的系统介绍
- 最实用的深度学习教程 Practical Deep Learning For Coders (Kaggle 冠军 Jeremy Howard 亲授)
- Android 上手机跟机顶盒应用开发的区别
- HDUOJ 6575 Budget
- 数据结构-矩阵-三角矩阵(Java语言)
- 爬取链家二手挂单房屋 - 匹配百度地图API坐标 - python出地图【2】(end) echarts调用百度地图画自己喜欢的底图,最终python出地图
- 感恩美文:生命中总有一些人值得感恩