uni-app 蓝牙获取数据失败错误10007
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
}
});
}
请确保在读取数据时检查错误码,并根据实际情况处理连接断开的问题。希望这些代码能帮助你解决问题!