Я работаю над приложением (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