版主,你好,我发现你们的ble_API 有严重bug。
发现过程如下:
1. 论坛上面很多人都发现,通过ble_API,可以正常连接connect,使用 isConnect方法也正常。但是一旦 read或者write就出现问题了。 你的解答是 使用discover xxx方法, 获取蓝牙设备的serviceUUID,characteristicUUID, 以及 descriptorUUID。。。
2. 于是,我使用了discoverService方法,因为 如果discover Characteristic 和discover Descriptor 都需要使用ServiceUUID。
3. 这时,我就已经发现一个严重问题了, 无论怎么实验, discoverService方法返回的 status 始终是false。错误err.code 是 2 。也就是说 没有这个设备。。。
4. 然后,我顺藤摸瓜, 研究ble_API的源码。对源码稍微修改了一下,详情见图:
5. 然后我使用自己修改完的ble_api, 正常云编译,在真机上面运行。我发现有这样一个问题,connect正常。
6. 然后我使用 isConnect,返回的ret是true 说明也是正常。 接下来,我使用 discoverService,仍然ret是false,并且 返回的err.code是22 !!!!!
结论: 通过以上实验, 我发现 源码中mIBle 在 scan方法中 通过initIBle初始化。 在 isScan,stopScan .....这些方法 都是 判断的前提。 甚至在 Connect 和 isConnect中也都是判断正常的。 但是在 discoverService 以后, mIBle突然==null, 后面才会出现返回是false。
猜想: 是不是 discoverService 以及后面的 discover XXX, read ,write,setNotify都会是 因为 这个bug,才出现 返回一直是false呢?
我会继续研究下去, 但是也希望 官方 能尽快 找到问题,解决问题。 给大家提供可靠的API
|