Характеристика Web Bluetooth.writeValue разрывает соединение автоматически
Я следую за примерами Google/ Chrome для веб-Bluetooth. У меня есть две операции writeValue. Один из них находится в обещании requestDevice, и он работает отлично. Во-вторых, я сохраняю ссылку на характеристику и writeValue при срабатывании действия. Сообщение отправлено, но соединение разорвано автоматически. Я использую Mac OSX 10.13.3 и chrome64 и модифицирую Android BLE Peripheral Simulator (из Google github)
Сегмент кода ---
var bluetoothDevice;
var myCharacteristic;
navigator.bluetooth.requestDevice({
...
})
.then(device => {
bluetoothDevice = device;
....
})
....
.then(characteristic =>{
myCharacteristic = characteristic;
let encoder = new TextEncoder('utf-8');
let sendMsg = encoder.encode("hello");
/*
It works...
*/
myCharacteristic.writeValue(sendMsg);
})
....
function onSendMessage() {
if (!bluetoothDevice.gatt.connected) {
log("device is disconnected")
return
}
if (!myCharacteristic){
log("no characteristic defined")
return
}
let encoder = new TextEncoder('utf-8');
let sendMsg = encoder.encode("hello");
/*
message sent but auto disconnect the peripheral
*/
myCharacteristic.writeValue(sendMsg);
}
Кто-нибудь имеет такой же опыт и какие-либо предложения для сохранения постоянства соединения для writeValue?
1 ответ
Ваш код выглядит хорошо для меня. Аналогичный код также можно найти по адресу https://googlechrome.github.io/samples/web-bluetooth/link-loss.html
Однако мне интересно, какую характеристику вы пытаетесь написать. Если это не поддерживается, устройство Android может просто отключиться.
Проверьте https://www.chromium.org/developers/how-tos/file-web-bluetooth-bugs и захватите журналы Android adb, если это поможет.