2021-02-03 10:06:00 +00:00
|
|
|
var fileNumber = 0;
|
|
|
|
var MAXLOGS = 9;
|
|
|
|
|
|
|
|
function getFileName(n) {
|
|
|
|
return "accellog."+n+".csv";
|
|
|
|
}
|
|
|
|
|
|
|
|
function showMenu() {
|
|
|
|
var menu = {
|
2022-04-26 14:05:42 +00:00
|
|
|
"" : { title : /*LANG*/"Accel Logger" },
|
|
|
|
"< Back" : function() {
|
2021-10-06 22:47:09 +00:00
|
|
|
load();
|
|
|
|
},
|
2022-04-26 14:05:42 +00:00
|
|
|
/*LANG*/"File No" : {
|
2021-02-03 10:06:00 +00:00
|
|
|
value : fileNumber,
|
|
|
|
min : 0,
|
|
|
|
max : MAXLOGS,
|
|
|
|
onchange : v => { fileNumber=v; }
|
|
|
|
},
|
2022-04-26 14:05:42 +00:00
|
|
|
/*LANG*/"Start" : function() {
|
2021-02-03 10:06:00 +00:00
|
|
|
E.showMenu();
|
|
|
|
startRecord();
|
|
|
|
},
|
2022-04-26 14:05:42 +00:00
|
|
|
/*LANG*/"View Logs" : function() {
|
2021-02-03 10:06:00 +00:00
|
|
|
viewLogs();
|
|
|
|
},
|
|
|
|
};
|
|
|
|
E.showMenu(menu);
|
|
|
|
}
|
|
|
|
|
|
|
|
function viewLog(n) {
|
2022-04-10 19:35:46 +00:00
|
|
|
E.showMessage(/*LANG*/"Loading...");
|
2021-02-03 10:06:00 +00:00
|
|
|
var f = require("Storage").open(getFileName(n), "r");
|
|
|
|
var records = 0, l = "", ll="";
|
2021-02-03 10:27:48 +00:00
|
|
|
while ((l=f.readLine())!==undefined) {records++;ll=l;}
|
2021-02-03 10:06:00 +00:00
|
|
|
var length = 0;
|
2021-10-06 22:47:09 +00:00
|
|
|
if (ll) length = Math.round( (ll.split(",")[0]|0)/1000 );
|
2021-02-03 10:06:00 +00:00
|
|
|
|
|
|
|
var menu = {
|
2022-04-26 14:05:42 +00:00
|
|
|
"" : { title : "Log "+n },
|
|
|
|
"< Back" : () => { viewLogs(); }
|
2021-02-03 10:06:00 +00:00
|
|
|
};
|
2022-04-26 14:05:42 +00:00
|
|
|
menu[records+/*LANG*/" Records"] = "";
|
|
|
|
menu[length+/*LANG*/" Seconds"] = "";
|
|
|
|
menu[/*LANG*/"DELETE"] = function() {
|
|
|
|
E.showPrompt(/*LANG*/"Delete Log "+n).then(ok=>{
|
2021-02-03 10:06:00 +00:00
|
|
|
if (ok) {
|
2022-04-26 14:05:42 +00:00
|
|
|
E.showMessage(/*LANG*/"Erasing...");
|
2021-02-03 10:06:00 +00:00
|
|
|
f.erase();
|
|
|
|
viewLogs();
|
|
|
|
} else viewLog(n);
|
|
|
|
});
|
|
|
|
};
|
2022-04-26 14:05:42 +00:00
|
|
|
|
2021-02-03 10:06:00 +00:00
|
|
|
|
|
|
|
E.showMenu(menu);
|
|
|
|
}
|
|
|
|
|
|
|
|
function viewLogs() {
|
|
|
|
var menu = {
|
2022-04-26 14:05:42 +00:00
|
|
|
"" : { title : /*LANG*/"Logs" },
|
|
|
|
"< Back" : () => { showMenu(); }
|
2021-02-03 10:06:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
var hadLogs = false;
|
|
|
|
for (var i=0;i<=MAXLOGS;i++) {
|
|
|
|
var f = require("Storage").open(getFileName(i), "r");
|
|
|
|
if (f.readLine()!==undefined) {
|
|
|
|
(function(i) {
|
2022-04-26 14:05:42 +00:00
|
|
|
menu[/*LANG*/"Log "+i] = () => viewLog(i);
|
2021-02-03 10:06:00 +00:00
|
|
|
})(i);
|
|
|
|
hadLogs = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!hadLogs)
|
2022-04-26 14:05:42 +00:00
|
|
|
menu[/*LANG*/"No Logs Found"] = function(){};
|
2021-02-03 10:06:00 +00:00
|
|
|
E.showMenu(menu);
|
|
|
|
}
|
|
|
|
|
|
|
|
function startRecord(force) {
|
2022-09-27 11:04:36 +00:00
|
|
|
var stopped = false;
|
2021-02-03 10:06:00 +00:00
|
|
|
if (!force) {
|
|
|
|
// check for existing file
|
|
|
|
var f = require("Storage").open(getFileName(fileNumber), "r");
|
|
|
|
if (f.readLine()!==undefined)
|
2022-04-26 14:05:42 +00:00
|
|
|
return E.showPrompt(/*LANG*/"Overwrite Log "+fileNumber+"?").then(ok=>{
|
2021-02-03 10:06:00 +00:00
|
|
|
if (ok) startRecord(true); else showMenu();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
// display
|
|
|
|
g.clear(1);
|
|
|
|
Bangle.drawWidgets();
|
2021-08-25 16:00:44 +00:00
|
|
|
|
|
|
|
var Layout = require("Layout");
|
|
|
|
var layout = new Layout({ type: "v", c: [
|
2022-09-27 11:04:36 +00:00
|
|
|
{ type: "h", c: [
|
|
|
|
{ type: "v", c: [
|
|
|
|
{type:"txt", font:"6x8", label:/*LANG*/"Samples", pad:2},
|
|
|
|
{type:"txt", id:"samples", font:"6x8:2", label:" - ", pad:5, bgCol:g.theme.bg},
|
|
|
|
]},
|
|
|
|
{ type: "v", c: [
|
|
|
|
{type:"txt", font:"6x8", label:/*LANG*/"Time", pad:2},
|
|
|
|
{type:"txt", id:"time", font:"6x8:2", label:" - ", pad:5, bgCol:g.theme.bg},
|
|
|
|
]},
|
|
|
|
]},
|
|
|
|
{ type: "h", c: [
|
|
|
|
{ type: "v", c: [
|
|
|
|
{type:"txt", font:"6x8", label:/*LANG*/"Max X", pad:2},
|
|
|
|
{type:"txt", id:"maxX", font:"6x8", label:" - ", pad:5, bgCol:g.theme.bg},
|
|
|
|
]},
|
|
|
|
{ type: "v", c: [
|
|
|
|
{type:"txt", font:"6x8", label:/*LANG*/"Max Y", pad:2},
|
|
|
|
{type:"txt", id:"maxY", font:"6x8", label:" - ", pad:5, bgCol:g.theme.bg},
|
|
|
|
]},
|
|
|
|
{ type: "v", c: [
|
|
|
|
{type:"txt", font:"6x8", label:/*LANG*/"Max Z", pad:2},
|
|
|
|
{type:"txt", id:"maxZ", font:"6x8", label:" - ", pad:5, bgCol:g.theme.bg},
|
|
|
|
]},
|
|
|
|
]},
|
|
|
|
{type:"txt", font:"6x8", label:/*LANG*/"Max G", pad:2},
|
|
|
|
{type:"txt", id:"maxMag", font:"6x8:4", label:" - ", pad:5, bgCol:g.theme.bg},
|
|
|
|
{type:"txt", id:"state", font:"6x8:2", label:/*LANG*/"RECORDING", bgCol:"#f00", pad:5, fillx:1},
|
|
|
|
]},
|
|
|
|
{
|
|
|
|
btns:[ // Buttons...
|
|
|
|
{id: "btnStop", label:/*LANG*/"STOP", cb:()=>{
|
|
|
|
if (stopped) {
|
|
|
|
showMenu();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
Bangle.removeListener('accel', accelHandler);
|
|
|
|
layout.state.label = /*LANG*/"STOPPED";
|
|
|
|
layout.state.bgCol = /*LANG*/"#0f0";
|
|
|
|
stopped = true;
|
|
|
|
layout.btnStop.label = /*LANG*/"MENU";
|
|
|
|
layout.render();
|
|
|
|
}
|
2021-08-25 16:00:44 +00:00
|
|
|
}}
|
2021-10-18 10:32:46 +00:00
|
|
|
]});
|
2021-08-25 16:00:44 +00:00
|
|
|
layout.render();
|
2021-02-03 10:06:00 +00:00
|
|
|
|
|
|
|
// now start writing
|
2021-08-25 16:00:44 +00:00
|
|
|
var f = require("Storage").open(getFileName(fileNumber), "w");
|
2022-09-27 11:04:36 +00:00
|
|
|
f.write("Time (ms),X,Y,Z,Total\n");
|
2021-02-03 10:06:00 +00:00
|
|
|
var start = getTime();
|
|
|
|
var sampleCount = 0;
|
2022-09-27 11:04:36 +00:00
|
|
|
var maxMag = 0;
|
|
|
|
var maxX = 0;
|
|
|
|
var maxY = 0;
|
|
|
|
var maxZ = 0;
|
2021-02-03 10:06:00 +00:00
|
|
|
|
|
|
|
function accelHandler(accel) {
|
|
|
|
var t = getTime()-start;
|
|
|
|
f.write([
|
|
|
|
t*1000,
|
2022-09-27 11:04:36 +00:00
|
|
|
accel.x,
|
|
|
|
accel.y,
|
|
|
|
accel.z,
|
|
|
|
accel.mag,
|
|
|
|
].map(n => n.toFixed(2)).join(",")+"\n");
|
|
|
|
if (accel.mag > maxMag) {
|
|
|
|
maxMag = accel.mag.toFixed(2);
|
|
|
|
}
|
|
|
|
if (accel.x > maxX) {
|
|
|
|
maxX = accel.x.toFixed(2);
|
|
|
|
}
|
|
|
|
if (accel.y > maxY) {
|
|
|
|
maxY = accel.y.toFixed(2);
|
|
|
|
}
|
|
|
|
if (accel.z > maxZ) {
|
|
|
|
maxZ = accel.z.toFixed(2);
|
|
|
|
}
|
2021-02-03 10:06:00 +00:00
|
|
|
|
|
|
|
sampleCount++;
|
2021-08-25 16:00:44 +00:00
|
|
|
layout.samples.label = sampleCount;
|
|
|
|
layout.time.label = Math.round(t)+"s";
|
2022-09-27 11:04:36 +00:00
|
|
|
layout.maxX.label = maxX;
|
|
|
|
layout.maxY.label = maxY;
|
|
|
|
layout.maxZ.label = maxZ;
|
|
|
|
layout.maxMag.label = maxMag;
|
|
|
|
layout.render();
|
2021-02-03 10:06:00 +00:00
|
|
|
}
|
|
|
|
|
2021-08-25 16:00:44 +00:00
|
|
|
Bangle.setPollInterval(80); // 12.5 Hz - the default
|
2021-02-03 10:06:00 +00:00
|
|
|
Bangle.on('accel', accelHandler);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Bangle.loadWidgets();
|
|
|
|
Bangle.drawWidgets();
|
|
|
|
showMenu();
|