收藏
回答

微信小程序连接蓝牙手环,监听到特征值更新之后?

公司最近弄了一个蓝牙手环项目对接到微信小程序,对蓝牙数据传输了解不够。

根据文档 onBLECharacteristicValueChange 监听到特征 .value值。

https://developers.weixin.qq.com/s/hQ59W4mK7MOB

那么我需要怎么才能获取到手环内运动,睡眠,心率这样的数据?

手里有手环工厂提供的蓝牙协议,

设备基于某度智能设备蓝牙私有协议,进行了一些功能补充,同时就未加入本设计的冗余规范进行了删减和修改,其中,L2 PACKAGE 的 payload 格式部分只带一个 key (参见百度协议第9页),以下,将对其中的一些修改及补充进行说明(如若未做特别说明,则保持与百度智能设备协议规范一致)。在本设计中,所涉及到的 L2 command 包含以下几个 command,如下表 L2 command 所示。

| Command ID |   定义  |
| :--------: | :------: |
|    0x02    | 设置命令  |
|    0x03    | 绑定命令  |
|    0x04    | 提醒命令  |
|    0x05    | 运动数据命令  |
|    0x06    | 工厂测试命令  |
|    0x07    | 控制命令  |
|    0x58    | 客户定制相关命令  |
## 2、设置命令说明
~~~
设置命令(command Id: 0x02),手机端将参数下发给设备设备端。
~~~
### 2.01、时间设置 (0x01)
手机端通过这个 key 把手机上的时间同步到设备上,使设备上的时间和手机端保持同步。每一次绑定命令成功执行后,都需要支持时间设置。<br>
Value   内容描述如下:
__Value(32bit)__

| 6bits | 4bits | 5bits | 5bits | 6bits | 6bits |
| :---: | :---: |:----: | :---: | :----:| :----:|
| 有效值<br>0-63<br>从2000年开始,13表示2013年 | 有效值<br>1-12 | 有效值<br>1-31 |有效值<br>0-23 | 有效值<br>0-59 |有效值<br>0-59 |
### 2.02、闹钟设置 (0x02)
手机端通过这个 key 把手机上的闹钟设定同步到设备上。目前最多支持8个闹钟。所以一个 command 中可以最多同时存在 8 个闹钟设置。<br>
Value 内容描述如下:
__Value(5 * N bytes)__
| 5 bytes | 5 bytes | 5 bytes |  ....   |
| :-----: | :-----: |:------: | :-----: |
| Alarm 1 | Alarm 2 | Alarm 3 | Alarm N |
#### a、中性设备说明
每个闹钟的 Value 描述如下:
__Value(40 bits)__
| 6 bits | 4 bits | 5 bits | 5 bits | 6 bits | 3 bits | 4 bits | 7 bits |
| :----: | :----: |:-----: | :----: | :-----:| :-----:|:------:|:------:|
|  Year  |  Month |  Day   |  Hour  | Minute |   ID  |~Reserve~| Day flags|
| 见说明1 | 有效值<br>1-12 | 有效值<br>1-31 | 有效值<br>0-23 | 有效值<br>0-59 | 有效值<br>0-7 |保留位  |见说明2 |
**说明1**:有效值 0-63,从 2000 年开始,13 表示 2013 年。<br>
**说明2**:由低 bit 位到高 bit 位,分别代表周一到周日的重复设置。bit 位为 1 表示重复,为 0 时表示不重复。所有 bit 都为 0 时,表示只在当天有效。


我想获取手环数据 <_>

蓝牙手环主要服务:设备通讯服务 serviceId
uuid: "000001FF-3C17-D293-8E48-14FE2E4DA212" 
返回特征 characteristics (Array)设备特征列表

uuid: "0000FF02-0000-1000-8000-00805F9B34FB"  【功能说明:手机端->设备端 进行通讯】
indicate: false
notify: false
read: false
write: true
writeDefault: true
writeNoResponse: false

uuid: "0000FF03-0000-1000-8000-00805F9B34FB" 【功能说明:设备端->手机端 进行通讯】
indicate: false
notify: true
read: false
write: false
writeDefault: false
writeNoResponse: false




回答关注问题邀请回答
收藏

1 个回答

  • YoRoll
    YoRoll
    05-07

    请问这个问题解决了吗,拿到特征值和value不知道咋用~

    05-07
    有用
    回复 3
    • 任昌华
      任昌华
      05-09
      拿到特征值之后,根据uuid执行指令
      05-09
      回复
    • YoRoll
      YoRoll
      05-09回复任昌华
      还要请问一下,如何识别哪些UUID是心率的,哪些特征值是睡眠的,这个是有通用的,还是怎么解析,麻烦了~
      05-09
      回复
    • 任昌华
      任昌华
      06-13
      这个根据蓝牙协议执行指令
      06-13
      回复
登录 后发表内容