zhaodahai / wx-ant-ble

微信、支付宝小程序BLE蓝牙SDK
MIT License
99 stars 28 forks source link

发现一个bug,就是如果有一个service的属性值为0会报错 #5

Open work4blue opened 3 years ago

work4blue commented 3 years ago

就是某个service 下不存在任何属性,联接蓝牙时会报错:

errMsg: "getBLEDeviceCharacteristics:fail:no characteristic"

message: "没有找到指定特征值"

zhaodahai commented 3 years ago

同学你好。这个问题确实是最初一个不好的设定,如果特征值为空,蓝牙连接会断开并报错。但是我现在已经转行很久了,建议你找硬件的同学添加一下特征值,实在抱歉了。

work4blue commented 3 years ago

谢谢回复,找硬件改流程太长了,所以改一下代码比较现实,主要我对ts 语法不熟,有不有什么办法跳开这个属性为0的获取? 因为代码嵌套太深,在我代码里加入一个service id 检测但是仍然报错,能否指定一下如何调整?

device.services = res.services.map(server => {
              let sUUID = server.uuid || server.serviceId;
              console.log("getBLEDeviceCharacteristics scan service "+sUUID);

              if(sUUID == "00001800-0000-1000-8000-00805F9B34FB")
              {//临时关掉没有任何属性的服务,在微信下扫描会报错 
                //errMsg: "getBLEDeviceCharacteristics:fail:no characteristic" 没有找到指定特征值"
                return {serviceId: sUUID}
              }
              let sPromise = _.api('getBLEDeviceCharacteristics', '', {
                deviceId,
                serviceId: sUUID
              })

              sPromises.push(sPromise);
              return { serviceId: sUUID };
            })
zhaodahai commented 3 years ago

这个就是JS的语法,没有用到TS。主要转行快2年了,我也不知道怎么调整了。。实在抱歉