Skip to content
Snippets Groups Projects
Commit 061baa1b authored by Augustin Jaujay's avatar Augustin Jaujay
Browse files

Arduino ??

parent 482654f6
Branches
No related tags found
No related merge requests found
......@@ -42,4 +42,4 @@
"browser"
]
}
}
\ No newline at end of file
}
......@@ -33,6 +33,7 @@ var gyroscope = navigator.gyroscope;
var magnetometer = navigator.magnetometer;
var sensors = navigator.orientation;
var rotation = navigator.rotationvector;
var constraints;
var saveFile;
var errorsFile;
......@@ -51,23 +52,13 @@ function onDeviceReady() {
// Creating a file to save data
setTimeout(createDataFile, 200);
setTimeout(createErrorsFile, 300);
setTimeout(setArduinoConnexion, 400);
setTimeout(beginMeasures, 500);
}
function beginMeasures() {
//Add volume buttons events:
document.addEventListener("volumeupbutton", handleButtonEvent, false);
document.addEventListener("volumedownbutton", handleButtonEvent, false);
//start watching gps
navigator.geolocation.watchPosition((pos) => {position = pos;}, (error) => handleError(error), {timeout: 100, enableHighAccuracy: true });
//start watching acceleration
navigator.accelerometer.watchAcceleration((acc) => {acceleration = acc;}, (error) => handleError(error), { frequency: 100 });
//start watching gyroscope
navigator.gyroscope.watch((gyro) => {gyroscope = gyro;}, (error) => handleError(error), { frequency: 100 });
//start watching magneto
cordova.plugins.magnetometer.watchReadings((magn) => {magnetometer = magn;}, (error) => handleError(error), { frequency: 100 });
}
// MAIN FUNCTION
function handleButtonEvent() {
//Set position in html
......@@ -88,27 +79,23 @@ function handleButtonEvent() {
+ "\n Y: " + acceleration.y
+ "\n Z: " + acceleration.z;
//Set gyroscope in html
// document.getElementById('gyroscopeData').innerHTML = ""
// + " timestamp: " + gyroscope.timestamp
// + "\n X: " + gyroscope.x
// + "\n Y: " + gyroscope.y
// + "\n Z: " + gyroscope.z;
//Set magnetometer in html
// document.getElementById('magnetometerData').innerHTML = ""
// + " timestamp: " + acceleration.timestamp
// + "\n X: " + magnetometer.x
// + "\n Y: " + magnetometer.y
// + "\n Z: " + magnetometer.z;
//TODO: save to file / db
save(position, acceleration, gyroscope, magnetometer);
}
// Set gyroscope in html
document.getElementById('gyroscopeData').innerHTML = ""
+ " timestamp: " + gyroscope.timestamp
+ "\n X: " + gyroscope.x
+ "\n Y: " + gyroscope.y
+ "\n Z: " + gyroscope.z;
function handleError(error) {
var errorMessage = typeof(error) === 'string' ? error : error.message;
writeFile(errorsFile, new Blob([`${new Date()};${errorMessage}\n`]));
// Set magnetometer in html
document.getElementById('magnetometerData').innerHTML = ""
+ " timestamp: " + acceleration.timestamp
+ "\n X: " + magnetometer.x
+ "\n Y: " + magnetometer.y
+ "\n Z: " + magnetometer.z;
serial.read(function(buffer) {console.log(buffer);}, error => handleError(`Error while reading data from Arduino`, error));
save(position, acceleration, gyroscope, magnetometer);
}
function startOrStopTimer() {
......@@ -120,6 +107,32 @@ function startOrStopTimer() {
}
}
// SETUP FUNCTIONS
function beginMeasures() {
//Add volume buttons events:
document.addEventListener("volumeupbutton", handleButtonEvent, false);
document.addEventListener("volumedownbutton", handleButtonEvent, false);
//start watching gps
navigator.geolocation.watchPosition((pos) => {position = pos;}, (error) => handleError(`Error while setting GPS`, error), {timeout: 1000, enableHighAccuracy: true });
//start watching acceleration
navigator.accelerometer.watchAcceleration((acc) => {acceleration = acc;}, (error) => handleError(`Error while setting accelerometer`, error), { frequency: 100 });
//start watching gyroscope
navigator.gyroscope.watch((gyro) => {gyroscope = gyro;}, (error) => handleError(`Error while setting gyroscope`, error), { frequency: 100 });
//start watching magneto
cordova.plugins.magnetometer.watchReadings((magn) => {magnetometer = magn;}, (error) => handleError(`Error while setting magnetometer`, error), { frequency: 100 });
}
function setArduinoConnexion() {
serial.requestPermission(function(successMessage) {
serial.open({}, function(successMessage) {
console.log(successMessage);
}, error => handleError(`Error while opening serial link`, error));
}, error => handleError(`Error while getting permission for serial link`, error));
}
// DATA MANAGING FUNCTIONS
function save(positionData, accelerationData, gyroscopeData, magnetometerData) {
newLine = `${positionData.timestamp};
${positionData.coords.latitude};
......@@ -131,15 +144,15 @@ function save(positionData, accelerationData, gyroscopeData, magnetometerData) {
${accelerationData.timestamp};
${accelerationData.x};
${accelerationData.y};
${accelerationData.z}\n`;
// ${gyroscopeData.timestamp};
// ${gyroscopeData.x};
// ${gyroscopeData.y};
// ${gyroscopeData.z};
// ${accelerationData.timestamp};
// ${magnetometerData.x};
// ${magnetometer.y};
// ${magnetometer.z}\n`;
${accelerationData.z};
${gyroscopeData.timestamp};
${gyroscopeData.x};
${gyroscopeData.y};
${gyroscopeData.z};
${accelerationData.timestamp};
${magnetometerData.x};
${magnetometer.y};
${magnetometer.z}\n`;
writeFile(saveFile, new Blob([newLine]));
readFile(saveFile);
......@@ -151,9 +164,9 @@ function save(positionData, accelerationData, gyroscopeData, magnetometerData) {
function clearFile(name) {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
fs.root.getFile(name, {create: false, exclusive: false}, function(fileEntry) {
fileEntry.remove(function(file) {console.log('File removed')}, function() {});
}, function() {});
}, function() {});
fileEntry.remove(function(file) {console.log('File removed')}, error => handleError(`Error while deleting file ${name}`, error));
}, error => handleError(`Error while getting file ${name}`, error));
}, error => handleError(`Error while using file manager`, error));
}
function createDataFile() {
......@@ -162,23 +175,24 @@ function createDataFile() {
saveFile = fileEntry;
writeFile(saveFile, new Blob([
`position timestamp;latitude;longitude;altitude;heading;speed;accuracy;
acceleration timestamp;acceleration x;acceleration y;acceleration z\n`
// gytorsope timestamp;gyroscope x;gyroscope y;gyroscope z;
// magnetometer timestamp;magnetometer x;magnetometer y;magnetometer z
acceleration timestamp;acceleration x;acceleration y;acceleration z
gyrorsope timestamp;gyroscope x;gyroscope y;gyroscope z;
magnetometer timestamp;magnetometer x;magnetometer y;magnetometer z;
constraint 1;constraint 2;constraint 3;constraint 4;constraint 5;constraint 6\n`
]));
console.log('Data file opened');
}, function() {});
}, function() {});
}, error => handleError(`Error while getting file ${fileEntry.name}`, error));
}, error => handleError(`Error while using file manager`, error));
}
function createErrorsFile() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
fs.root.getFile('errors.csv', {create: true, exclusive: true}, function(fileEntry) {
errorsFile = fileEntry;
writeFile(errorsFile, new Blob(['enregistrement des erreurs\n']));
writeFile(errorsFile, new Blob(['time;message;error\n']));
console.log('Errors file opened');
}, function() {});
}, function() {});
}, error => handleError(`Error while getting file ${fileEntry.name}`, error));
}, error => handleError(`Error while using file manager`, error));
}
function writeFile(fileEntry, dataObj) {
......@@ -187,11 +201,11 @@ function writeFile(fileEntry, dataObj) {
console.log('Writing successful');
}
fileWriter.onerror = function() {
console.log('Erreur d\'écriture');
handleError(`Error while writing in file ${fileEntry.name}`, error);
}
if (!dataObj) {
console.log('pas de données d\'entrée');
handleError(`Error while writing in file ${fileEntry.name} : no data to write`, error);
}
fileWriter.seek(fileWriter.length);
......@@ -200,6 +214,7 @@ function writeFile(fileEntry, dataObj) {
}
function readFile(fileEntry) {
console.log(fileEntry);
fileEntry.file(function(file) {
var reader = new FileReader();
......@@ -208,5 +223,12 @@ function readFile(fileEntry) {
}
reader.readAsText(file);
}, handleError);
}
\ No newline at end of file
}, error => handleError(`Error while reading ${fileEntry.name}`, error));
}
// ERROR MANAGING
function handleError(message, error) {
var errorMessage = typeof(error) === 'string' ? error : error.message;
writeFile(errorsFile, new Blob([`${new Date()};${message};${errorMessage}\n`]));
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment