鸿蒙-蓝牙ble模块扫码绑定硬件功能开发流程

蓝牙ble模块扫码绑定硬件功能开发流程
一、实现原理
蓝牙的实现原理是基于无线电技术的短距离通信协议,使用2.4GHz频段的无线电波进行通信,使用频率跳跃技术(Frequency Hopping Spread Spectrum,FHSS)来避免与其他无线设备的干扰。在通信过程中,蓝牙设备会发送和接收数据包,并且使用不同的蓝牙协议来控制通信流程和数据传输。

ble模块(低功耗蓝牙):BLE是Bluetooth Low Energy的缩写,意为“低功耗蓝牙”。它是一种能够在低功耗情况下进行通信的蓝牙技术,与传统蓝牙相比,BLE的功耗更低,适用于需要长时间运行的低功耗设备,如智能手表、健康监测设备、智能家居等

二、实现过程

  1. 扫码获取设备信息
  2. 进入页面,蓝牙授权并且初始化
  3. 获取当前的wife名称和输入密码及用户信息通过蓝牙传输给硬件匹配
  4. 点击匹配的适合校验蓝牙状态,修改信道传输,修改特征。

三 . 默认界面扫码功能-获取硬件信息
通过配置参数调用默认界面扫码,使用Promise异步回调返回解码结果。需要在页面和组件的生命周期内调用。获取到二维码的设备信息,存储下来后面传给设备

import { scanCore, scanBarcode } from '@kit.ScanKit'; 
import { hilog } from '@kit.PerformanceAnalysisKit'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
// 定义扫码参数options
 let options: scanBarcode.ScanOptions = { scanTypes: [scanCore.ScanType.ALL], enableMultiMode: true, enableAlbum: true }; try {   scanBarcode.startScanForResult(getContext(this), options).then((result: scanBarcode.ScanResult) => {     hilog.info(0x0001, '[Scan Sample]',       `Succeeded in getting ScanResult by promise with options, result is ${JSON.stringify(result)}`);   }).catch((error: BusinessError) => {     hilog.error(0x0001, '[Scan Sample]',       `Failed to get ScanResult by promise with options. Code: ${error.code}, message: ${error.message}`);   }); } catch (error) {   hilog.error(0x0001, '[Scan Sample]', `Failed to startScanForResult. Code: ${error.code}, message: ${error.message}`); 

四 , 获取Wi-Fi信息-wife账号和密码
wife权限:ohos.permission.SET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION

先通过使能wifiManager.isWifiActive查询WLAN开关是否已使能。
如果没有使能,则启动WLAN扫描,wifiManager.scan 获取扫描结果, wifiManager.getScanInfoList,供用户选择或输入

 前面两步主要是为了确保wife信息使能,假设不配置第一和第二部,用户也可以输入用户和用户名来进行下一步的蓝牙操作
五,蓝牙BLE数据交互过程
蓝牙权限:需要权限:ohos.permission.ACCESS_BLUETOOTH

  1. 收集数据,如用户信息的收集,和上一步产生的wife名称和密码
  2. access.getState(); 查询蓝牙状态,确保蓝牙是打开状态并执行相关操作
  3. 订阅BLE设备发现上报事件,ble.on(‘BLEDeviceFind’)
  4. 开始扫描,发起BLE扫描流程。ble.startBLEScan
  5. 当BLE设备发现事件后,通过ble.createGattClientDevice,创建一个可使用的GattClientDevice实例
  6. 设备连接,device.connect(),连接前需要先监听,使用用on(‘BLEConnectionStateChange’),订阅蓝牙低功耗设备的连接状态变化事件
  7. 设备连接获取到实例后,就停止BLE扫描流程,ble.stopBLEScan()
  8. 后续的数据交互就在on(‘BLEConnectionStateChange’)事件回调。
  9. 设置信道长度,device.setBLEMtuSize(200),不是所有的硬件都需要设置,根据传入的二进制数据长度而定
  10. 通过on('BLEMtuChange’监听设置成功否,成功后才执行下一步
  11. 通过device.getServices(),client端获取蓝牙低功耗设备的所有服务,即服务发现
  12. 找到服务返回的可以写入特征的serviceUuid,执行写入操作
  13. 写入之前,执行on(‘BLECharacteristicChange’) 订阅蓝牙低功耗设备的特征值变化事件
  14. 向服务端发送设置通知此特征值请求使用setCharacteristicChangeNotification
  15. 通过监听’BLECharacteristicChange,得到设备给我们返回来的数据,就是交互,判断是否连接成功,或者缺失什么参数
  16. 最后写入特征,device.writeCharacteristicValue,向低功耗蓝牙设备写入特定的特征值
  17. 操作数据在后,监听在前,用完就off,离开页面销毁所有
  18. 至此,与设备的交互成功设备就会进入绑定状态。当然也有很多细节需要小伙伴们去解决。

你可能感兴趣的:(鸿蒙-Arkts,harmonyos,华为,鸿蒙,鸿蒙系统)