- 发布:2024-07-24 10:18
- 更新:2024-08-06 22:40
- 阅读:207
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows11
HBuilderX类型: 正式
HBuilderX版本号: 4.23
手机系统: 全部
手机系统版本号: iOS 14
手机厂商: 苹果
手机机型: 华为 Hi nova 9 Pro 和 苹果14
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
示例代码:
uni.onBLECharacteristicValueChange((res) => {
const hexString = _this.ab2hex(res.value);
});
ab2hex(buffer) {
console.log('buffer.byteLength',buffer.byteLength);
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
},
uni.onBLECharacteristicValueChange((res) => {
const hexString = _this.ab2hex(res.value);
});
ab2hex(buffer) {
console.log('buffer.byteLength',buffer.byteLength);
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
},
操作步骤:
蓝牙连接硬件后,监听硬件返回的数据
注:硬件返回的数据都一样
蓝牙连接硬件后,监听硬件返回的数据
注:硬件返回的数据都一样
预期结果:
微信小程序和APP(安卓)接收硬件返回的数据后,解析为54位,打印buffer.byteLength,苹果长度为27,安卓为27
注:硬件返回的数据都一样
微信小程序和APP(安卓)接收硬件返回的数据后,解析为54位,打印buffer.byteLength,苹果长度为27,安卓为27
注:硬件返回的数据都一样
实际结果:
微信小程序里:苹果解析为54位,安卓为40位,打印buffer.byteLength后发现,苹果长度为27,安卓为20
注:硬件返回的数据都一样
微信小程序里:苹果解析为54位,安卓为40位,打印buffer.byteLength后发现,苹果长度为27,安卓为20
注:硬件返回的数据都一样
bug描述:
小程序里:使用uni.onBLECharacteristicValueChange监听硬件,苹果和安卓获取的原数据长度不同,打印buffer.byteLength长度时发现
在微信小程序中:苹果长度为27,安卓长度为20
注:有几个重要的信息获取不到
2***@qq.com (作者)
uniapp框架的问题,硬件那边的同事用其他框架弄的APP,安卓手机读取的数据正常,uni官方这个没反应,硬件那边同事说他那边把原数据改成40位。
2024-08-07 09:12
1***@qq.com
回复 2***@qq.com: 谢谢,提供一个思路,我全网找不到解决办法。 ios 就能正常读取值,安卓就读到一段错误信息
2024-08-08 21:36