Как использовать этот js-скрипт в Angular: нужно ли создавать сервис?

0

Я пытаюсь создать небольшой проект IoT с внешним датчиком Bluetooth. Я использую SensorTag от TI, и у меня есть пара js-библиотек для управления им.

На данный момент я использую простую HTML-страницу с некоторым кодом js, я хочу перенести свой проект на Ionic Framework, используя Angular.

<script>
  // Globals.
  var sensortag
  var values;
  var compensationX = 0;
  var compensationY = 0;

  function initialise()
  {
    initialiseSensorTag()
  }

  function initialiseSensorTag()
  {
    // Create SensorTag CC2650 instance.
    sensortag = evothings.tisensortag.createInstance(
      evothings.tisensortag.CC2650_BLUETOOTH_SMART)

    // Set up callbacks and sensors.
    sensortag
      .statusCallback(statusHandler)
      .errorCallback(errorHandler)
      .keypressCallback(keypressHandler)
      .accelerometerCallback(accelerometerHandler, 100)
  }

  function connect()
  {
    sensortag.connectToNearestDevice()
  }

  function disconnect()
  {
    sensortag.disconnectDevice()
    displayStatus('Disconnected')
  }

  function statusHandler(status)
  {
    displayStatus(status)

    if (evothings.tisensortag.ble.status.SENSORTAG_ONLINE == status)
    {
      // displaySprite()
    }
  }

  function errorHandler(error)
  {
    if (evothings.easyble.error.DISCONNECTED == error)
    {
      displayStatus('Disconnected')
      // sprite.hide()
    }
    else
    {
      displayStatus('Error: ' + error)
    }
  }

  function keypressHandler(data)
  {
    compensationX = values.x;
    compensationY = values.y;

  }

  function accelerometerHandler(data)
  {
    values = sensortag.getAccelerometerValues(data);
    var rawX = values.x; 
    var rawY = values.y;
    var degreeX = rawX - compensationX;
    var degreeY = rawY - compensationY;

  }


  document.addEventListener(
    'deviceready',
    function() { evothings.scriptsLoaded(initialise) },
    false)
  </script>

Моя идея - создать службу, но я не могу понять, как управлять addEventListener, а также инициализировать. Я начинаю с этого кода:

app.factory('SensorFactory', function(){

    var sensortag
    var values;
    var compensationX = 0;
    var compensationY = 0;

    return {
        initialiseSensorTag: function(){
            sensortag = evothings.tisensortag.createInstance(
          evothings.tisensortag.CC2650_BLUETOOTH_SMART)

        // Set up callbacks and sensors.
        sensortag
          .statusCallback(statusHandler)
          .errorCallback(errorHandler)
          .keypressCallback(keypressHandler)
          .accelerometerCallback(accelerometerHandler, 100)
        }  

        connect: function(){
        sensortag.connectToNearestDevice()
      }
    }               
});

Но у меня есть два вопроса:

1) как я могу управлять этой частью js:

document.addEventListener(
    'deviceready',
    function() { evothings.scriptsLoaded(initialise) },
    false)

2) Могу ли я сохранить значения (значения) датчика в области моего приложения? Мне нужны они для моего приложения.

Теги:

1 ответ

0

Для элемента deviceready используйте scope.on($ viewContentLoaded, $ stateChangeSuccess) или другой встроенный слушатель, который соответствует вашим потребностям.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню