Я использую следующий код с этого сайта для сопряжения и подключения к 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, так что извините, если это глупый вопрос, но я немного борюсь.