收藏
回答

wx.createBLEConnection连接成功会有过多长时间自动断开吗?

蓝牙连接成功后过了10多秒没做操作就断开了,不知道是小程序这边断开的还是设备断开的,所以想问下会出现自动断开的情况吗?

如何保持长连接?

最后一次编辑于  2023-06-02
回答关注问题邀请回答
收藏

2 个回答

  • 大熊
    大熊
    2023-06-02

    连接成功不会自动断开,  wx.createBLEConnection 和 wx.closeBLEConnection 成对调用, 调用wx.closeBLEConnection 或者 切到后端 挂起销毁, 或者 关闭蓝牙, 或者 超出蓝牙距离等客观原因 才会断开, 你可以 监听下 是否异常断开,用下面这个api

    2023-06-02
    有用 1
    回复 21
    • 李湘辉
      李湘辉
      2023-06-02
      就是在这里面监听到断开的,也没调用closeBLEConnection就自动断开了
      2023-06-02
      回复
    • 大熊
      大熊
      2023-06-02回复李湘辉
      返回什么错误信息了
      2023-06-02
      回复
    • 李湘辉
      李湘辉
      2023-06-02
      const {
                      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);
                      }
                  })
      2023-06-02
      回复
    • 大熊
      大熊
      2023-06-02回复李湘辉
      wx.onBLEConnectionStateChange  我说这个监听异常断开连接的api返回什么错误信息
      2023-06-02
      回复
    • 李湘辉
      李湘辉
      2023-06-02回复大熊
      没什么错误信息,就回调了onBLEConnectionStateChange
      2023-06-02
      回复
    查看更多(16)
  • Landy
    Landy
    01-12

    我这里也是会自动断开,连上蓝牙后,小程序接收数据,每次90s后会自动断开,但我在电脑上写的蓝牙接收程序接收硬件发过来的数据,不存在断开情况,因此这肯定是小程序里面的原因, 我是用的小程序测试账号,在开发工具里面用的真机调试,是不是因为这个?

    01-12
    有用
    回复
登录 后发表内容