- 同一特征值分段读取时安卓和苹果的速度区别
- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo var _this = this let deviceId = e.currentTarget.dataset.id let info = e.currentTarget.dataset.info let checkBoxValue = e.currentTarget.dataset.value let offset = Math.floor(info[21]/30) wx.getBLEDeviceServices({ deviceId: deviceId, success(res) { wx.getBLEDeviceCharacteristics({ deviceId: deviceId, serviceId: '10FF0200-BA5E-F4EE-5CA1-EB1E5E4B1CE0', success(res1) { writeOffset(deviceId, offset, _this) } }) } }) var common = require('../../lib/public.js') function readinfo(deviceId, offset,_this) { var arr = new Array() wx.readBLECharacteristicValue({ deviceId: deviceId, serviceId: '10FF0200-BA5E-F4EE-5CA1-EB1E5E4B1CE0', characteristicId: '0000FF50-0000-1000-8000-00805F9B34FB', success(res3) { } }) wx.onBLECharacteristicValueChange((characteristic) => { var dv = new Int16Array(characteristic.value) for (let j = 0; j < dv.length; j++) { arr[j] = (dv[j] / 10).toFixed(1) } arr = common.resetArray(arr, _this.data.index) for (var z = 0; z < arr.length; z++) { //arr[z].push(_this.data.index) _this.data.upPage[1].push(arr[z]) } if(_this.data.index==0){ _this.data.time1 = new Date().getTime() }else{ console.log(new Date().getTime() - _this.data.time1) _this.data.time1 = new Date().getTime() } //console.log(arr) if (_this.data.index < offset) { _this.data.index++ writeOffset(deviceId, offset, _this) } }) } function writeOffset(deviceId, offset, _this) { _this.data.isfor = false let buffer = new ArrayBuffer(4) let dataView = new DataView(buffer) dataView.setUint32(0, _this.data.index, true) wx.writeBLECharacteristicValue({ deviceId: deviceId, serviceId: '10FF0200-BA5E-F4EE-5CA1-EB1E5E4B1CE0', characteristicId: '0000FF53-0000-1000-8000-00805F9B34FB', value: buffer, success(res2) { if (res2.errCode == 0) { readinfo(deviceId, offset, _this) } } }) } 蓝牙设备上有很多数据,但是一次只能读120自己,所以就先写入读取位置,然后读取-再写入读取这样吧把所有数据读取出来,这时候安卓比苹果速度慢7倍。这是什么原因呢?
2019-06-21 - 小程序IOS可以单个特征值最大长度是多少?
- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo wx.readBLECharacteristicValue({ deviceId: deviceId, serviceId: '10FF0200-BA5E-F4EE-5CA1-EB1E5E4B1CE0', characteristicId: '0000FF50-0000-1000-8000-00805F9B34FB', success(res3) { } }) wx.onBLECharacteristicValueChange((characteristic) => { var dv = new Int16Array(characteristic.value) for (let j = 0; j < dv.length; j++) { arr[j] = (dv[j] / 10).toFixed(1) } arr = common.resetArray(arr, _this.data.index) for (var z = 0; z < arr.length; z++) { _this.data.upPage[1].push(arr[z]) } }) [图片] 但是。。。看下面: 安卓512可以读取,IOS字节长度40、120、121、122、123字节长度都可以正常读取 [图片] [图片] [图片] [图片] [图片] [图片] 当单个特征值字节长度超过123时,安卓可以正常读取、IOS就读取不到了。这跟你说的IOS的MTU只有20字节没有关系啊,蓝牙设备特征值规定的最大长度是512字节,那么你们那边既然不是IOS的20字节,那么做到512字节长度也 是没问题的啊。这个怎么处理??? 请官方给个处理方案!!!
2019-06-21 - 小程序IOS可以一次性读取一个512字节的特征值吗?
- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo onLoad: function (options) { var _that = this var deviceId = options.id wx.getBLEDeviceServices({ deviceId: deviceId, success(res) { console.log(res) //setTimeout(function(){ wx.getBLEDeviceCharacteristics({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: deviceId, // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 serviceId:res.services[2].uuid, success(res55) { console.log('device getBLEDeviceCharacteristics:', res55) wx.onBLECharacteristicValueChange(function (characteristic) { console.log(characteristic) var dv = new Int16Array(characteristic.value) for (let j = 0; j < dv.length; j++) { arr[j] = (dv[j] / 10).toFixed(1) } arr = common.resetArray(arr, dv1[0]) for (var z = 0; z < arr.length; z++) { arr[z].push(dv1[0] * 128 + z) _this.data.upPage[1].push(arr[z]) } console.log(arr) }) wx.readBLECharacteristicValue({ deviceId: deviceId, serviceId: res6.services[0].uuid, characteristicId: '0000FF50-0000-1000-8000-00805F9B34FB',//此特征值的value是512字节长的16进制 success(res8) { console.log(res8) } }) }, fail(res44){ console.log(res44) }, complete(res22){ console.log(res.services[2].uuid) console.log(res22) } }) } }) }, 小程序IOS能否直接读取一个长度为512字节的特征值(IOS不行,Android可以)
2019-06-17 - 小程序IOS蓝牙单个服务下特征值UUID过多无法读取
[图片] [图片] [图片] - 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo onLoad: function (options) { var _that = this var deviceId = options.id wx.getBLEDeviceServices({ deviceId: deviceId, success(res) { console.log(res) //setTimeout(function(){ wx.getBLEDeviceCharacteristics({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: deviceId, // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 serviceId:res.services[2].uuid, success(res55) { console.log('device getBLEDeviceCharacteristics:', res55) }, fail(res44){ console.log(res44) }, complete(res22){ console.log(res.services[2].uuid) console.log(res22) } }) } }) }, 第二个服务UUID下有22个特征值UUID,Android可以正常读取,IOS读取不了(也不报错就是不输出),现在发现问题是特征值UUID过多,17个正常,18/19个的时候就没反应了。这个IOS读取特征值个数限制在哪里修改呢?
2019-06-11