-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Description
发行方式
App
具体平台
微信小程序、APP
开发环境
None
项目创建方式
None
依赖版本
无
问题描述
一、问题
在微信小程序连接蓝牙过程中,硬件设备同一个服务下存在两个相同uuid的特征值。
小程序:安卓可根据handle进行区别,IOS目前不支持
app:安卓、IOS都不支持handle
二、尝试步骤-微信小程序原生
1、前提
在微信小程序与ble蓝牙通信过程中:
每个蓝牙设备可能提供多个 Service,每个 Service 可能有多个 Characteristic,我们根据蓝牙设备的协议用对应的 Characteristic 进行读、写、监听即可达到与其通信的目的。
读:
写:wx.writeBLECharacteristicValue
监听:wx.notifyBLECharacteristicValueChange
2、测试遇到的问题
已知设备使用固定的serviceId(55535343-FE7D-4AE5-8FA9-9FAFD205E455)和characteristic (49535343-1E4D-4BD9-BA61-23C647249616)来进行蓝牙通信。
使用微信小程序连接硬件设备时,发现设备serviceId下存在两个相同的特征characteristic ,导致wx.writeBLECharacteristicValue和wx.notifyBLECharacteristicValueChange命令不成功。
3、查询解决方案
微信开放社区中同类问题:
https://developers.weixin.qq.com/community/develop/doc/00022e9840cf28028131e64e861000
https://developers.weixin.qq.com/community/develop/doc/000cc8d4f1c3e079635e6e57c51800
3、问题结论分析:IOS设备暂不支持
Android上getBLEDeviceCharacteristics返回的characteristic对象上有一个新的属性handle,可以用来区分同uuid的多个characteristic。writeBLECharacteristicValue和notifyBLECharacteristicValueChange的时候传入uuid之外也传入handle即可。
IOS设备暂不支持
4、Android设备方案尝试
通过wx.getBLEDeviceCharacteristics获取服务(55535343-FE7D-4AE5-8FA9-9FAFD205E455)中所有特征 (characteristic)。存在两个相同uuid 的特征值,但可以根据handle来进行区分
[
{
"uuid": "49535343-1E4D-4BD9-BA61-23C647249616",
"handle": 33,
"properties": {
"read": false,
"write": true,
"notify": false,
"indicate": false,
"writeNoResponse": true,
"writeDefault": true
}
},
{
"uuid": "49535343-1E4D-4BD9-BA61-23C647249616",
"handle": 35,
"properties": {
"read": false,
"write": false,
"notify": true,
"indicate": true,
"writeNoResponse": false,
"writeDefault": false
}
}
]
三、尝试步骤-uniapp开发小程序及app
1、开发小程序,安卓正常,IOS还是存在此问题
2、开发app,项目代码打包成安卓包后,仍然存在此问题
重现步骤
硬件设备同一个服务下存在两个相同uuid的特征值
期望行为
No response
实际行为
No response
截图或录屏
No response