我正在尝试使用外部蓝牙传感器创建一个小型物联网项目。我正在使用TI的SensorTag,我有几个js库来管理它。
此时我正在使用带有一些js代码的简单HTML页面,我想使用Angular将我的项目移动到Ionic Framework。
<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)我可以将传感器值(值)保存到我的应用范围内吗?我的应用需要它们。
答案 0 :(得分:0)
对于deviceready,请使用scope.on($ viewContentLoaded,$ stateChangeSuccess)或其他适合您需求的内置侦听器。