HarmonyOS蓝牙广播问题

调用蓝牙广播,报错,错误码是 401,请问需要怎样的参数格式。

关键代码如下,附近为报错信息:

// 描述蓝牙低功耗设备发送广播的参数 
let setting: ble.AdvertiseSetting = { 
  // 表示广播间隔,最小值设置32个slot表示20ms,最大值设置16384个slot,默认值设置为1600个slot表示1s。 
  interval: 150, 
  // 表示发送功率,最小值设置-127,最大值设置1,默认值设置-7,单位dbm。 
  txPower: -7, 
  // 表示是否是可连接广播 
  connectable: false 
} 
 
// 发送新蓝牙广播开锁 
// BLE广播包内容 
let advData: ble.AdvertiseData = createAdvertiseData(0x5A57, manufacturerSpecificData, serviceDataUuid, data, parcelUuids) 
// BLE回复扫描请求回复响应。 
let advResponse: ble.AdvertiseData = createAdvertiseData(0x7A77, encodePhoneData, serviceDataUuid, data, parcelUuids) 
 
try{ 
  // 开始发送BLE广播 
  ble.startAdvertising({ 
    // 描述蓝牙低功耗设备发送广播的参数 
    advertisingSettings: setting, 
    // 表示广播的数据包内容 
    advertisingData: advData, 
    // 表示回复扫描请求的响应内容 
    advertisingResponse: advResponse, 
    // 表示发送广播持续的时间。单位为10ms,有效范围为1(10ms)到65535(655350ms),如果未指定此参数或者将其设置为0,则会连续发送广播。 
    duration: 300 
  }, (err, outAdvHandle) => { 
    if (err) { 
      ... 
    } else { 
      Logger.info('BLEUtil',"advHandle: " + outAdvHandle); 
    } 
  }) 
} catch (err) { 
  Logger.error('BLEUtil', 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); 
} 
 
} 
 
function createAdvertiseData(manufactureId: number, manufacturerSpecificData: Uint8Array, 
                             serviceDataUuid?: string, serviceData?: Uint8Array, 
                             serviceUuids?: Array<string>):ble.AdvertiseData{ 
  // 制造商信息 
  let manufactureDataUnit: ble.ManufactureData = { 
    manufactureId: manufactureId, 
    manufactureValue: manufacturerSpecificData 
  } 
 
  let serviceDataUnit: ble.ServiceData | null = serviceDataUuid && serviceData ? { 
    serviceUuid: serviceDataUuid, 
    serviceValue: serviceData.buffer 
  } : null 
  let data: ble.AdvertiseData = { 
    // 表示要广播的服务 UUID 列表 
    serviceUuids: serviceUuids ? serviceUuids : [], 
    // 表示要广播的制造商信息列表。 
    manufactureData: [manufactureDataUnit], 
    // 表示要广播的服务数据列表。 
    serviceData: serviceDataUnit ? [serviceDataUnit] : [] 
  } 
  return data 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
HarmonyOS
2024-09-09 09:43:59
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zxjiu

createAdvertiseData方法中,manufactureDataUnit的属性值manufactureValue是ArrayBuffer类型,而方法中manufacturerSpecificData参数类型是Uint8Array,所以参数无效,请将对应的代码改为以下模样:

function createAdvertiseData(manufactureId: number, manufacturerSpecificData: Uint8Array, 
                             serviceDataUuid?: string, serviceData?: Uint8Array, 
                             serviceUuids?: Array<string>):ble.AdvertiseData{ 
  // 制造商信息 
  let manufactureDataUnit: ble.ManufactureData = { 
    manufactureId: manufactureId, 
    manufactureValue: manufacturerSpecificData.buffer 
  } 
  …… 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ble-development-guide-V5#开启关闭广播

分享
微博
QQ
微信
回复
2024-09-09 15:47:02
相关问题
HarmonyOS 蓝牙api问题
975浏览 • 1回复 待解决
HarmonyOS ble蓝牙问题
990浏览 • 1回复 待解决
HarmonyOS 蓝牙运行问题
723浏览 • 1回复 待解决
HarmonyOS 本地调用蓝牙问题
883浏览 • 1回复 待解决
HarmonyOS 经典蓝牙的搜索问题
1218浏览 • 1回复 待解决
HarmonyOS 广播怎么使用
530浏览 • 1回复 待解决
HarmonyOS UDP广播有无Demo
835浏览 • 1回复 待解决
HarmonyOS 蓝牙读取特征值问题
859浏览 • 1回复 待解决
HarmonyOS 蓝牙连接配对接口问题
839浏览 • 1回复 待解决
HarmonyOS 经典蓝牙的socket通信问题
1280浏览 • 1回复 待解决
HarmonyOS 如何发送通知或广播
897浏览 • 1回复 待解决
蓝牙设备关机重启连接问题
218浏览 • 0回复 待解决
HarmonyOS关于蓝牙无权限的问题
2480浏览 • 1回复 待解决
关于鸿蒙OS蓝牙API的问题
7980浏览 • 1回复 待解决
HarmonyOS 经典蓝牙的ssp连接和读取问题
1728浏览 • 1回复 待解决
咨询一个HarmonyOS Next 蓝牙扫描问题
306浏览 • 0回复 待解决
关于鸿蒙OS蓝牙开发的问题
5736浏览 • 1回复 待解决
HarmonyOS BLE蓝牙发送数据量大的问题
1226浏览 • 1回复 待解决