diff --git a/lib/Controller.js b/lib/Controller.js index 80d8620..3193901 100644 --- a/lib/Controller.js +++ b/lib/Controller.js @@ -1,9 +1,9 @@ -var events = require('events'), - fs = require('fs'), - moment = require('moment'), - path = require('path'), - serial = require('serialport'), - util = require('util'); +var events = require('events'), + fs = require('fs'), + moment = require('moment'), + path = require('path'), + SerialPort = require('serialport'), + util = require('util'); var PID = require('./pid'); @@ -28,13 +28,14 @@ function Controller(settings) { self.history = []; - self.port = new serial.SerialPort(settings.deviceName, { + self.port = new SerialPort(settings.deviceName, { baudRate : 115200, - parser : serial.parsers.readline('\n') + parser : SerialPort.parsers.readline('\n') }); - self.port.on('open', self._onPortOpen.bind(self)); - self.port.on('data', self._onPortData.bind(self)); + self.port.on('open' , self._onPortOpen.bind(self)); + self.port.on('error', self._onPortError.bind(self)); + self.port.on('data' , self._onPortData.bind(self)); self._isFirstLine = true; @@ -191,6 +192,13 @@ Controller.prototype._sendCommand = function(command, cb) { var self = this; self.port.write(command + '\r\n', function(err) { + if (err) { + self.emit('log', util.format( + 'Error sending command "%s": %s', + command, + err.message + )); + } if (typeof cb === 'function') { cb(err); } @@ -209,6 +217,20 @@ Controller.prototype._onPortOpen = function() { }); }; +Controller.prototype._onPortError = function(err) { + var self = this; + + console.error( + 'Serial port error: %s', + err.message + ); + console.error( + 'Check the serial device name and make sure it\'s connected.' + ); + console.error(); + throw err; +}; + Controller.prototype._onPortData = function(line) { var self = this; diff --git a/package.json b/package.json index 929b2ac..826c9d5 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "express" : "^4.13.4", "js-yaml" : "^3.6.1", "moment" : "^2.13.0", - "serialport" : "^3.1.2", + "serialport" : "^4.0.7", "split" : "^1.0.0" } }