微信版本都是最新的 vivo的、oppo a7 android 的都会截断 vivo y67a andtoid 6.0 oppo a7x android 8.1.0 这个机子扫描不到设备 // 开始扫描 Inventory: function () { var that = this; that.setData({ 'Taglist': [] }) var deviceId = that.data.defaultDeviceId;//.DevicesConnected[0].deviceId; //getApp().data.deviceId;//全局变量 console.log("deviceId:" + deviceId) that.setData({ deviceId: deviceId }) if (deviceId == "") { wx.showModal({ title: '提示', content: '未连接蓝牙设备,请连接蓝牙设备', }) return } wx.getBLEDeviceServices({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: that.data.deviceId, success: function (res) { console.log('device services:', res) var serviceId = res.services[0].uuid//设置serviceId的值 that.setData({ serviceId: serviceId }) wx.getBLEDeviceCharacteristics({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: that.data.deviceId, // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取 serviceId: that.data.serviceId, success: function (res) { console.log('device getBLEDeviceCharacteristics:', res.characteristics) for (var i = 0; i < res.characteristics.length; i++) { if (res.characteristics[i].properties.write) { that.setData({ writeCharacteristicId: res.characteristics[i].uuid, }) } if (res.characteristics[i].properties.read) { that.setData({ readCharacteristicId: res.characteristics[i].uuid, }) } if (res.characteristics[i].properties.notify) { that.setData({ notifyCharacteristicId: res.characteristics[i].uuid, }) } } wx.notifyBLECharacteristicValueChange({ state: true, // 启用 notify 功能 // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 deviceId: that.data.deviceId, // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接s口中获取 serviceId: that.data.serviceId, // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取 characteristicId: that.data.notifyCharacteristicId, success: function (res) { console.log('notifyBLECharacteristicValueChange success', res.errMsg) // 必须在这里的回调才能获取 }, }) }, fail: function (res) { console.log(res) } }) } }) var tag = ""; var TaglistArray = that.data.Taglist wx.onBLECharacteristicValueChange(function (res) { //处理数据,将Arraybuffer转换为base64,在将base64转换为字符串 var base64str = base64.decode(wx.arrayBufferToBase64(res.value))//base64解密 console.log(res.characteristicId); console.log(base64str) // 过滤id //base64str = base64str.replace if (base64str.length>20){ TaglistArray.push(base64str.replace(/\s+/g, '')); } that.setData({ Taglist: TaglistArray, }) that.setData({ goods_num: TaglistArray.length, }) console.log(TaglistArray) }) wx.readBLECharacteristicValue({ // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 [**new**] deviceId: that.data.deviceId, // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取 serviceId: that.data.serviceId, // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取 characteristicId: that.data.readCharacteristicId, success: function (res) { console.log('readBLECharacteristicValue:', res) } }) },
调用蓝牙接口 android和iphone取到的数据解析出来不一样?调用接口wx.onBLECharacteristicValueChange iphone 返回如下: [图片] android 返回如下, [图片] 怎么感觉是android 把这个给截断了呢 ?
2018-12-13