Ошибка записи значения на периферию BLE с помощью Ionic Native BLE - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время я пишу небольшое приложение на Ionic, чтобы управлять лампочкой FLUX bluetooth с моим приложением.Я использую ionic-native / ble, и пока все, кроме записи значения, работает.

Сканирование и подключение работают нормально.Однако при попытке записать значение выключения лампы ничего не происходит.

Я использовал функцию отслеживания на Android и обнаружил, что значение CC2433 выключает лампочку, я также проверил это с помощью приложения nRF Connect, и при записи этого значения в лампу свет выключается.Пожалуйста, найдите код ниже, чтобы сообщить мне, если я делаю что-то глупое.Спасибо!

this.ble.writeWithoutResponse(
 "3C:A3:08:A8:1E:C3", 
 "ffe5", 
 "ffe9", 
 this.off())
        .then(result => {
          console.log(result);
        }).catch(error => {
          alert(JSON.stringify(error));
        });

off() {
 let string = "CC2433";
    let array = new Uint8Array(string.length);
    for (let i = 0, l = string.length; i < l; i ++) {
      array[i] = string.charCodeAt(i);
    }
    console.log(array.buffer);
    return array.buffer;
}

Как видите, я вызываю плагин ble без записи, поскольку ответ не требуется (я также пытался использовать только функцию записи).Я передаю идентификатор устройства, сервис и характеристику, которые все верны, а затем передаю буфер массива, который возвращается функцией off.Внутри консоли нет ошибки записи и выдает результат OK (200).Хотя команда ничего не делает, хотя, как я уже сказал, если передать то же значение в команду записи nRF Connect для той же службы и характеристики, она отлично работает.

Любые мысли будут высоко оценены!Спасибо!

1 Ответ

0 голосов
/ 09 июня 2018

Я ожидаю, что вы не получаете и ошибки, потому что данные пишутся правильно, но лампа просто не знает, как интерпретировать команду.CC2433 выглядит как шестнадцатеричный, а не как строка.Попробуйте это:

let array = new Uint8Array([0xCC, 0x24, 0x33]);

this.ble.writeWithoutResponse(
  "3C:A3:08:A8:1E:C3", 
  "ffe5", 
  "ffe9", 
  array.buffer)
        .then(result => {
          console.log(result);
        }).catch(error => {
          alert(JSON.stringify(error));
        });

Свойства характеристики ffe9 определят, используете ли вы ble.write или ble.writeWithoutResponse.JSON, возвращаемый при подключении к периферийному устройству, содержит эти данные.Приложение nRF Connect также покажет характерные свойства.

...