l***@qq.com
l***@qq.com
  • 发布:2020-06-02 22:15
  • 更新:2020-06-02 23:16
  • 阅读:894

蓝牙问题那么多,为什么官方不说明一下!!!!真鸡儿坑!!

分类:uni-app

首先使用示例无特征值读取功能。把注释去掉读取特征值有问题,根本读不到,使用其他网友的例子,更是一直连接失败。能给个完整的蓝牙示例吗?到底是本身蓝牙函数有问题还是咋了?萌新表示不理解?如果蓝牙确实有问题无法进行数据通信,请明示!以下函数能读出值吗?

readBLECharacteristicValue() {  
            let deviceId = this.equipment[0].deviceId;  
            let serviceId = this.servicesData[0].uuid;  
            let characteristicId = this.characteristicsData[0].uuid;  
            console.log(deviceId);  
            console.log(serviceId);  
            console.log(characteristicId);  
            uni.readBLECharacteristicValue({  
                // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接  
                deviceId,  
                // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取  
                serviceId,  
                // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取  
                characteristicId,  
                success: res => {  
                    console.log('读取设备数据值成功');  
                    console.log(JSON.stringify(res));  
                    this.notifyBLECharacteristicValueChange();  
                },  
                fail(e) {  
                    console.log('读取设备数据值失败,错误码:' + e.errCode);  
                    if (e.errCode !== 0) {  
                        initTypes(e.errCode);  
                    }  
                }  
            });  
            this.onBLECharacteristicValueChange();  
        },
2020-06-02 22:15 负责人:无 分享
已邀请:
l***@qq.com

l***@qq.com (作者)

事实证明蓝牙可以用,我已经把代码修改如下》》》》

<view v-if="valueChangeData.serviceId">  
                    <view class="list-name">  
                        特征值最新的值:{{ valueChangeData.value || '还没有最新值' }}  
                    </view>  
                </view>

以上代码改为如下,直接获取特征值:

<view class="list-name">  
    特征值最新的值:{{ valueChangeData }}  
</view>

其他修改如下:

//增加转换函数:  
function buffer2hex(value){  
    var t='';  
    if(value){  
        var v=new Uint8Array(value);  
        for(var i in v){  
            t += '0x'+v[i].toString(16)+' ';  
        }  
    }else{  
        t='无效值';  
    }  
    return t;  
}  
//监听函数修改如下,这样获取的特征值直接进行解码,然后就可以了!!!!你就会在界面看到自己传输的数据啦。  
uni.onBLECharacteristicValueChange(characteristic => {  
                console.log('监听低功耗蓝牙设备的特征值变化事件成功');  
                console.log(JSON.stringify(characteristic)+'\n');  
                console.log(buffer2hex(characteristic.value)+'\n');//buf2hex(characteristic)+i  
                this.valueChangeData = buffer2hex(characteristic.value);  
            });

该问题目前已经被锁定, 无法添加新回复