setTimeout(() => {
console.log(`开始写入${packet.index + 1}/${packet.total}包`);
wx.writeBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
value: packet.chunk, //数据格式
success: () => {
console.log(
`写入第 ${packet.index + 1}/${packet.total} 包成功`,
that.ab2str(packet.chunk)
);
// 模拟写入间隔,避免过快导致丢包
setTimeout(() => {
// 如果是最后一个包,则完成整个写入操作
if (packet.index === packet.total - 1) {
//wx.hideLoading();
packet.resolve();
}
that.processWriteQueue(deviceId, serviceId, characteristicId);
}, 5);
},
fail: (err) => {
wx.hideLoading();
console.error(
`写入第 ${packet.index + 1}/${packet.total} 包失败`,
err
);
packet.reject(err);
that.setData({
writing: false,
});
},
});
}, 5);
在华为mate70 pro上 harmonyos版本4.30上写入蓝牙数据会经常延迟15S秒以上
console.log(`开始写入${packet.index + 1}/${packet.total}包`
这里执行了,但是回调的success延迟15秒以上回复,而后会很快的把队列的数据一把全发出去,过一会又这样无限循环
设备收包对比

是只有安卓复现吗?麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,提供一下微信号,时间点
如果是不回调都好排查,关键是也不报错,光延迟