2016-01-14 21:19:41 +01:00
var events = require ( 'events' ) ,
child = require ( 'child_process' ) ,
util = require ( 'util' ) ,
2016-01-14 21:48:38 +01:00
serial = require ( "serialport" ) ;
2016-01-14 21:19:41 +01:00
var Arduino = function ( baudrate ) {
this . baudrate = baudrate && baudrate || 9600 ;
this . writeBuffer = [ ] ;
this . success ;
}
Arduino . prototype . setup = function ( ) {
2016-01-14 21:43:45 +01:00
var self = this ;
2016-01-14 21:19:41 +01:00
child . exec ( 'cd ../arduino && ino build && ino upload' , function ( err , stdout , stderr ) {
2016-01-14 21:43:45 +01:00
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 self . success = false ; }
2016-01-14 21:19:41 +01:00
var buff = stdout . slice ( stdout . indexOf ( 'Guessing serial port ... ' ) + 25 ) ;
buff = buff . slice ( 0 , buff . indexOf ( '\n' ) ) ;
console . log ( 'Guessing serial port ... ' + buff ) ;
2016-01-14 21:48:38 +01:00
self . serial = new serial . SerialPort ( buff , {
2016-01-14 21:43:45 +01:00
baudrate : self . baudrate ,
2016-01-14 21:19:41 +01:00
parser : serial . parsers . readline ( '\n' )
} , false ) ;
2016-01-14 21:43:45 +01:00
self . serial . open ( function ( error ) {
2016-01-14 21:19:41 +01:00
if ( error ) {
console . log ( 'Please check arduino!' )
2016-01-14 21:43:45 +01:00
return self . success = false ;
2016-01-14 21:19:41 +01:00
}
2016-01-14 21:48:38 +01:00
self . serial . write ( new Buffer ( '00000000' ) ) ;
2016-01-14 21:19:41 +01:00
} ) ;
2016-01-14 21:43:45 +01:00
self . success = true ;
self . processWriteBuffer ( ) ;
2016-01-14 21:19:41 +01:00
} ) ;
}
Arduino . prototype . write = function ( m ) {
2016-01-14 21:43:45 +01:00
if ( this . serial ) {
2016-01-14 21:19:41 +01:00
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 ( ) ) ;
}
}
2016-01-14 21:48:38 +01:00
module . exports = Arduino ;