7***@qq.com
7***@qq.com
  • 发布:2021-04-30 16:33
  • 更新:2021-05-01 20:13
  • 阅读:1980

蓝牙连接蓝牙设备后监听成功了但收不到设备的数据,只能App发数据给设备

分类:uni-app

app连接蓝牙设备后监听成功了但收不到蓝牙设备的数据,只能App发数据给蓝牙设备,但是在小程序中是可以收到数据的,而且小程序收一次数据后再回到app,然后app也可以收数据了,有没有大神知道这种奇葩问题的

'''
uni.notifyBLECharacteristicValueChange({
deviceId,
serviceId,
characteristicId,
state: true,
success: function(res) {
console.log("监听成功");//显示监听成功,但实际一直收不到数据
console.log(characteristicId)
uni.onBLECharacteristicValueChange(function(res) {
console.log('value.......')
});
},
fail: () => {
// console.log('监听失败')
// console.log(characteristicId)
}
});

'''

2021-04-30 16:33 负责人:无 分享
已邀请:
木杉丶

木杉丶 - 你喜或悲,他也都在那里

你先确定你蓝牙发过来APP端有没有接收到,是接收到了数据没显示,还是蓝牙发了这边监听都没动。一般情况做了监听蓝牙发过来APP这边你打印部分都会跳动显示一下,你如果是接收到了但是数据没显示的话你看开发文档有说,要转义一下的。如果你是蓝牙发了过来但是你的监听都没收都没提示,那估计就是没接成功。

  • 7***@qq.com (作者)

    就是监听成功收不到数据,那个回调函数动都不动一下,app是可以向蓝牙设备正常发数据,但就是收不到数据,然后我打开小程序,小程序那边接收一次数据后,再到app就可以收到数据了

    2021-04-30 17:26

  • 木杉丶

    你的监听成功只是蓝牙的notify开启成功,但是你的onBLECharacteristicValueChange你确定有没有成功才行呀,你不要跳出去,就用APP测,确定蓝牙发过来uni.onBLECharacteristicValueChange(function(res) {

    console.log('value.......')

    });这个里面的打印有没有跳动,如果里面的打印都没跳动那就是你的监听没成功,要不是你监听的服务没对,如果你是打印的这里都出现跳动那就只是显示问题

    2021-04-30 17:34

  • 7***@qq.com (作者)

    回复 木杉丶: 监听成功才会打印一个监听成功,然后调用uni.onBLECharacteristicValueChange,但这个回调一直没反应,那个监听成功已经打印出来了

    2021-04-30 18:32

  • 木杉丶

    蓝牙发消息过来app这边的这个console.log('value.......')都没反应是吧,那就是要不是你监听的服务没对,要不就是这个服务没有notify广播功能,你在去仔细对对监听的服务看看呗。

    2021-04-30 18:43

  • 7***@qq.com (作者)

    回复 木杉丶: 问题是我小程序是很正常的,用了小程序回来再回到app然后app这里也可以了

    2021-04-30 18:55

7***@qq.com

7***@qq.com (作者)

自己发现了一个很无聊的解决方法。。。就是uni.notifyBLECharacteristicValueChange监听成功前不要调用uni.readBLECharacteristicValue方法,延迟调用uni.readBLECharacteristicValue,或者这个方法干脆不调用我这边测试也可以,这样监听成功后可以正常监听到特征值变化,如果还不能监听到特征值变化可以在监听成功后先App给蓝牙设备发一条数据,这样就可以监听到了...目前只在安卓测试过有效,ios没测试,如果有童鞋遇到这个问题可以试一下这个方法

该问题目前已经被锁定, 无法添加新回复