• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## OpenHarmony BLE蓝牙连接
2
3### 1. 简介
4
5​	OpenHarmony蓝牙模块提供了基础的传统蓝牙能力以及BLE的扫描、广播等功能,这里将介绍如何通过OpenHarmony提供的@ohos.bluetooth (蓝牙接口)打开当前设备的蓝牙,连接BLE蓝牙设备,并订阅获取来自BLE设备的数据。
6
7### 2.设备与环境
8
9​	**设备**:Unionpi Tiger、Sinocare三诺臂式电子血压计
10​	**开发工具**:DevEco Studio 3.1.0.200
11​	**OpenHarmony SDK**:API9
12
13### 3.逻辑流程
14
15​		开始  —》Unionpi_Tiger 设备打开蓝牙 —》开始扫描BLE设备 —》 打开三诺臂式电子血压计 —》连接血压计 —》Unionpi_Tiger 订阅获取血压计的服务 —》三诺臂式电子血压计开始测量血压 —》通过日志查看BLE设备发送过来的数据 —》结束
16
17### 4.操作流程
18
19Unionpi_Tiger获取权限,打开蓝牙:
20
21![get](../figures/ble_app/get.png)
22
23开始扫描BLE设备,等待扫描设备完成,点击连接按钮,连接设备。
24
25![scan](../figures/ble_app/scan.png)
26
27成功连接设备后,可以配对列表中看到连接的BLE设备,并且在日志中看到连接成功
28
29![conncet](../figures/ble_app/connect.png)
30
31![conncet](../figures/ble_app/begin1.png)
32
33在血压计中点开始按钮,开始测量,可以在日志中看到数据
34
35![conncet](../figures/ble_app/begin2.png)
36
37测量结果完成后,在日志中查看结果,同时查看血压计的数据,两者数据一致
38
39![result](../figures/ble_app/result1.png)
40
41![result](../figures/ble_app/result.png)
42
43#### 注意:
44
451.因为扫描的设备过多,在代码中的扫描中添加了设备地址的过滤条件,为了方便查看。
46
47```ets
48    bluetooth.BLE.startBLEScan(
49      [{
50        deviceId: "C0:00:00:03:EE:FE",
51      }],
52      {
53        interval: 7000,
54        dutyMode: bluetooth.ScanDuty.SCAN_MODE_LOW_POWER,
55        matchMode: bluetooth.MatchMode.MATCH_MODE_AGGRESSIVE,
56      }
57    )
58```
59
602.如果需要向服务端发送设置通知此特征值请求、client端向低功耗蓝牙设备写入特定的特征值、订阅蓝牙低功耗设备的特征值变化事件,则需要先通过getServices接口获取该BLE设备的所有服务,再从这些服务中找到所需的服务。并且需要服务的各项UUID,Sinocare三诺臂式电子血压计的数据服务uuid如下:
61
62```
63serviceUuid: "0000FC00-0000-1000-8000-00805F9B34FB",
64characteristicUuid: "0000FCA0-0000-1000-8000-00805F9B34FB",
65descriptorUuid: "00002903-0000-1000-8000-00805F9B34FB",
66```
67
68具体代码可以参考当前目录`entry\src\main\ets\pages\Bluetooth.ets`
69