我试图在Windows 10上使用带有chrome的web蓝牙。当我从特性中读取值时,我每次都得到相同的数据,这是不正确的。我使用了与c#UWP应用程序相同的BLE硬件,并且在将其更改为使用未缓存模式进行读取之前具有相同的结果。那么有什么方法可以在从特征中读取值时不使用缓存模式进行Web蓝牙?
以下代码每秒轮询一次特征。这是一个蓝牙温度计,每当温度上升和下降时温度都会发生变化。
ngOnInit() {
navigator.bluetooth.requestDevice({
filters: [{services: ['battery_service']}],
optionalServices: ['f2b32c77-ea68-464b-9cd7-a22cbffb98bd']
})
.then(device => device.gatt.connect())
.then(server => {
// Getting Temp Service...
return server.getPrimaryService('f2b32c77-ea68-464b-9cd7-a22cbffb98bd');
})
.then(service => {
// Getting Battery Level Characteristic...
return service.getCharacteristic('78544003-4394-4fc2-8cfd-be6a00aa701b');
})
.then(characteristic => {
// Reading Battery Level...
this.tempChar = characteristic;
setInterval(() => {
this.readOverAndOver(characteristic);
}, 1000);
return characteristic.readValue();
})
.then(value => {
console.log('Battery percentage is ' + value.getUint8(0));
})
.catch(error => {
console.log(error);
});
}
readOverAndOver(特征:任意){ const textEncoder = new TextDecoder();
this.tempChar.readValue().then(value => {
const stringThing = textEncoder.decode(value);
console.log(stringThing);
console.log('new value: ', value);
});
}
答案 0 :(得分:0)
您可能希望在https://bugs.chromium.org/p/chromium/issues/entry?components=Blink%3EBluetooth处将此文件视为Chrome中的错误。