触觉智能RK3576开发板OpenHarmony开源鸿蒙蓝牙BLE主机实现方案

本文介绍OpenHarmony开源鸿蒙系统的BLE(低功耗蓝牙)主机实现示例,基于触觉智能****RK3576开发板Purple Pi OH2演示。

OpenHarmony的BLE系统API

通过OpenHarmony的ble与bluetoothManager系统API,实现蓝牙状态管理、设备扫描、连接控制、数据收发等核心功能。方案采用ArkTS语言开发,通过响应式状态管理实现UI与业务逻辑的联动,适用于需要与BLE从设备进行通信的物联网场景。触觉智能相关****实测,可通过触觉智能各视频平台搜搜了解。

本示例使用@ohos.bluetooth.ble(蓝牙ble模块), 提供了对蓝牙操作和管理的方法。本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。接口中涉及的UUID服务,可以通过工具函数util.generateRandomUUID生成。

  • 相关权限

ohos.permission.ACCESS_BLUETOOTH

ohos.permission.MANAGE_BLUETOOTH

ohos.permission.USE_BLUETOOTH

ohos.permission.DISCOVER_BLUETOOTH

ohos.permission.LOCATION

ohos.permission.APPROXIMATELY_LOCATION

依赖:不涉及

  • 约束与限制

1.本示例仅支持标准系统上运行;

2.本示例已适配API version 12版本SDK;

  1. 本示例为Stage模型,本示例需要使用DevEco Studio 5.0.2 Release及以上版本才可编译运行。

4.本示例所配置的权限ohos.permission.MANAGE_BLUETOOTH为system_basic级别(相关权限级别可通过权限定义列表++系统应用可用权限++ 查看),需要手动配置对应级别的权限签名(具体操作可查看自动化签名方案++zh-cn/application-dev/security/hapsigntool-overview.md· OpenHarmony/docs - Gitee.com++ ) 。

  1. 本示例所配置的权限ohos.permission.MANAGE_BLUETOOTH为system_basic级别,需要使用Full SDK ++如何替换full-SDK++ 。

BLE主机核心功能模块解析

  • 蓝牙状态管理

负责监测和控制蓝牙开关状态,确保BLE功能正常启用。

状态跟踪:通过isBluetoothEnabled

(ObservedPropertySimplePU<boolean>类型)实时记录蓝牙启用状态,支持 UI 响应式更新。

状态检查与切换,通过checkAndEnableBluetooth方法实现:

调用bluetoothManager.getState()获取当前蓝牙状态

(STATE_OFF/STATE_ON/STATE_TURNING_ON等)。

若蓝牙未开启(STATE_OFF),调用

bluetoothManager.enableBluetooth()发送开启请求。

记录操作日志(如 "蓝牙已开启""蓝牙正在开启中"),便于问题排查。

  • BLE设备扫描

实现对周围BLE从设备的扫描、结果去重与管理。

扫描状态控制:

通过isScanning(ObservedPropertySimplePU<boolean>)标记扫描是否正在进行。

扫描逻辑通过startBLEScan方法实现:

1、前置检查

扫描前验证蓝牙是否处于STATE_ON状态,未开启则提示用户先启用蓝牙。

2、结果处理

通过ble.on('BLEDeviceFind')监听扫描结果,对新发现的设备

(ble.ScanResult)进行去重(基于deviceId),避免重复添加。

3、结果存储

扫描到的设备列表通过scanResults

(ObservedPropertyObjectPU<Array<ble.ScanResult>>)管理,支持 UI 实时展示。

  • 设备连接与GATT服务管理

负责与 BLE 从设备建立连接,并管理 GATT(通用属性配置文件)服务与特征值。

连接状态跟踪:通过isConnected

(ObservedPropertySimplePU<boolean>)标记连接状态,connectedClient(ble.GattClientDevice)存储当前连接的 GATT 客户端实例。

服务发现:连接成功后,通过deviceServices

(ObservedPropertyObjectPU<Array<ble.GattService>>)

存储从设备提供的 GATT 服务列表,支持后续特征值操作。

特征值管理:

oselectedCharacteristic:跟踪当前选中的特征值 UUID,用于数据读写。

onotifiedCharacteristics:记录已启用通知的特征值列表,支持实时接收从设备推送的数据。

  • 数据收发与日志管理

实现与 BLE 从设备的数据交互,并记录关键操作日志。

数据接收:通过receivedData(实时数据)和receivedDataHistory(历史记录)存储从设备发送的数据,支持 UI 展示。

数据发送:通过inputText获取用户输入的发送数据,结合选中的特征值(selectedCharacteristic)向从设备写入数据。

日志管理:

logMessages(ObservedPropertyObjectPU<Array<string>>)记录所有关键操作(如蓝牙状态变化、扫描结果、连接事件等),便于调试与用户反馈。

更多OpenHarmony开源鸿蒙BLE主机实现配置,如权限配置、使用流程

资料,请关注触觉智能CSDN索取。

相关推荐
M-Robots echo3 天前
王成录:M-Robots 积木式架构,解决机器人软硬件重复开发难题
机器人·开源鸿蒙·开源社区·m-robots·王成录
Industio_触觉智能3 天前
在瑞芯微RK平台下的开源鸿蒙OpenHarmony分区镜像/散包固件烧录
嵌入式硬件·openharmony·烧录·开源鸿蒙·瑞芯微·鸿蒙开发板·鸿蒙嵌入式
byte轻骑兵4 天前
【BlueZ 】核心设计理念:模块化 + DBus 通信的底层逻辑
linux·蓝牙·bluez·电脑蓝牙·嵌入式蓝牙
Industio_触觉智能8 天前
瑞芯微ISP内核驱动深度解析|ISP39 AI协处理器与完整业务链路总结(下篇)
人工智能·嵌入式硬件·硬件架构·硬件工程·rk3588·isp·rk3576
Industio_触觉智能10 天前
瑞芯微ISP内核驱动深度解析|RKISP39从架构到Probe初始化全流程(上篇)
linux·嵌入式硬件·硬件架构·摄像头·isp·瑞芯微·rk3576
K成长日志13 天前
BLE链路层空口包--数据物理信道PDU
网络·物联网·网络协议·嵌入式·蓝牙·iot·ble
byte轻骑兵13 天前
如何定制BlueZ编译:开启/关闭BLE/音频模块的编译参数配置
linux·arm开发·蓝牙·bluez·电脑蓝牙
byte轻骑兵14 天前
蓝牙PBP公共广播协议:解锁LE Audio的公共音频新生态
音视频·蓝牙·蓝牙耳机·le audio·低功耗蓝牙音频
nullregedit17 天前
OpenHarmony 小鸿 AI 开发实战 10:CI1302 语音上行的 UART 帧、Opus 与 VAD
openharmony·语音交互·开源鸿蒙·ws63·ci1302
byte轻骑兵20 天前
BlueZ源码编译环境配置全指南:Linux桌面原生编译 + 嵌入式ARM交叉编译 + 定制裁剪与调试实战
linux·arm开发·蓝牙·bluez·电脑蓝牙