Я пытаюсь создать небольшой проект 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) Могу ли я сохранить значения (значения) датчика в области моего приложения? Мне нужны они для моего приложения.
Для элемента deviceready используйте scope.on($ viewContentLoaded, $ stateChangeSuccess) или другой встроенный слушатель, который соответствует вашим потребностям.