Как отправить команду TLV через BLE в ионном приложении - PullRequest
0 голосов
/ 24 января 2019

Я работаю над приложением (Ionic), которое взаимодействует с малиной через BLE (https://ionicframework.com/docs/native/ble/). Я хочу отправить команду в Raspberry и получить результат. Единственное ограничение - это отправить команду сФормат TLV (Tag-Length-Value): - Tag: идентификатор команды - Длина: длина данных команды (от 0 до 18) - Значение: данные команды

Понятия не имею, как это сделать.

Atm У меня есть код.

Сначала я обыскиваю все устройства вокруг меня:

this.ble.scan([], 5).subscribe(
  device => this.onDeviceDiscovered(device), 
  error => this.scanError(error)
);

Затем я получаю информацию с этого устройства:

this.ble.connect(device.id).subscribe(
  peripheral => this.onConnected(peripheral),
  peripheral => this.onDeviceDisconnected(peripheral)
);

И..... что теперь? Я пытаюсь использовать эту функцию: ble.write(device_id, service_uuid, characteristic_uuid, data, success, failure);

Я получаю device_id, service_uuid, характеристику_uuid. Но я не знаю, как передавать данные.

Я пытаюсь что-то вроде этого:

SendCommand() {
  let data: {
    RANDOM: 1,
    Lenght: 1,
    Value: 1
  };

  let binary_string = btoa(JSON.stringify(data));
  let len = binary_string.length;
  let aBuff = new Uint8Array(len);
  for (let i = 0; i < len; i++)
    aBuff[i] = binary_string.charCodeAt(i);

  this.ble.write(this.peripheral.id, this.peripheral.services, this.peripheral.characteristic, aBuff.buffer)
    .then(res => {
      console.log("OK");
      console.log(res)
    })
    .catch(err => {
      console.log("KO");
      console.log(err)
    });
}

Но ничего не происходит.

Спасибо за вашу помощь: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...