首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web-Bluetooth API,无法更新特性。时间相关的更新是可能的吗?

Web-Bluetooth API,无法更新特性。时间相关的更新是可能的吗?
EN

Stack Overflow用户
提问于 2021-11-02 10:21:43
回答 1查看 92关注 0票数 1

我试图在它们每次改变时获取特征,问题是,它们改变了,但eventListener无法识别它。所以我只得到了第一个值,在连接到我的BLE之后,但在那之后什么也没有发生。我的代码中有什么地方错了吗?

另一个问题是,有没有办法每隔5秒更新一次特征,比如我不知道5秒?您将如何做到这一点,有什么代码示例吗?(可能使用setInterval()?)

谢谢!

代码语言:javascript
复制
function test() {
  console.log('Requesting Bluetooth Device...');
  navigator.bluetooth.requestDevice({
    acceptAllDevices: true,
    optionalServices: ['af07ecb8-e525-f189-9043-0f9c532a02c7']
    })                     //c7022a53-9c0f-4390-89f1-25e5b8ec07af
  .then(device => {
    console.log('Gatt Server Verbindung');
    return device.gatt.connect();
  })
  .then(server => {
    console.log('Dose Service...');
    return server.getPrimaryService('af07ecb8-e525-f189-9043-0f9c532a02c7');
  })
  .then(service => {
    console.log('mgyh Characteristic...');
    return service.getCharacteristic('a99e0be6-f705-f59c-f248-230f7d55c3c1');
  })
  .then(characteristic => {
    // Set up event listener for when characteristic value changes.
    characteristic.addEventListener('characteristicvaluechanged',dosechanged);
    
    return characteristic.readValue();
  })
  .catch(error => {
    console.log('Das geht nicht: ' + error);
  });
}

function dosechanged(event) {
  
  let dose = event.target.value.getUint8(0)+event.target.value.getUint8(1)*10+event.target.value.getUint8(2)*100 + event.target.value.getUint8(3)*1000+ event.target.value.getUint8(4)*10000;
  console.log('Received ' + dose);

} 
EN

回答 1

Stack Overflow用户

发布于 2021-11-02 11:24:41

  1. 您错过了开始接收通知的characteristic.startNotifications()调用。example
  2. setInterval可以每隔5秒调用一次readValue()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69808752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档