Метод $ cordovaBluetoothLE.read () ведет себя неправильно, когда получен ответ большего размера - PullRequest
0 голосов
/ 10 февраля 2019

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

vm.startExperimentLoop = function() {
       vm.myCall = $interval( loop, 5000);        
};


vm.apiStop = function(){
    $interval.cancel(vm.myCall);
}

function loop(){
    getTemp();
}

function getTemp(){
    return bleReadgetTemp()
    .then (function(response){
        response = atob(response.value);
        debugWrite("Response@getTemp: " + response + "\n");
        return response;
    })
    .catch( function(error){
        console.log("getTemp error");
    })
}

function bleReadgetTemp(){
    var service_id = '12ab';
    var characteristic_id = '31cd';

    var params = {
            address: $stateParams.address,
            service: service_id,
            characteristic: characteristic_id,
    };

    return $cordovaBluetoothLE.read(params);
} 

Периферийное устройство bluetooth работает на nodeJS с библиотекой bleno, и по этому конкретному запросу на чтение возвращает объект, подобный {"temp": 2455555555}.Пока значение атрибута temp имеет 10 или менее цифр, все работает как положено.Если я добавлю еще одну цифру и получу их в общей сложности 11, функция $interval, похоже, не будет работать и будет непрерывно отправлять запросы на чтение периферийному устройству.

Есть идеи, почему это могло произойти?

...