收藏
回答

在蓝牙发送数据过程中,蓝牙设备自动断开,请问是什么原因

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.writeBLECharacteristicValue 客户端 v7.04 v2.6.6

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo

//开启通知-硬件返回数据

notifyBLECharacteristicValueChange() {

let that = this

console.debug('characteristicId', that.data.notiUUID)

wx.notifyBLECharacteristicValueChange({

deviceId: that.data.blueToothItem.deviceId,//设备id that.data.deviceId

serviceId: that.data.serviceId,//服务uuid

characteristicId: that.data.notiUUID,//特征uuid--只读

state: true,//true表示开启Notify,false关闭

success: function (res) {

console.debug('通知数据的改变---成功', res)

//that.openBlueTooth()

setTimeout(() => {

that.toStrFun()

}, 2000)

that.data.isProofread = false

that.data.isOpenBlueTooth = false

},

fail: function (res) {

console.debug('通知数据的改变--失败', res)

if (that.data.isProofread){

//校对时间写入失败

if(that.data.proofreadTimes < 4){

that.data.proofreadTimes ++

setTimeout(()=>{

that.toStrFun()

},1000)

}

if(that.data.proofreadTimes === 4){

that.data.proofreadTimes = 1

that.data.isProofread = false

wx.showToast({

title: '时间校对写入失败',

icon:'none'

})

}

}


//开锁数据写入失败

if (that.data.isOpenBlueTooth){

if (that.data.proofreadTimes < 4) {

that.data.proofreadTimes++

setTimeout(() => {

that.openBlueTooth()

}, 1000)

}

if (that.data.proofreadTimes === 4) {

that.data.proofreadTimes = 1

that.data.isProofread = false

wx.showToast({

title: '开锁写入失败',

icon: 'none'

})

}

}

}

})

//硬件返回数据

//that.openlockBack()


},


toStrFun: function () {

let that = this

let UUID = that.data.UUID

let serviceId = that.data.serviceId

//调用锁的各种指令

that.lockOrder()


console.debug('校对时间指令:', that.data.hexStrTime)

console.log('校对时间',util.hex2array(that.data.hexStrTime))

// 校准时间

wx.writeBLECharacteristicValue({

// 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取that.data.deviceId,

deviceId: that.data.blueToothItem.deviceId,

// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取

serviceId: serviceId,

// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取

characteristicId: UUID,

// 这里的value是ArrayBuffer类型hexStrTime,hexSearch

value: util.hex2array(that.data.hexStrTime),

success(res) {

console.debug('writeBLECharacteristicValue success kkkkk', res)

that.data.isProofread = true;


},

fail(error){

console.debug('搜索,连接.开锁error-------', error)

wx.showToast({

title: '发送时间校准失败',

icon:'none'

})

}

})

},
蓝牙是连接上的,在发送数据的时候,蓝牙就自动断开了,请问是怎么回事。日志在5月14号10:26分上传,手机是红米:Redmi Note 4x,MIUI版本:MIUI 10.2

最后一次编辑于  05-14  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 是柿子啊
    是柿子啊
    05-14

    麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点

    05-14
    赞同
    回复 5
    • 心乐
      心乐
      05-14

      微信号:shoujixinle5906,日志在10:26分上传了,手机是红米:Redmi Note 4x,MIUI版本:MIUI 10.2

      05-14
      回复
    • 是柿子啊
      是柿子啊
      05-16回复心乐

      试下原生app蓝牙看会吗?

      05-16
      回复
    • 郑智勇
      郑智勇
      07-14回复心乐
      找到问题了吗?
      07-14
      1
      回复
    • 心乐
      心乐
      07-15回复郑智勇
      找不到,用了别的方法,你也遇到这样的问题?
      07-15
      回复
    • 郑智勇
      郑智勇
      07-17
      我的问题是连接不稳定,想参考你的问题,
      07-17
      回复
  • 雨
    08-27

    在安卓上, 我也频繁遇到这个问题. 你找到解决办法了吗?

    08-27
    赞同
    回复 3
    • 心乐
      心乐
      08-27
      没有,用的方法是:断开了就再次连接
      08-27
      回复
    • 雨
      08-27回复心乐
      我也是这么操作的, 但是频繁出现连接超时,好苦恼
      08-27
      回复
    • 心乐
      心乐
      08-27
      连接的时候,从释放资源后,再重新连接
      08-27
      1
      回复