如何声明Web蓝牙的多个特性?



我不知道如何实现多个特征:

目前我的代码在声明/实现单个特性时工作得很好:

.then((service) => {
pushlog("Getting Shutdown Characteristic...");
shdn = service.getCharacteristic(
"33ca7a02-c95f-4bca-a8bb-6692930216d0"
); return shdn;

然而,当我试图实现多个特征(纯文本uuid的作品与web蓝牙):

.then((service) => {
pushlog("Getting Characteristic...");
heart_rate_measurement = service.getCharacteristic(
"heart_rate_measurement"
);
temperature_measurement = service.getCharacteristic(
"temperature_measurement"
);
shdn = service.getCharacteristic(
"33ca7a02-c95f-4bca-a8bb-6692930216d0"
);
stim = service.getCharacteristic(
"b71ce29e-7353-40bf-a4dd-b0c03593e0ba"
);
battery = service.getCharacteristic("battery_level");
return (
shdn, heart_rate_measurement, temperature_measurement, stim, battery
);
})

我的读写代码不工作-

.then((shdn) => {
pushlog("Writing to Shutdown Characteristic...");
// Writing 1 is the signal to reset energy expended.
let resetEnergyExpended = Uint8Array.of(0x01);
return shdn.writeValue(resetEnergyExpended);
})

我是否错误地声明了这些附加特性?我看到的所有资源都是android BLE,而不是web蓝牙。我看到了一些使用类的解决方案,但是,我使用的是next.js,我不知道如何将香草JS类实现到react中。

service.getCharacteristic()返回一个Promise,因此为了让您的程序在执行传递给then()的回调之前正确等待您返回的所有承诺来解决,您需要将列表包装在Promise.all()中。回调将获得一个列表,然后你需要解包以获得所有单独的特征对象。

解构使得这相对容易编写:

.then((service) => {
pushlog("Getting Characteristic...");
heart_rate_measurement = service.getCharacteristic(
"heart_rate_measurement"
);
temperature_measurement = service.getCharacteristic(
"temperature_measurement"
);
shdn = service.getCharacteristic(
"33ca7a02-c95f-4bca-a8bb-6692930216d0"
);
stim = service.getCharacteristic(
"b71ce29e-7353-40bf-a4dd-b0c03593e0ba"
);
battery = service.getCharacteristic("battery_level");
return Promise.all([
shdn, heart_rate_measurement, temperature_measurement, stim, battery
]);
})
.then(([shdn, heart_rate_measurement, temperature_measurement, stim, battery]) => {
pushlog("Writing to Shutdown Characteristic...");
// Writing 1 is the signal to reset energy expended.
let resetEnergyExpended = Uint8Array.of(0x01);
return shdn.writeValue(resetEnergyExpended);
})

最新更新