本文介紹OpenHarmony開源鴻蒙系統(tǒng)的BLE(低功耗藍(lán)牙)主機(jī)實(shí)現(xiàn)示例,基于觸覺(jué)智能RK3576開發(fā)板Purple Pi OH2演示。
為了回饋電子發(fā)燒友對(duì)觸覺(jué)智能的支持,現(xiàn)購(gòu)買觸覺(jué)智能RK3576開發(fā)板享秒殺活動(dòng),數(shù)量有限先到先得!
OpenHarmony的BLE系統(tǒng)API
通過(guò)OpenHarmony的ble與bluetoothManager系統(tǒng)API,實(shí)現(xiàn)藍(lán)牙狀態(tài)管理、設(shè)備掃描、連接控制、數(shù)據(jù)收發(fā)等核心功能。方案采用ArkTS語(yǔ)言開發(fā),通過(guò)響應(yīng)式狀態(tài)管理實(shí)現(xiàn)UI與業(yè)務(wù)邏輯的聯(lián)動(dòng),適用于需要與BLE從設(shè)備進(jìn)行通信的物聯(lián)網(wǎng)場(chǎng)景。
本示例使用@ohos.bluetooth.ble(藍(lán)牙ble模塊), 提供了對(duì)藍(lán)牙操作和管理的方法。本模塊首批接口從API version 10開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。接口中涉及的UUID服務(wù),可以通過(guò)工具函數(shù)util.generateRandomUUID生成。

- 相關(guān)權(quán)限
ohos.permission.ACCESS_BLUETOOTH
ohos.permission.MANAGE_BLUETOOTH
ohos.permission.USE_BLUETOOTH
ohos.permission.DISCOVER_BLUETOOTH
ohos.permission.LOCATION
ohos.permission.APPROXIMATELY_LOCATION
依賴:不涉及
- 約束與限制
1.本示例僅支持標(biāo)準(zhǔn)系統(tǒng)上運(yùn)行;
2.本示例已適配API version 12版本SDK;
3. 本示例為Stage模型,本示例需要使用DevEco Studio 5.0.2 Release及以上版本才可編譯運(yùn)行。
4.本示例所配置的權(quán)限ohos.permission.MANAGE_BLUETOOTH為system_basic級(jí)別(相關(guān)權(quán)限級(jí)別可通過(guò)權(quán)限定義列表系統(tǒng)應(yīng)用可用權(quán)限查看),需要手動(dòng)配置對(duì)應(yīng)級(jí)別的權(quán)限簽名(具體操作可查看自動(dòng)化簽名方案zh-cn/application-dev/security/hapsigntool-overview.md· OpenHarmony/docs - Gitee.com) 。
5. 本示例所配置的權(quán)限ohos.permission.MANAGE_BLUETOOTH為system_basic級(jí)別,需要使用Full SDK 如何替換full-SDK。
BLE主機(jī)核心功能模塊解析
- 藍(lán)牙狀態(tài)管理
負(fù)責(zé)監(jiān)測(cè)和控制藍(lán)牙開關(guān)狀態(tài),確保BLE功能正常啟用。
狀態(tài)跟蹤:通過(guò)isBluetoothEnabled(ObservedPropertySimplePU類型)實(shí)時(shí)記錄藍(lán)牙啟用狀態(tài),支持 UI 響應(yīng)式更新。
狀態(tài)檢查與切換,通過(guò)checkAndEnableBluetooth方法實(shí)現(xiàn):
調(diào)用bluetoothManager.getState()獲取當(dāng)前藍(lán)牙狀態(tài)(STATE_OFF/STATE_ON/STATE_TURNING_ON等)。
若藍(lán)牙未開啟(STATE_OFF),調(diào)用bluetoothManager.enableBluetooth()發(fā)送開啟請(qǐng)求。
記錄操作日志(如 “藍(lán)牙已開啟”“藍(lán)牙正在開啟中”),便于問(wèn)題排查。
- BLE設(shè)備掃描
實(shí)現(xiàn)對(duì)周圍BLE從設(shè)備的掃描、結(jié)果去重與管理。
掃描狀態(tài)控制:
通過(guò)isScanning(ObservedPropertySimplePU)標(biāo)記掃描是否正在進(jìn)行。
掃描邏輯通過(guò)startBLEScan方法實(shí)現(xiàn):
1、前置檢查
掃描前驗(yàn)證藍(lán)牙是否處于STATE_ON狀態(tài),未開啟則提示用戶先啟用藍(lán)牙。
2、結(jié)果處理
通過(guò)ble.on('BLEDeviceFind')監(jiān)聽掃描結(jié)果,對(duì)新發(fā)現(xiàn)的設(shè)備
(ble.ScanResult)進(jìn)行去重(基于deviceId),避免重復(fù)添加。
3、結(jié)果存儲(chǔ)
掃描到的設(shè)備列表通過(guò)scanResults
(ObservedPropertyObjectPU>)管理,支持 UI 實(shí)時(shí)展示。
- 設(shè)備連接與GATT服務(wù)管理
負(fù)責(zé)與 BLE 從設(shè)備建立連接,并管理 GATT(通用屬性配置文件)服務(wù)與特征值。
連接狀態(tài)跟蹤:通過(guò)isConnected
(ObservedPropertySimplePU)標(biāo)記連接狀態(tài),connectedClient(ble.GattClientDevice)存儲(chǔ)當(dāng)前連接的 GATT 客戶端實(shí)例。
服務(wù)發(fā)現(xiàn):連接成功后,通過(guò)deviceServices
(ObservedPropertyObjectPU>)
存儲(chǔ)從設(shè)備提供的 GATT 服務(wù)列表,支持后續(xù)特征值操作。
特征值管理:
oselectedCharacteristic:跟蹤當(dāng)前選中的特征值 UUID,用于數(shù)據(jù)讀寫。
onotifiedCharacteristics:記錄已啟用通知的特征值列表,支持實(shí)時(shí)接收從設(shè)備推送的數(shù)據(jù)。
- 數(shù)據(jù)收發(fā)與日志管理
實(shí)現(xiàn)與 BLE 從設(shè)備的數(shù)據(jù)交互,并記錄關(guān)鍵操作日志。
數(shù)據(jù)接收:通過(guò)receivedData(實(shí)時(shí)數(shù)據(jù))和receivedDataHistory(歷史記錄)存儲(chǔ)從設(shè)備發(fā)送的數(shù)據(jù),支持 UI 展示。
數(shù)據(jù)發(fā)送:通過(guò)inputText獲取用戶輸入的發(fā)送數(shù)據(jù),結(jié)合選中的特征值(selectedCharacteristic)向從設(shè)備寫入數(shù)據(jù)。
日志管理:
logMessages(ObservedPropertyObjectPU>)記錄所有關(guān)鍵操作(如藍(lán)牙狀態(tài)變化、掃描結(jié)果、連接事件等),便于調(diào)試與用戶反饋。
-
藍(lán)牙
+關(guān)注
關(guān)注
119文章
6312瀏覽量
178688 -
BLE
+關(guān)注
關(guān)注
13文章
776瀏覽量
66339 -
OpenHarmony
+關(guān)注
關(guān)注
33文章
3952瀏覽量
21093 -
rk3576
+關(guān)注
關(guān)注
1文章
265瀏覽量
1546
發(fā)布評(píng)論請(qǐng)先 登錄
RK3576開發(fā)板OpenGL性能大起底,這數(shù)據(jù)我真的服了
迅為如何在RK3576上部署YOLOv5;基于RK3576構(gòu)建智能門禁系統(tǒng)
觸覺(jué)智能RK3576開發(fā)板OpenHarmony開源鴻蒙系統(tǒng)USB控制傳輸功能示例
如何移植EtherCAT Igh--基于米爾RK3576開發(fā)板
【作品合集】米爾RK3576開發(fā)板測(cè)評(píng)
瑞芯微RK3576平臺(tái)FFmpeg硬件編解碼移植及性能測(cè)試實(shí)戰(zhàn)攻略 觸覺(jué)智能RK3576開發(fā)板演示
觸覺(jué)智能RK3506開發(fā)板通過(guò)OpenHarmony 5.1 XTS認(rèn)證,引領(lǐng)鴻蒙開發(fā)新標(biāo)桿!
基于RK3576開發(fā)板的MIPI-DSI使用
觸覺(jué)智能RK3576開發(fā)板OpenHarmony開源鴻蒙藍(lán)牙BLE主機(jī)實(shí)現(xiàn)方案
評(píng)論