TL; DR;
我的问题是:
目前,来自https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth的网络蓝牙API是否未完全支持Arduino板等定制设备?因为当我尝试将DOMException: GATT Error: Not supported.
用于我的Bluno Beetle板时,我遇到BluetoothRemoteGATTCharacteristic.startNotifications()
例外。
如果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对我来说是有用的。
任何帮助将不胜感激!感谢。
答案 0 :(得分:0)
Web蓝牙支持完全GATT通知。
根据https://evothings.com/writing-your-first-mobile-application-for-the-bluno-micro-controller-by-dfrobot/,RXTX
特征似乎是0xdfb1
没有0xdfb2
。