使用网络蓝牙从 BLE 设备读取数据?
Reading data from BLE device with web bluetooth?
我是 javascript 的新手,所以我可能有一些非常规的编程方式。
也就是说,我正在做一个项目,我需要在自定义 BLE 设备上读取和写入数据。
我正在使用 gatt 服务器协议进行连接。
我能够与设备建立连接,但现在我正在尝试从寄存器中读取数据。
我查看了来自 google 的网络样本以及网络蓝牙 github,但我无法理解它。下面的代码是我目前试图打破这个。之前的尝试让我陷入了这样一个事实,即我得到的值是一个对象或一个 promise 对象。
function readFromPcb() {
let p2 = new Promise((resolve, reject) => {
if (device.connected === false) {
reject('network Error');
}
})
.then(characteristic => {
readValue = characteristic.readValue();
console.log('data is: ' + readValue);
})
.catch(error => {
console.log('error: ' + error + DOMException.name);
});
}
我对 Web Bluetooth 知之甚少,但我注意到您的最高承诺从未兑现。如果设备未连接,它要么拒绝,要么……什么都不做。如果您希望 then
回调到 运行,您需要在主要承诺中的某个时间点调用 resolve()
。也就是说,由于您明确构建了这个承诺,因此它解析的值将只是您自己传递给 resolve()
的任何参数;这听起来不像你想要的。什么函数应该给你 "characteristic"?这可能是 returns 一个承诺,你不需要自己构建一个,你可以将其他 then
回调链接到承诺上 returns 为你。
我做到了!我需要访问网络蓝牙的特征级别。之后,我可以使用我的连接函数的承诺将 .then 链接到我的读取函数。
感谢您的帮助。
function readFromPcb() {
prom.then(_ => {
console.log('getting data...');
gattChar.readValue();
})
.catch(error => {
console.log('error: ' + error + ' ' + DOMException.name);
});
}
我是 javascript 的新手,所以我可能有一些非常规的编程方式。 也就是说,我正在做一个项目,我需要在自定义 BLE 设备上读取和写入数据。 我正在使用 gatt 服务器协议进行连接。 我能够与设备建立连接,但现在我正在尝试从寄存器中读取数据。
我查看了来自 google 的网络样本以及网络蓝牙 github,但我无法理解它。下面的代码是我目前试图打破这个。之前的尝试让我陷入了这样一个事实,即我得到的值是一个对象或一个 promise 对象。
function readFromPcb() {
let p2 = new Promise((resolve, reject) => {
if (device.connected === false) {
reject('network Error');
}
})
.then(characteristic => {
readValue = characteristic.readValue();
console.log('data is: ' + readValue);
})
.catch(error => {
console.log('error: ' + error + DOMException.name);
});
}
我对 Web Bluetooth 知之甚少,但我注意到您的最高承诺从未兑现。如果设备未连接,它要么拒绝,要么……什么都不做。如果您希望 then
回调到 运行,您需要在主要承诺中的某个时间点调用 resolve()
。也就是说,由于您明确构建了这个承诺,因此它解析的值将只是您自己传递给 resolve()
的任何参数;这听起来不像你想要的。什么函数应该给你 "characteristic"?这可能是 returns 一个承诺,你不需要自己构建一个,你可以将其他 then
回调链接到承诺上 returns 为你。
我做到了!我需要访问网络蓝牙的特征级别。之后,我可以使用我的连接函数的承诺将 .then 链接到我的读取函数。
感谢您的帮助。
function readFromPcb() {
prom.then(_ => {
console.log('getting data...');
gattChar.readValue();
})
.catch(error => {
console.log('error: ' + error + ' ' + DOMException.name);
});
}