Как записать характеристики на Bluetooth-устройство с низким энергопотреблением без очистки - PullRequest
0 голосов
/ 26 июня 2019

Я использую следующий код с этого сайта для сопряжения и подключения к bluetooth-принтеру с низким энергопотреблением через браузер для моего asp.net MVC Web App.

navigator.bluetooth.requestDevice({
  filters: [{ services: [0xffe5] }]
})
  .then(function(device) {
    // Step 2: Connect to it
    return device.gatt.connect();
  })
  .then(function(server) {
    // Step 3: Get the Service
    return server.getPrimaryService(0xffe5);
  })
  .then(function(service) {
    // Step 4: get the Characteristic
    return service.getCharacteristic(0xffe9);
  })
  .then(function(characteristic) {
    // Step 5: Write to the characteristic
    var data = new Uint8Array([0xbb, 0x25, 0x05, 0x44]);
    return characteristic.writeValue(data);
  })
  .catch(function(error) {
     // And of course: error handling!
     console.error('Connection failed!', error);
});

Thisкод работает отлично, но я не понимаю, как это сделать, это отделить «Pairing», «Connecting», «Get Service» и «Write Service» от фактического написания характеристики.В идеале я хотел бы соединить, подключиться, получить услугу и характеристику один раз.Затем просто непрерывно пишите значения, чтобы я мог печатать несколько вещей без необходимости каждый раз отображать запрос на сопряжение.В каждом примере, который я видел, все они связаны между собой в формате .then, а не в отдельности.

В основном, как отделить это:

navigator.bluetooth.requestDevice({
  filters: [{ services: [0xffe5] }]
})
  .then(function(device) {
    // Step 2: Connect to it
    return device.gatt.connect();
  })
  .then(function(server) {
    // Step 3: Get the Service
    return server.getPrimaryService(0xffe5);
  })
  .then(function(service) {
    // Step 4: get the Characteristic
    return service.getCharacteristic(0xffe9);
  })
});

От этого:

  .then(function(characteristic) {
    // Step 5: Write to the characteristic
    var data = new Uint8Array([0xbb, 0x25, 0x05, 0x44]);
    return characteristic.writeValue(data);
  })
});

Спасибо.Это мое первое знакомство с BTLE, так что извините, если это глупый вопрос, но я немного борюсь.

...