HarmonyOS 蓝牙ble扫描到的ScanResult的data属性无法转为AdvertiseData类型数据?

如题:HarmonyOS 蓝牙ble扫描到的ScanResult的data属性无法转为AdvertiseData类型数据?

阅读 505
1 个回答

示例参考如下:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  test_str: string = 'Hello World';
  private data :ArrayBuffer = new Uint8Array([17,255,84,145,175,64,66,2,1,1,1,1,0,0,0,0,0,0,0,10,9,68,68,80,48,53,52,50,48,50]);
  private data2 :ArrayBuffer = new Uint8Array([30,252,6,0,1,15,32,2,65,16,127,93,105,253,204,139,171,16,211,202,235,173,94,110,247,204,107,204,227,36,189]);
  test1(){
    let manctureData = this.getManctureData(this.data)
    if (manctureData.byteLength ==0){
      console.log("get failed");
    }else{
      console.log(get Mac ${manctureData[0].toString(16)}:${manctureData[1].toString(16)}:${manctureData[2].toString(16)}:${manctureData[3].toString(16)}:${manctureData[4].toString(16)}:${manctureData[5].toString(16)})
    }
  }

  getManctureData(data:ArrayBuffer):Uint8Array{
    let dataBuf = new Uint8Array(data);
    for(let i = 0; i < dataBuf.length; i++){
      if (dataBuf[i+1]!= 0xff){
        i+= dataBuf[i];
      }else{
        return new Uint8Array(data.slice(i+2, i+dataBuf[i]+1))
      }
    }
    return new Uint8Array(0)
  }
  
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            this.test1()
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进