小程序
小游戏
企业微信
微信支付
扫描小程序码分享
蓝牙设备接收数据可以,现在要加写入的功能。
多组可用的serviceId+uuid值写入回调正常writeBLECharacteristicValue:ok,但在onBLECharacteristicValueChange得不到正确的反馈数据(安卓和IOS都是如此)
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
可以接收蓝牙设备的数据,但写入得不到对应的反馈数据 相关代码片段如下(字节数不超过20,也有延时处理)
MG4J2CH/A 苹果6 8.3 微信版本6.7.4
华为畅享8 安卓8.0.0 微信版本7.0.13
//取蓝牙服务特征值 getBLEDeviceCharacteristics(deviceId, serviceId) { wx.getBLEDeviceCharacteristics({ deviceId, serviceId, success: (res) => { console.log("getBLEDeviceCharacteristics"); console.log(res); for (let i = 0; i < res.characteristics.length; i++) { let item = res.characteristics[i] console.log(item); if (item.properties.notify || item.properties.indicate) { wx.notifyBLECharacteristicValueChange({ deviceId, serviceId, characteristicId: item.uuid, state: true, success: function (res) { console.log("notifyBLECharacteristicValueChange"); console.log(res); } }); } if (item.properties.write) { let uuid = item.uuid; if(arr_info[serviceId]) { arr_info[serviceId].push(uuid); }else{ arr_info[serviceId] = [uuid]; } this.writeBLECharacteristicValue(deviceId, serviceId, uuid); } } }, fail(res) { console.error('getBLEDeviceCharacteristics', res) } }) // 操作之前先监听,保证第一时间获取数据 wx.onBLECharacteristicValueChange((characteristic) => { console.log("onBLECharacteristicValueChange"); console.log(characteristic); let value = new Uint8Array(characteristic.value); getUint8Value(characteristic.value, function (res) { console.log(res); }); }) }, //写入一个特征值 预期在onBLECharacteristicValueChange拿到蓝牙设备传输过来的反馈数据 writeBLECharacteristicValue(deviceId, serviceId, characteristicId) { let buffer = new ArrayBuffer(6); let dataView = new DataView(buffer); //判断是否开启鉴权的命令 dataView.setUint8(0, 0xa5); //头部 dataView.setUint8(1, 0x01); // dataView.setUint8(2, 0x04); //命令字 dataView.setUint8(4, 0x00); //流水号 dataView.setUint8(3, 0x23); dataView.setUint8(5, 0x57); //校验 setTimeout(()=>{ console.log(arr_info); //{"serviceId1": [uuid1, uuid2], "serviceId2": [uuid1, uuid2] } console.log(Object.keys(arr_info)); let keys = Object.keys(arr_info); wx.writeBLECharacteristicValue({ deviceId: deviceId, serviceId: keys[1], //serviceId, characteristicId: arr_info[keys[1]][0],//characteristicId, value: buffer, success(res){ console.log('writeBLECharacteristicValue success', res) }, fail(err){ console.log('writeBLECharacteristicValue fail', err) } }) }, 5000);
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你好,麻烦具体描述问题流程,提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
可以接收蓝牙设备的数据,但写入得不到对应的反馈数据 相关代码片段如下(字节数不超过20,也有延时处理)
MG4J2CH/A 苹果6 8.3 微信版本6.7.4
华为畅享8 安卓8.0.0 微信版本7.0.13
//取蓝牙服务特征值 getBLEDeviceCharacteristics(deviceId, serviceId) { wx.getBLEDeviceCharacteristics({ deviceId, serviceId, success: (res) => { console.log("getBLEDeviceCharacteristics"); console.log(res); for (let i = 0; i < res.characteristics.length; i++) { let item = res.characteristics[i] console.log(item); if (item.properties.notify || item.properties.indicate) { wx.notifyBLECharacteristicValueChange({ deviceId, serviceId, characteristicId: item.uuid, state: true, success: function (res) { console.log("notifyBLECharacteristicValueChange"); console.log(res); } }); } if (item.properties.write) { let uuid = item.uuid; if(arr_info[serviceId]) { arr_info[serviceId].push(uuid); }else{ arr_info[serviceId] = [uuid]; } this.writeBLECharacteristicValue(deviceId, serviceId, uuid); } } }, fail(res) { console.error('getBLEDeviceCharacteristics', res) } }) // 操作之前先监听,保证第一时间获取数据 wx.onBLECharacteristicValueChange((characteristic) => { console.log("onBLECharacteristicValueChange"); console.log(characteristic); let value = new Uint8Array(characteristic.value); getUint8Value(characteristic.value, function (res) { console.log(res); }); }) }, //写入一个特征值 预期在onBLECharacteristicValueChange拿到蓝牙设备传输过来的反馈数据 writeBLECharacteristicValue(deviceId, serviceId, characteristicId) { let buffer = new ArrayBuffer(6); let dataView = new DataView(buffer); //判断是否开启鉴权的命令 dataView.setUint8(0, 0xa5); //头部 dataView.setUint8(1, 0x01); // dataView.setUint8(2, 0x04); //命令字 dataView.setUint8(4, 0x00); //流水号 dataView.setUint8(3, 0x23); dataView.setUint8(5, 0x57); //校验 setTimeout(()=>{ console.log(arr_info); //{"serviceId1": [uuid1, uuid2], "serviceId2": [uuid1, uuid2] } console.log(Object.keys(arr_info)); let keys = Object.keys(arr_info); wx.writeBLECharacteristicValue({ deviceId: deviceId, serviceId: keys[1], //serviceId, characteristicId: arr_info[keys[1]][0],//characteristicId, value: buffer, success(res){ console.log('writeBLECharacteristicValue success', res) }, fail(err){ console.log('writeBLECharacteristicValue fail', err) } }) }, 5000);
你好,麻烦具体描述问题流程,提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html