Ionic Bluetooth BLE постоянно читает сообщения - PullRequest
0 голосов
/ 04 мая 2018

Я хочу читать данные с датчика по Bluetooth все время. Я следую из документации, но не могу настроить мой телефон на считывание данных с датчика по Bluetooth. Сначала я подключаю мобильный с датчиком, затем добавляю уведомление:

 this.ble.startNotification(peripheral.id,SERVICE_UUID,
                                CHARACTERISTIC_UUID).subscribe(
      data => {this.onChange(data);}
    )

где onChane (данные):

 onChange(buffer :ArrayBuffer){
    console.log("onChange method")
    var data = new Float32Array(buffer);
    console.log(data[0]);   }

Дальше я

this.ble.read(peripheral.id,SERVICE_UUID,CHARACTERISTIC_UUID).then(
      (data) => {this.onChange(data);},
      (err) => {console.log(err);}
    )

Я потерпел неудачу в этом .ble.read. CHARACTERISTIC_UUID и SERVICE_UUID являются постоянными. Что случилось? Как я могу исправить это, чтобы мой телефон постоянно получал данные?

1 Ответ

0 голосов
/ 08 мая 2018

Если вы используете уведомления, вам не нужно читать значение характеристики. Как только вы подписываетесь на уведомления, периферийное устройство будет уведомлять вас о новом значении при каждом изменении значения. Похоже, что ваша функция onChange делает это.

Если ваша характеристика поддерживает свойство read, вы можете при желании прочитать значение. Посмотрите на периферийные данные , возвращенные обратному вызову соединения успешно, чтобы увидеть характерные свойства.

Взгляните на мой пример кода Ionic BLE . Пример термометра подключается к периферийному устройству, подписывается на уведомления и считывает значение один раз, чтобы IU мог обновить пользовательский интерфейс с текущим значением. Смотри https://github.com/don/ionic-ble-examples/blob/d0acd2b47ea08011be4d1aa844c4f74426a22273/thermometer/src/pages/detail/detail.ts#L37-L55

...