小记蓝牙模块开发的坑

最近在开发微信的蓝牙模块,之后会写一篇详细的开发文章。这篇就把已经遇到的问题做个归纳。
1.连接失败,10013错误后一直连接不上。因为我使用的自动连接,一开始的逻辑就写错了

  wx.getBluetoothDevices({
      success: function (res) { 
        console.log(res)     
        for(let i=0;i<res.devices.length;i++){
          if(res.devices[i].name===_this.data.blueName){
            _this.setData({
                    deviceId: res.devices[i].deviceId
                  })
          }
        } 

在获取附近设备中,通过循环判断蓝牙名字是否符合,匹配成功就把同名设备的连接id ——> res.devices[i].deviceId 赋值到data里面
避免在重新连接时,找不值或者保留着上次的值
2.使用 wx.closeBluetoothAdapter 关闭蓝牙,重新打开蓝牙,连接到上一次的值,而不是新的连接值。
这个问题解决方案是从网上找的,说实话,能找到能解决问题的文章,可真难。。。。
因为蓝牙是通过设备id连接的,而后续的读写操作,不仅需要设备id,还有本身的通道值。
可以在 wx.createBLEConnection()之前 声明一个变量去保存设备id
例如
let uuid = _this.data.deviceId;
后续的操作都通过uuid 来连接,最后在wx.closeBLEConnection()关闭连接的方法里,把uuid变成空值 。
3.蓝牙的逻辑
大致分两块
1.蓝牙的初始化 到 搜索获取,以及连接的过程
2.Arraybuffer 数组的写入和读取的过程 我的业务主要向后端请求,转化数据再发送到设备和硬件进行联调,所以不必关心数据本身

你可能感兴趣的:(小记蓝牙模块开发的坑)