seamless-peripheral
是一个用于创建蓝牙低功耗设备的 Node.js 模块。它是一个简单且易于使用的库,允许您通过输入一个配置对象来创建一个新设备。本篇文章将为您介绍 seamless-peripheral
的使用方法,以及涉及到的一些概念和注意事项。
前置知识
在阅读本文之前,您应该对以下概念和技术有一定的了解:
- Node.js
- npm
- 蓝牙低功耗(BLE)
- 设备角色(central 和 peripheral)
- GATT 服务和特征
- Buffer 对象
如果您对以上概念尚不了解,请先学习相关知识。
安装
在开始使用 seamless-peripheral
之前,您需要安装它。
使用 npm 进行安装:
npm install seamless-peripheral
安装完成后,您就可以在您的项目中使用它了。
使用
创建一个设备
以下是一个最基本的创建设备的示例:
-- -------------------- ---- ------- ----- -- - ------------------------------ ----- ------- - - ----- ------- ---------------- - - ----- ------- ------------ --------- ----------- ----------- ------ ----------------- ------- ------------ -------- -------------- -------------------- - -------------------- -- - ----- - ------------------------- - ---- ------ -------------------------- -- ----- - - - - ----- ---------- - -----------
这个示例创建了一个具有一个通知特征的设备,每秒钟发送一个随机数。让我们仔细看一下这个例子。
在示例中,首先引入了 seamless-peripheral
模块,并定义了一个配置对象 options
。配置对象用于描述将要创建的设备及其属性。
这个对象包含一个 uuid
值和一个 characteristics
数组,每个数组元素都表示一个设备特征。在上述示例中,只定义了一个特征,其 UUID 是 2a37
,具有 notify
属性和读取权限。该特征还定义了一个用于更新特征值的回调函数 onSubscribe
。在回调函数中,它使用 setInterval
定时器来生成随机的特征值,并将其发送至设备。
最后,使用 sp
函数创建一个名为 peripheral
的设备对象。
启动设备
在创建设备后,您需要启动它以便让它与其他设备进行通信。使用以下代码启动设备:
peripheral.startAdvertising()
在上面的示例中,设备将运行并以默认参数(无广播名称)开始广告。
停止设备
要停止设备,请使用以下代码:
peripheral.stopAdvertising()
监听连接状态
使用 on('connect', callback)
方法监听设备连接事件,并在连接到设备时执行回调函数。示例代码如下:
peripheral.on('connect', function (device) { console.log('设备连接:' + device.address) })
监听断开连接事件
类似地,使用 on('disconnect', callback)
方法监听设备断开连接事件,并在设备断开连接时执行回调。示例代码如下:
peripheral.on('disconnect', function (device) { console.log('设备断开连接:' + device.address) })
示例:使用 seamless-peripheral
创建一个心率测量设备
下面我们来看一个完整的示例:使用 seamless-peripheral
创建一个心率测量设备,并通过 GATT 服务来提供心率数据。
首先,让我们定义一个 GATT 服务并为其添加一个用于传输心率数据的特征:
-- -------------------- ---- ------- ----- ---------------- - - ----- ------- ---------------- - - ----- ------- ------------ -------- ---------- ----------- -------- ---------- ------ ---------------- ------------ -------- -------------- -------------------- - -------------------- -- - ----- - ------------------------- - ---- ------ -------------------------- -- ----- - - - -
这个服务和特征分别具有 UUID 值 180d
和 2a37
。特征具有读取和通知权限,后者将使设备在新数据可用时通知已连接的中央设备。
现在我们可以使用 seamless-peripheral
创建一个设备,并将我们的 GATT 服务添加到其配置中:
-- -------------------- ---- ------- ----- -- - ------------------------------ ----- ------- - - ----- ------- --------- - ---------------- - - ----- ---------- - ----------- ------------------------ -------- -------- - -------------------------------- --------------------- -- --------------------------- -------- -------- - ---------------------------------- --------------------- -- -----------------------------
这个设备将在 uuid
值为 180d
的服务下提供我们的心率特征。在连接到设备后,设备将每秒钟向连接的设备发送一个随机值。广告和连接事件都通过 on
方法注册了回调函数,以记录它们的发生。
好了,现在您已经知道了如何使用 seamless-peripheral
来创建一个带有 GATT 服务和特征的设备。这将为您提供一个基本的框架,您可以在其中添加其他特征和功能,以便为您的蓝牙低功耗设备添加更多可玩性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055cc781e8991b448da684