Характеристика 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, если это поможет.

Другие вопросы по тегам