не удалось установить уведомление для cordova-plugin-ble-central - PullRequest
1 голос
/ 07 января 2020

Я несколько дней играл с этим плагином, пытаясь заставить приложение Cordova и устройство BLE общаться друг с другом. Устройство представляет собой так называемый «itag», брелок, купленный на ebay, цель которого ~ = «не теряйте свои ключи».

Что я мог сделать: -подключиться к устройству и получить некоторые из его характеристик - прочитайте состояние кнопки, а также уровень заряда батареи с помощью ble.read(..) - сделайте кольцо устройства с помощью ble.writeWithoutResponse(..)

Что я не смог сделать (и это причина этого поста): -был уведомлен, когда нажата кнопка устройства.

ble.startNotification(device.id, "ffe0", "ffe1", success, fail) результат - сбой ответа на функцию: «сбой установки уведомления для 0000ffe1-0000-1000-8000-00805f9b34fb»

Вот устройство характеристики, опубликованные при подключении:

{"name":"MLE-15","id":"FF:FF:F0:00:7D:A2","advertising":{},"rssi":-56,
"services":["1800","180f","1802","ffe0"],
"characteristics":[
{"service":"1800","characteristic":"2a00","properties":["Read","Notify"]},
{"service":"1800","characteristic":"2a01","properties":["Read"]},
{"service":"180f","characteristic":"2a19","properties":["Read","Notify"]},
{"service":"1802","characteristic":"2a06","properties":["WriteWithoutResponse","Write","Notify"]},
{"service":"ffe0","characteristic":"ffe1","properties":["Read","Notify"]}]}

Вот код:

ble.scan([], 5, scan_success, scan_fail);

        function scan_success(device) {
            ble.connect(device.id, connect_success, connect_fail);
        }
        function scan_fail() {
            alert('error during scan');
        }

        function connect_success(device) {
            console.log(JSON.stringify(device));
            ble.startNotification(device.id, "ffe0", "ffe1", success, fail);
        }
        function connect_fail(device) {
            alert('error during connect');
        }       


        var success = function(buffer) {
            // Decode the ArrayBuffer into a typed Array based on the data you expect
            var data = new Uint8Array(buffer);
            alert("device answers: " + data[0]);
            }

        var fail = function(buffer) {
            alert(buffer);
            }  

Любая помощь приветствуется!

...