小程序
小游戏
企业微信
微信支付
扫描小程序码分享
报错{errMsg: "addBLEPeripheralService:fail addBLEPeripheralService valueBase64String is empty."}
https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.addService.html
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
可以参考这份示例代码
const uuid1 = '000018F0-0000-1000-8000-00805F9BAAFB' const uuid2 = '00002AF0-0000-1000-8000-00805F9BBBFB' const uuid3 = '00002AF1-0000-1000-8000-00805F9BCCFB' // ArrayBuffer转16进制字符串示例 function ab2hex(buffer) { let hexArr = Array.prototype.map.call( new Uint8Array(buffer), function (bit) { return ('00' + bit.toString(16)).slice(-2) } ) return hexArr.join(''); } function inArray(arr, key, val) { for (let i = 0; i < arr.length; i++) { if (arr[i][key] === val) { return i; } } return -1; } // slave/slave.js Page({ /** * 页面的初始数据 */ data: { connects: [], servers: [] }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.onBLEPeripheralConnectionStateChanged(res => { console.log('ConnectionStateChanged', res) const connects = this.data.connects const idx = inArray(connects, 'deviceId', res.deviceId) if (idx >= 0) { connects[idx] = res } else { connects.push(res) } this.setData({ connects }) }) }, openBluetoothAdapter() { wx.openBluetoothAdapter({ success: (res) => { console.log('openBluetoothAdapter success', res) this.createBLEPeripheralServer() wx.onBluetoothAdapterStateChange(function (res) { console.log('onBluetoothAdapterStateChange', res.available) }) }, fail: (res) => { if (res.errCode === 10001) { console.log("ble unavailable!") } } }) }, createBLEPeripheralServer() { wx.createBLEPeripheralServer().then(res => { console.log('createBLEPeripheralServer', res) this.data.servers.push(res.server) this.server = res.server this.setData({ serverId: this.server.serverId }) this.server.onCharacteristicReadRequest(res => { const { serviceId, characteristicId, callbackId } = res const buffer = new ArrayBuffer(1) const dataView = new DataView(buffer) const newValue = Math.ceil(Math.random() * 10) dataView.setUint8(0, newValue) console.log('onCharacteristicReadRequest', res, newValue) this.server.writeCharacteristicValue({ serviceId, characteristicId, value: buffer, needNotify: true, callbackId }) }) this.server.onCharacteristicWriteRequest(res => { console.log('onCharacteristicWriteRequest', res) const { serviceId, characteristicId, value, callbackId } = res this.server.writeCharacteristicValue({ serviceId, characteristicId, value, needNotify: true, callbackId }) }) }) }, closeServer() { this.server.close() }, onConfirm(e) { const n = e.detail.value * 1 const buffer = new ArrayBuffer(1) const dataView = new DataView(buffer) dataView.setUint8(0, n) this.server.writeCharacteristicValue({ serviceId: uuid1, characteristicId: uuid2, value: buffer, needNotify: true }) }, showInput() { this.setData({ input: !this.data.input }) }, addService() { const buffer = new ArrayBuffer(2) const dataView = new DataView(buffer) dataView.setUint8(0, 9) dataView.setUint8(1, 11) const descriptorBuffer = new ArrayBuffer(2) const dataView2 = new DataView(descriptorBuffer) dataView2.setInt8(0, 1) dataView2.setInt8(1, 0) const service = { uuid: uuid1, characteristics: [{ uuid: uuid2, properties: { write: false, read: true, notify: true, indicate: false }, permission: { readable: true, writeable: false, readEncryptionRequired: false, writeEncryptionRequired: false }, value: buffer, descriptors: [{ uuid: uuid2, permission: { write: false, read: true }, value: descriptorBuffer }] }, { uuid: uuid3, properties: { write: true, read: false, notify: false, indicate: false }, permission: { readable: false, writeable: true, readEncryptionRequired: false, writeEncryptionRequired: false }, value: buffer, descriptors: [{ uuid: uuid3, permission: { write: true, read: false }, value: descriptorBuffer }] }] } this.server.addService({ service }).then(res => { console.log('add Service', res) }) }, removeService() { this.server.removeService({ serviceId: uuid1 }).then(res => { console.log('removeService', res) }) }, startAdvertising() { const buffer = new ArrayBuffer(1) const dataView = new DataView(buffer) var hex = "7E9" var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) { return parseInt(h, 16) })) this.server.startAdvertising({ advertiseRequest: { connectable: true, deviceName: '', serviceUuids: [uuid1], manufacturerData: [{ manufacturerId: '0x004c', manufacturerSpecificData: typedArray.buffer }] }, powerLevel: 'higt' }).then(res => { console.log('startAdvertising', res) }, res => { console.log("fail: ", res) }) }, stopAdvertising() { this.server.stopAdvertising() }, closeBluetoothAdapter() { wx.closeBluetoothAdapter() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { this.data.servers.forEach(server => { // server.close() }) }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你好,请问现在问题解决了么?没有的话,麻烦再复现一次,在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
可以参考这份示例代码
const uuid1 = '000018F0-0000-1000-8000-00805F9BAAFB' const uuid2 = '00002AF0-0000-1000-8000-00805F9BBBFB' const uuid3 = '00002AF1-0000-1000-8000-00805F9BCCFB' // ArrayBuffer转16进制字符串示例 function ab2hex(buffer) { let hexArr = Array.prototype.map.call( new Uint8Array(buffer), function (bit) { return ('00' + bit.toString(16)).slice(-2) } ) return hexArr.join(''); } function inArray(arr, key, val) { for (let i = 0; i < arr.length; i++) { if (arr[i][key] === val) { return i; } } return -1; } // slave/slave.js Page({ /** * 页面的初始数据 */ data: { connects: [], servers: [] }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { wx.onBLEPeripheralConnectionStateChanged(res => { console.log('ConnectionStateChanged', res) const connects = this.data.connects const idx = inArray(connects, 'deviceId', res.deviceId) if (idx >= 0) { connects[idx] = res } else { connects.push(res) } this.setData({ connects }) }) }, openBluetoothAdapter() { wx.openBluetoothAdapter({ success: (res) => { console.log('openBluetoothAdapter success', res) this.createBLEPeripheralServer() wx.onBluetoothAdapterStateChange(function (res) { console.log('onBluetoothAdapterStateChange', res.available) }) }, fail: (res) => { if (res.errCode === 10001) { console.log("ble unavailable!") } } }) }, createBLEPeripheralServer() { wx.createBLEPeripheralServer().then(res => { console.log('createBLEPeripheralServer', res) this.data.servers.push(res.server) this.server = res.server this.setData({ serverId: this.server.serverId }) this.server.onCharacteristicReadRequest(res => { const { serviceId, characteristicId, callbackId } = res const buffer = new ArrayBuffer(1) const dataView = new DataView(buffer) const newValue = Math.ceil(Math.random() * 10) dataView.setUint8(0, newValue) console.log('onCharacteristicReadRequest', res, newValue) this.server.writeCharacteristicValue({ serviceId, characteristicId, value: buffer, needNotify: true, callbackId }) }) this.server.onCharacteristicWriteRequest(res => { console.log('onCharacteristicWriteRequest', res) const { serviceId, characteristicId, value, callbackId } = res this.server.writeCharacteristicValue({ serviceId, characteristicId, value, needNotify: true, callbackId }) }) }) }, closeServer() { this.server.close() }, onConfirm(e) { const n = e.detail.value * 1 const buffer = new ArrayBuffer(1) const dataView = new DataView(buffer) dataView.setUint8(0, n) this.server.writeCharacteristicValue({ serviceId: uuid1, characteristicId: uuid2, value: buffer, needNotify: true }) }, showInput() { this.setData({ input: !this.data.input }) }, addService() { const buffer = new ArrayBuffer(2) const dataView = new DataView(buffer) dataView.setUint8(0, 9) dataView.setUint8(1, 11) const descriptorBuffer = new ArrayBuffer(2) const dataView2 = new DataView(descriptorBuffer) dataView2.setInt8(0, 1) dataView2.setInt8(1, 0) const service = { uuid: uuid1, characteristics: [{ uuid: uuid2, properties: { write: false, read: true, notify: true, indicate: false }, permission: { readable: true, writeable: false, readEncryptionRequired: false, writeEncryptionRequired: false }, value: buffer, descriptors: [{ uuid: uuid2, permission: { write: false, read: true }, value: descriptorBuffer }] }, { uuid: uuid3, properties: { write: true, read: false, notify: false, indicate: false }, permission: { readable: false, writeable: true, readEncryptionRequired: false, writeEncryptionRequired: false }, value: buffer, descriptors: [{ uuid: uuid3, permission: { write: true, read: false }, value: descriptorBuffer }] }] } this.server.addService({ service }).then(res => { console.log('add Service', res) }) }, removeService() { this.server.removeService({ serviceId: uuid1 }).then(res => { console.log('removeService', res) }) }, startAdvertising() { const buffer = new ArrayBuffer(1) const dataView = new DataView(buffer) var hex = "7E9" var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) { return parseInt(h, 16) })) this.server.startAdvertising({ advertiseRequest: { connectable: true, deviceName: '', serviceUuids: [uuid1], manufacturerData: [{ manufacturerId: '0x004c', manufacturerSpecificData: typedArray.buffer }] }, powerLevel: 'higt' }).then(res => { console.log('startAdvertising', res) }, res => { console.log("fail: ", res) }) }, stopAdvertising() { this.server.stopAdvertising() }, closeBluetoothAdapter() { wx.closeBluetoothAdapter() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { this.data.servers.forEach(server => { // server.close() }) }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })
errMsg: writeBLEPeripheralCharacteristicValue:fail writeValueToCharacteristics error 10020;
你好,请问现在问题解决了么?没有的话,麻烦再复现一次,在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点