OpenHarmony鸿蒙蓝牙BLE调试app

OpenHarmony蓝牙模块提供了ble的功能,本篇提供一个简单的app供测试时使用。代码使用API10,对应4.0Release版本固件。

1.开启BLE

开启BLE前,先在设置界面中打开蓝牙开关。

openBle()函数负责打开ble扫描,并打印扫描结果。主要代码如下:

import ble from "@ohos.bluetooth.ble"

  openBle():void {
    try {
      ble.on("BLEDeviceFind", (data:Array<ble.ScanResult>) => {
        // console.info('BLE scan device find result = '+ JSON.stringify(data));
        let i = 0
        data.forEach(element => {
          console.info('BLE scan device[' + i + '] deviceId = '+ element["deviceId"] +
            ' name = ' + element["deviceName"]  +
            ' rssi = ' + element["rssi"] +
            ' data['+element["data"].byteLength+'] = ' +
          this.dataToString(element["data"]))
          if (element.rssi > minRssi && element.deviceName != '' ) {
            this.addData(element)
          }
          i++
        });
      });

      ble.startBLEScan(
        null,
        {
          interval: 500,
          dutyMode: ble.ScanDuty.SCAN_MODE_LOW_POWER,
          matchMode: ble.MatchMode.MATCH_MODE_AGGRESSIVE,
        }
      );
    } catch (err) {
      console.error("ble errCode:" + (err as BusinessError).code + ",errMessage:" + (err as BusinessError).message);
    }

  }

2.关闭BLE

            ble.off('BLEDeviceFind')
            ble.stopBLEScan();

3.添加ble设备

扫描到ble设备后,添加到本地列表并显示

  addData(data:ble.ScanResult):void {
    let bFind = false
    this.availableDevices.forEach(element => {
      if (!bFind && element.deviceId == data.deviceId) {
        console.info('BLE scan update ' + data.deviceId + ' rssi:' + element.rssi +' ==> '+ data.rssi)
        element.rssi = data.rssi
        bFind = true
      }
    })
    if (!bFind) {
      console.info('BLE scan add ' + data.deviceId + ' count:' + this.availableDevices.length)
      this.availableDevices.push(data)
      this.message='BLE count:' + this.availableDevices.length
    }
  }

4.ble数据转换

将ble的data为16进制字符串

  dataToString(data:ArrayBuffer) :String {
    let str = ''
    let v = new Uint8Array(data);
    v.forEach(element => {
      let s = ''
      s =  element.toString(16)
      if (s.length == 1) {
        s = '0'+s
      }
      str+=s+' '
    });
    return str
  }

最终的效果:

完整hap代码,请从链接下载

https://download.csdn.net/download/pjie131_/89279567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值