鸿蒙-蓝牙ble模块扫码绑定硬件功能开发流程
蓝牙ble模块扫码绑定硬件功能开发流程
一、实现原理
蓝牙的实现原理是基于无线电技术的短距离通信协议,使用2.4GHz频段的无线电波进行通信,使用频率跳跃技术(Frequency Hopping Spread Spectrum,FHSS)来避免与其他无线设备的干扰。在通信过程中,蓝牙设备会发送和接收数据包,并且使用不同的蓝牙协议来控制通信流程和数据传输。
ble模块(低功耗蓝牙):BLE是Bluetooth Low Energy的缩写,意为“低功耗蓝牙”。它是一种能够在低功耗情况下进行通信的蓝牙技术,与传统蓝牙相比,BLE的功耗更低,适用于需要长时间运行的低功耗设备,如智能手表、健康监测设备、智能家居等
二、实现过程
- 扫码获取设备信息
- 进入页面,蓝牙授权并且初始化
- 获取当前的wife名称和输入密码及用户信息通过蓝牙传输给硬件匹配
- 点击匹配的适合校验蓝牙状态,修改信道传输,修改特征。
三 . 默认界面扫码功能-获取硬件信息
通过配置参数调用默认界面扫码,使用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
- 收集数据,如用户信息的收集,和上一步产生的wife名称和密码
- access.getState(); 查询蓝牙状态,确保蓝牙是打开状态并执行相关操作
- 订阅BLE设备发现上报事件,ble.on(‘BLEDeviceFind’)
- 开始扫描,发起BLE扫描流程。ble.startBLEScan
- 当BLE设备发现事件后,通过ble.createGattClientDevice,创建一个可使用的GattClientDevice实例
- 设备连接,device.connect(),连接前需要先监听,使用用on(‘BLEConnectionStateChange’),订阅蓝牙低功耗设备的连接状态变化事件
- 设备连接获取到实例后,就停止BLE扫描流程,ble.stopBLEScan()
- 后续的数据交互就在on(‘BLEConnectionStateChange’)事件回调。
- 设置信道长度,device.setBLEMtuSize(200),不是所有的硬件都需要设置,根据传入的二进制数据长度而定
- 通过on('BLEMtuChange’监听设置成功否,成功后才执行下一步
- 通过device.getServices(),client端获取蓝牙低功耗设备的所有服务,即服务发现
- 找到服务返回的可以写入特征的serviceUuid,执行写入操作
- 写入之前,执行on(‘BLECharacteristicChange’) 订阅蓝牙低功耗设备的特征值变化事件
- 向服务端发送设置通知此特征值请求使用setCharacteristicChangeNotification
- 通过监听’BLECharacteristicChange,得到设备给我们返回来的数据,就是交互,判断是否连接成功,或者缺失什么参数
- 最后写入特征,device.writeCharacteristicValue,向低功耗蓝牙设备写入特定的特征值
- 操作数据在后,监听在前,用完就off,离开页面销毁所有
- 至此,与设备的交互成功设备就会进入绑定状态。当然也有很多细节需要小伙伴们去解决。
鸿蒙班级链接
https://developer.huawei.com/consumer/cn/training/classDetail/8f8334e299cc4fbdaab0f0607cb953fd?type=1?ha_source=hmosclass&ha_sourceld=89000248
更多推荐


所有评论(0)