Web蓝牙特征数据缓存

时间:2018-05-28 22:22:36

标签: web bluetooth

我试图在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);
});

}

1 个答案:

答案 0 :(得分:0)

您可能希望在https://bugs.chromium.org/p/chromium/issues/entry?components=Blink%3EBluetooth处将此文件视为Chrome中的错误。