背景

我和我的团队曾经开发过一款基于蓝牙连接的智能家居产品,但由于市场的原因,这个产品和项目已经停止了。最近,想用手上剩下的存货做一些使用电脑与硬件连接应用实验。
然后发现在电脑平台下进行蓝牙开发,远远没有在 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开发库相关推荐

  1. Noble - Window平台NodeJs蓝牙BLE开发库

    背景 我和我的团队曾经开发过一款基于蓝牙连接的智能家居产品,但由于市场的原因,这个产品和项目已经停止了.最近,想用手上剩下的存货做一些使用电脑与硬件连接应用实验. 然后发现在电脑平台下进行蓝牙开发,远 ...

  2. linux终端xwindow,如何从命令行重新启动X Window Server?

    问题描述 如何从命令行重新启动X Window Server? 我真的很想重新启动我的GUI,而不必重新启动系统. 最佳解决方法 长话短说:在systemd系统上(Ubuntu 15.04及更新版本) ...

  3. 群晖使用命令行搭建jellyfin流媒体播放平台

    官网地址:Downloads - Jellyfin: The Free Software Media System 一.套件中心 安装docker 安装docker 安装完成会有一个docker的文件 ...

  4. 手把手教你使用nodejs编写一个【使用远程仓库模板,快速创建项目模块】的cli(命令行)

    目录 实现步骤 初始化cli项目 项目目录 创建交互式命令 拉取远程仓库代码,读取仓库中的模板 拉取远程仓库代码 ora 终端 loading 读取仓库中的模板 将选择的模板复制写入目标项目 Comm ...

  5. 在window的cmd命令行中通过chcp修改代码页--正确显示utf-8字符

    Mt8616的开发板通过adb工具可以在Windows系统的cmd命令行显示出debug信息,但是mt8516开发板的系统上是移植的裁剪的linux系统,也就是里面的文件是utf-8的编码形式,不能正 ...

  6. Android蓝牙bt/ble开发

    参看文档: 蓝牙开发:https://www.jianshu.com/p/4ecc99679451 蓝牙bt/ble区别:https://zhuanlan.zhihu.com/p/59907996 安 ...

  7. 使用C#开发交互式命令行应用

    前言 如果你开发过vue应用,应该对其交互式命令行印象深刻: 它允许你无需任何编程经验,仅需回答问题,就可完成vue应用创建. 虽然作为.NETer,大部分情况下我们不会使用命令行,但是还是希望能用C ...

  8. ganache命令行安装

    ganache有两种使用方法,一种是gui图形化界面,官网下载地址:http://trufflesuite.com/ganache,另一种就是命令行,下面介绍命令行的使用方法,使用ganache命令行 ...

  9. 渗透基础——命令行下安装Microsoft .NET Framework

    0x00 前言 在渗透测试中,有些工具的运行(例如高版本的Powershell)需要依赖Microsoft .NET Framework 4.0的环境. 而默认配置下,Win7不支持Microsoft ...

最新文章

  1. 简单html图片轮播_web前端入门到实战:简单的图片轮播
  2. leetcode算法题--掷骰子的N种方法
  3. office插入常见数学公式
  4. 创业团队:找对人就成功了90%
  5. matlab 实现多维作图函数(slice)
  6. SpringMVC学习(六)——Spring四种方式整合MyBatis
  7. AndroidManifest.xml介绍
  8. 低开销、简单的网站监控工具Checkless开发者专访
  9. python自动化办公知识点整理汇总_Python自动化办公知识点整理汇总
  10. 为什么Vue不能观察到数组length的变化?
  11. phpstorm编辑器乱码问题解决
  12. linux对于文本的操作,Linux文本文件操作
  13. android sdk更新失败 解决方案
  14. Teamcenter - Index search 找不到相关物件的解决方法
  15. ASP.NET AJAX Programmer's Reference : with ASP.NET 2.0 or ASP.NET 3.5
  16. Ninject.Web.Common,Ninject.MVC3源码分析
  17. 《深入实践Spring Boot》阅读笔记之二:分布式应用开发
  18. 核密度函数图matlab_4.3 描述数据分布:核密度图
  19. 手写分页sql_MyBatis-Plus 分页查询以及自定义sql分页的实现
  20. Illustrator CS6高清原创视频教程全集

热门文章

  1. Resource temporarily unavailable 错误
  2. Tomcat8配置tomcat-users.xml配置
  3. 获取服务端https证书
  4. 变量作用域函数作用域
  5. Java中迭代列表中数据时几种循环写法的效率比较
  6. JAVASCRIPT复制到剪贴板
  7. J2EE项目移植问题二
  8. linux 编译sqlitecpp,编译安装sqlite3数据库
  9. android内存加载dex,安卓8.1版本dex加载流程笔记--第一篇:oatfile,oatdexfile与dexfile...
  10. html权重值_HTML标签权重分值排列