refactor code
The communication with the arduino is now handled by a designated module (called ar-com).
This commit is contained in:
parent
5f26eb8c47
commit
54850cde26
2 changed files with 59 additions and 27 deletions
55
nodejs/ar-com/arduino.js
Normal file
55
nodejs/ar-com/arduino.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
var events = require('events'),
|
||||||
|
child = require('child_process'),
|
||||||
|
util = require('util'),
|
||||||
|
serial = require("serialport").SerialPort;
|
||||||
|
|
||||||
|
var Arduino = function (baudrate) {
|
||||||
|
this.baudrate = baudrate && baudrate || 9600;
|
||||||
|
this.writeBuffer = [];
|
||||||
|
this.success;
|
||||||
|
}
|
||||||
|
|
||||||
|
Arduino.prototype.setup = function () {
|
||||||
|
child.exec('cd ../arduino && ino build && ino upload', function(err, stdout, stderr){
|
||||||
|
|
||||||
|
if(err){console.log('Please install the ino utility and connect arduino!\nIf there are other open programs that communicate with the arduino, close them!'); return this.success = false;}
|
||||||
|
|
||||||
|
var buff = stdout.slice(stdout.indexOf('Guessing serial port ... ')+25);
|
||||||
|
buff = buff.slice(0, buff.indexOf('\n'));
|
||||||
|
console.log('Guessing serial port ... ' + buff);
|
||||||
|
|
||||||
|
this.serial = new serial(buff, {
|
||||||
|
baudrate: this.baudrate,
|
||||||
|
parser: serial.parsers.readline('\n')
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
this.serial.open(function (error) {
|
||||||
|
if ( error ) {
|
||||||
|
console.log('Please check arduino!')
|
||||||
|
return this.success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
serialPort.write(new Buffer('00000000'));
|
||||||
|
});
|
||||||
|
|
||||||
|
this.success = true;
|
||||||
|
this.processWriteBuffer();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Arduino.prototype.write = function (m) {
|
||||||
|
if (this.success) {
|
||||||
|
this.serial.write(m);
|
||||||
|
} else {
|
||||||
|
this.writeBuffer.push(m);
|
||||||
|
console.log('Board isn\'t available (yet?).')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Arduino.prototype.processWriteBuffer = function () {
|
||||||
|
while (this.writeBuffer.length > 0) {
|
||||||
|
this.write(this.writeBuffer.shift());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Arduino;
|
|
@ -1,32 +1,9 @@
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var child = require("child_process");
|
var Arduino = new require('../ar-com/arduino');
|
||||||
|
var arduino = new Arduino();
|
||||||
|
|
||||||
var SerialPort = require("serialport").SerialPort
|
arduino.setup()
|
||||||
var success;
|
|
||||||
child.exec('cd ../arduino && ino build && ino upload', function(err, stdout, stderr){
|
|
||||||
|
|
||||||
if(err){console.log('Please install the ino utility and connect arduino!\nIf there are other open programs that communicate with the arduino, close them!'); return success = false;}
|
|
||||||
|
|
||||||
var buff = stdout.slice(stdout.indexOf('Guessing serial port ... ')+25);
|
|
||||||
buff = buff.slice(0, buff.indexOf('\n'));
|
|
||||||
console.log('Guessing serial port ... ' + buff);
|
|
||||||
|
|
||||||
serialPort = new SerialPort(buff, {
|
|
||||||
baudrate: 9600
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
serialPort.open(function (error) {
|
|
||||||
if ( error ) {
|
|
||||||
console.log('Please check arduino!')
|
|
||||||
return successfalse;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return success = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
//console.log(success);
|
|
||||||
|
|
||||||
/* GET home page. */
|
/* GET home page. */
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', function(req, res, next) {
|
||||||
|
@ -34,7 +11,7 @@ router.get('/', function(req, res, next) {
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/toggleLight', function (req, res) {
|
router.get('/toggleLight', function (req, res) {
|
||||||
if(success) { serialPort.write(new Buffer('~','ascii')); } else {console.log("arduino not connected")}
|
arduino.write(new Buffer('~','ascii'));
|
||||||
res.send('switch light');
|
res.send('switch light');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Reference in a new issue