小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包

微信小程序,微信公开课,小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包 微信公开课

如何看待微信公开课小程序热门讨论「小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包」
摘要:小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包
展开:之前反应过这个问题,但是没有人回应,以为是蓝牙有问题,买了新的ble蓝牙模块,通过串口连接到电脑测试,断开之后再连接收到多个数据包,下面是测试的代码和测试的图片,希望得到帮助!代码:Page({data:{deviceId:,serviceId:,charId:,devicecon:[],},onLoad:function(){varthatthis;wx.openBluetoothAdapter({success:function(res){wx.getBluetoothAdapterState({success:function(res){wx.startBluetoothDevicesDiscovery({success:function(res){wx.getBluetoothDevices({success:function(res){for(vari0;ires.devices.length;i++){that.data.devicecon.push(res.devices[i][deviceId]);}wx.onBluetoothDeviceFound(function(devices){for(vari0;idevices.devices.length;i++){that.data.devicecon.push(devices.devices[i][deviceId]);}that.setData({devicecon:that.data.devicecon,});console.log(that.data.devicecon);})}})}})}})}})wx.onBLEConnectionStateChange(function(res){if(!res.connected){console.log(已经断开了);}})//特征值改变wx.onBLECharacteristicValueChange(function(res){varbuf(res.value.byteLength);console.log(我真的只发送一次);console.log(buf);console.log(我真的只发送一次);})},linkbluetooth:function(e){varthatthis;that.data.deviceIde.currentTarget.dataset.value;wx.createBLEConnection({deviceId:that.data.deviceId,success:function(res){console.log(经连接成功了!)wx.getBLEDeviceServices({deviceId:that.data.deviceId,success:function(res){for(vari0;ires.services.length;i++){if(res.services[i][uuid].indexOf(ffe0)!1){that.data.serviceIdres.services[i][uuid];}}//获取特征值if(that.data.serviceId){setTimeout(function(){wx.getBLEDeviceCharacteristics({deviceId:that.data.deviceId,serviceId:that.data.serviceId,success:function(res){for(vari0;ires.characteristics.length;i++){if(res.characteristics[i][uuid].indexOf(ffe1)!1){that.data.charIdres.characteristics[i][uuid];}}wx.notifyBLECharacteristicValueChange({state:true,//启用notify功能//这里的deviceId需要在上面的getBluetoothDevices或onBluetoothDeviceFound接口中获取deviceId:that.data.deviceId,//这里的serviceId需要在上面的getBLEDeviceServices接口中获取serviceId:that.data.serviceId,//这里的characteristicId需要在上面的getBLEDeviceCharacteristics接口中获取characteristicId:that.data.charId,success:function(res){console.log(notifyBLECharacteristicValueChangesuccess,res.errMsg)}});console.log(that.data.charId);that.writecomm();}})},2000);}}})}})},writecomm:function(){varthatthis;letbuffernewArrayBuffer(1)letdataViewnewDataView(buffer)dataView.setUint8(0,99);wx.writeBLECharacteristicValue({//这里的deviceId需要在上面的getBluetoothDevices或onBluetoothDeviceFound接口中获取deviceId:that.data.deviceId,//这里的serviceId需要在上面的getBLEDeviceServices接口中获取serviceId:that.data.serviceId,//这里的characteristicId需要在上面的getBLEDeviceCharacteristics接口中获取characteristicId:that.data.charId,//这里的value是ArrayBuffer类型value:buffer,success:function(res){console.log(writeBLECharacteristicValuesuccess,res.errMsg)}})}串口已经连接到了蓝牙模块,最后一行R:0是电脑接收到的字节,S:0是发送的给蓝牙的字节,刚开始都是0连接到了蓝牙此时,串口收到了1个字节的数据,为代码中10进制的99,就是16进制的63通过串口发送一个字节的数字给蓝牙模块此时接收和发送的数据都是1完全是没有问题的,但是在蓝牙模块意外中断之后,问题就来了(图片太大了,不能超过5M,只能缩小一下图片了)拔掉蓝牙电源线,通信中断了蓝牙断开之后重新接电,连接蓝牙再次连接成功收到了有收到了第二个63,再发送一个31给蓝牙,监听特征值缺收到了2个数据包加第一次的数据包一共是3个。而且你断开n次,重新连接之后你就可以收到n+1个数据包。用wx.closeBluetoothAdapter(OBJECT)断开资源,重新连接,依然是收到两个数据包,除非退出小程序重新进入,或者关闭手机蓝牙再次打开。了解更多

「小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包」热门讨论订阅

微信小程序,微信公开课,小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包
订阅小程序

方法1:微信扫描微信公开课小程序码即可订阅热门讨论「小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包」

方法2:微信搜索微信公开课小程序名称进入,即可订阅热门讨论「小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包」

方法3:微信网页访问即速商店,长按识别微信公开课小程序码即可订阅热门讨论「小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包」

微信公开课小程序热门讨论「小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包」由微信公开课原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。

微信公开课热门讨论「小程序(附上测试代码与图片)BLE蓝牙断开后重新连接收到多个相同数据包」由微信公开课开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。