不支持 Bluno 板上的 Web 蓝牙 API 特征通知?
Web bluetooth API characteristic notification on Bluno board is not supported?
TL;DR;
我的问题是:
https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth 的 Web 蓝牙 API 目前是否不完全支持某些自定义设备,如 Arduino 板?因为当我尝试对我的 Bluno Beetle 开发板使用 BluetoothRemoteGATTCharacteristic.startNotifications()
时出现 DOMException: GATT Error: Not supported.
异常。
如果startNotifications()
完全实现。那么,为了使通知正常工作,我的 Bluno 板上是否需要配置任何额外的设置?在大多数在线示例中,没有提及在使用此方法之前对设备进行额外设置。我在运行时检查了目标特征的 notify
属性是 true
。它不应该是 https://webbluetoothcg.github.io/web-bluetooth/ 中所述的出现此异常的原因:
If neither of the Notify or Indicate bits are set in characteristic’s properties, reject promise with a NotSupportedError and abort these steps.
我的情况:
我正在尝试在 chrome 上构建一个小网络演示,它可以输出从我的 Bluno Beetle v1.0 板传输的文本。
我板子里面的程序很简单:
void setup() {
Serial.begin(115200); //initial the Serial
}
void loop() {
Serial.write("hello world");
Serial.println();
delay(500);
}
我正在使用来自 developer.mozilla.org
的网络蓝牙 API
// UUID using by Bluno Beetle
var RXTX_SERVICE = 0xdfb0;
var RXTX_CHARACTERISTIC = 0xdfb2;
function handleCharacteristicValueChanged(event) {
var value = event.target.value;
}
navigator.bluetooth.requestDevice({ acceptAllDevices: true, optionalServices: [RXTX_SERVICE] })
.then(device => { console.log(device); return device.gatt.connect(); })
.then(server => { return server.getPrimaryService(RXTX_SERVICE); })
.then(service => { return service.getCharacteristic(RXTX_CHARACTERISTIC); })
.then(ch => { console.log(ch);
ch.addEventListener('characteristicvaluechanged', handleCharacteristicValueChanged);
console.log('Notifications have been started.');
return ch;
})
.then(ch => { return ch.startNotifications() })
.catch(error => { console.log(error); });
一切顺利,但是,在执行以下行时出现异常:ch.startNotifications()
DOMException: GATT Error: Not supported.
我尝试使用 iOS/Android APP 来完成相同的任务,并且两个 APP 都在处理该特征变化的通知。所以我假设我的 Bluno 板在某些配置下工作正常。但是我找不到网络蓝牙 API 对我来说很有用。
如有任何帮助,我们将不胜感激!谢谢。
Web Bluetooth 完全支持 GATT 通知。
根据https://evothings.com/writing-your-first-mobile-application-for-the-bluno-micro-controller-by-dfrobot/,看起来 RXTX
特征是 0xdfb1
没有 0xdfb2
.
TL;DR;
我的问题是:
https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth 的 Web 蓝牙 API 目前是否不完全支持某些自定义设备,如 Arduino 板?因为当我尝试对我的 Bluno Beetle 开发板使用
BluetoothRemoteGATTCharacteristic.startNotifications()
时出现DOMException: GATT Error: Not supported.
异常。如果
startNotifications()
完全实现。那么,为了使通知正常工作,我的 Bluno 板上是否需要配置任何额外的设置?在大多数在线示例中,没有提及在使用此方法之前对设备进行额外设置。我在运行时检查了目标特征的notify
属性是true
。它不应该是 https://webbluetoothcg.github.io/web-bluetooth/ 中所述的出现此异常的原因:If neither of the Notify or Indicate bits are set in characteristic’s properties, reject promise with a NotSupportedError and abort these steps.
我的情况:
我正在尝试在 chrome 上构建一个小网络演示,它可以输出从我的 Bluno Beetle v1.0 板传输的文本。
我板子里面的程序很简单:
void setup() {
Serial.begin(115200); //initial the Serial
}
void loop() {
Serial.write("hello world");
Serial.println();
delay(500);
}
我正在使用来自 developer.mozilla.org
的网络蓝牙 API// UUID using by Bluno Beetle
var RXTX_SERVICE = 0xdfb0;
var RXTX_CHARACTERISTIC = 0xdfb2;
function handleCharacteristicValueChanged(event) {
var value = event.target.value;
}
navigator.bluetooth.requestDevice({ acceptAllDevices: true, optionalServices: [RXTX_SERVICE] })
.then(device => { console.log(device); return device.gatt.connect(); })
.then(server => { return server.getPrimaryService(RXTX_SERVICE); })
.then(service => { return service.getCharacteristic(RXTX_CHARACTERISTIC); })
.then(ch => { console.log(ch);
ch.addEventListener('characteristicvaluechanged', handleCharacteristicValueChanged);
console.log('Notifications have been started.');
return ch;
})
.then(ch => { return ch.startNotifications() })
.catch(error => { console.log(error); });
一切顺利,但是,在执行以下行时出现异常:ch.startNotifications()
DOMException: GATT Error: Not supported.
我尝试使用 iOS/Android APP 来完成相同的任务,并且两个 APP 都在处理该特征变化的通知。所以我假设我的 Bluno 板在某些配置下工作正常。但是我找不到网络蓝牙 API 对我来说很有用。
如有任何帮助,我们将不胜感激!谢谢。
Web Bluetooth 完全支持 GATT 通知。
根据https://evothings.com/writing-your-first-mobile-application-for-the-bluno-micro-controller-by-dfrobot/,看起来 RXTX
特征是 0xdfb1
没有 0xdfb2
.