小程序
小游戏
企业微信
微信支付
扫描小程序码分享
蓝牙连接成功后过了10多秒没做操作就断开了,不知道是小程序这边断开的还是设备断开的,所以想问下会出现自动断开的情况吗?
如何保持长连接?
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
连接成功不会自动断开, wx.createBLEConnection 和 wx.closeBLEConnection 成对调用, 调用wx.closeBLEConnection 或者 切到后端 挂起销毁, 或者 关闭蓝牙, 或者 超出蓝牙距离等客观原因 才会断开, 你可以 监听下 是否异常断开,用下面这个api
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
我这里也是会自动断开,连上蓝牙后,小程序接收数据,每次90s后会自动断开,但我在电脑上写的蓝牙接收程序接收硬件发过来的数据,不存在断开情况,因此这肯定是小程序里面的原因, 我是用的小程序测试账号,在开发工具里面用的真机调试,是不是因为这个?
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
连接成功不会自动断开, wx.createBLEConnection 和 wx.closeBLEConnection 成对调用, 调用wx.closeBLEConnection 或者 切到后端 挂起销毁, 或者 关闭蓝牙, 或者 超出蓝牙距离等客观原因 才会断开, 你可以 监听下 是否异常断开,用下面这个api
deviceId,
isConnect,
bluetoothMac
} = this.data;
if (deviceId === "") return showToast("请先搜索选择设备!!!");
if (isConnect) return showToast("请勿重复连接!!!");
return new Promise<void>(async (resolve, reject) => {
try {
showLoading("连接中...");
await createBLEConnection(deviceId);
const serviceId: string = await getBLEDeviceServices(deviceId);
const { writeCharacteristicId, readCharacteristicId }: GetBLEDeviceCharacteristicsResponse = await getBLEDeviceCharacteristics(deviceId, serviceId);
await notifyBLECharacteristicValueChange(deviceId, serviceId, readCharacteristicId);
this.setData({
writeCharacteristicId,
serviceId,
isConnect: true
});
this.triggerEvent('connect',{
writeCharacteristicId,
serviceId,
deviceId,
bluetoothMac,
isConnect: true
});
watchBLEConnectState(() => {
console.log('蓝牙断开');
this.triggerEvent('disconnect');
this.setData({
isConnect: false
})
});
hideLoading();
if (showMsg) showToast("连接成功");
resolve();
} catch (err: any) {
hideLoading();
if (err.err?.errCode === 10000) {
try {
await openBluetoothAdapter();
} catch (e: any) { }
}
reject(err);
}
})
我这里也是会自动断开,连上蓝牙后,小程序接收数据,每次90s后会自动断开,但我在电脑上写的蓝牙接收程序接收硬件发过来的数据,不存在断开情况,因此这肯定是小程序里面的原因, 我是用的小程序测试账号,在开发工具里面用的真机调试,是不是因为这个?