uni-app 蓝牙获取数据失败错误10007

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 蓝牙获取数据失败错误10007

// 读取设备二进制数据  
readBLECharacteristicValue(deviceId) {  
    console.log('进入读取');  
    console.log("deviceId",deviceId)  
    console.log(" this.serviceId", this.serviceId)  
    console.log(" this.characteristicId", this.characteristicId)  
    setTimeout(()=>{  
    uni.readBLECharacteristicValue({  
        // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接  
        deviceId: deviceId,  
        // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取  
        serviceId: this.serviceId,  
        // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取  
        characteristicId: this.characteristicId,  
        success: (res) => {  
            console.log('readBLECharacteristicValue:', res)  
            this.readCode = res.errCode;  
            this.readCodeMsg = res.errMsg;  
            this.onBLECharacteristicValueChange(this.deviceId);  
        },  
        fail: (res) => {  
            console.log('readBLECharacteristicValue:', res)  
            this.readCode = res.errCode;  
            this.readCodeMsg = res.errMsg;  
            this.onBLECharacteristicValueChange(deviceId);  
        }  
    })  
    },200)  

},  

通过 uni.readBLECharacteristicValue 获取到的数据错误码为10007

{
"errMsg": "readBLECharacteristicValue:fail property not support",
"errCode": 10007,
"code": 10007
}

5 回复

大佬解决了么,我也同样的问题。所传characteristicId也是read为true的,却还是报10007,困扰了一下午了


你解决了不,我也是T T

我想问一下,有人解决了吗?

在处理 uni-app 中蓝牙获取数据失败并遇到错误码 10007 的问题时,通常这个错误码表示设备连接已断开或未正确建立连接。为了帮助你更好地解决这个问题,我将提供一个简化的蓝牙通信流程代码示例,包括初始化蓝牙适配器、扫描设备、连接设备、获取服务和特征值,以及读取数据。请注意,你需要根据实际的设备和服务特性调整这些代码。

1. 初始化蓝牙适配器

uni.openBluetoothAdapter({
    success: function (res) {
        console.log('蓝牙适配器初始化成功', res)
        // 扫描设备
        scanDevices();
    },
    fail: function (err) {
        console.error('蓝牙适配器初始化失败', err)
    }
});

2. 扫描设备

function scanDevices() {
    uni.startBluetoothDevicesDiscovery({
        allowDuplicatesKey: false,
        success: function (res) {
            console.log('开始扫描设备', res)
            uni.onBluetoothDeviceFound(function (devices) {
                devices.devices.forEach(device => {
                    console.log('找到设备', device)
                    // 连接设备(假设连接第一个找到的设备)
                    connectToDevice(device.deviceId);
                });
            });
        },
        fail: function (err) {
            console.error('扫描设备失败', err)
        }
    });
}

3. 连接设备

function connectToDevice(deviceId) {
    uni.createBLEConnection({
        deviceId: deviceId,
        success: function (res) {
            console.log('设备连接成功', res)
            // 获取服务
            getServices(deviceId);
        },
        fail: function (err) {
            console.error('设备连接失败', err)
        }
    });
}

4. 获取服务和特征值

function getServices(deviceId) {
    uni.getBLEDeviceServices({
        deviceId: deviceId,
        success: function (res) {
            const services = res.services;
            services.forEach(service => {
                console.log('服务', service)
                // 获取特征值(假设获取第一个服务的第一个特征值)
                getCharacteristics(deviceId, service.uuid);
            });
        },
        fail: function (err) {
            console.error('获取服务失败', err)
        }
    });
}

5. 读取数据

function getCharacteristics(deviceId, serviceId) {
    uni.getBLEDeviceCharacteristics({
        deviceId: deviceId,
        serviceId: serviceId,
        success: function (res) {
            const characteristics = res.characteristics;
            characteristics.forEach(characteristic => {
                console.log('特征值', characteristic)
                // 读取特征值数据
                readCharacteristicValue(deviceId, serviceId, characteristic.uuid);
            });
        },
        fail: function (err) {
            console.error('获取特征值失败', err)
        }
    });
}

function readCharacteristicValue(deviceId, serviceId, characteristicId) {
    uni.readBLECharacteristicValue({
        deviceId: deviceId,
        serviceId: serviceId,
        characteristicId: characteristicId,
        success: function (res) {
            console.log('读取数据成功', res)
        },
        fail: function (err) {
            console.error('读取数据失败', err) // 检查错误码是否为10007
        }
    });
}

请确保在读取数据时检查错误码,并根据实际情况处理连接断开的问题。希望这些代码能帮助你解决问题!

回到顶部