From 68721a4bc5a780363d94239dc949984fde21e55c Mon Sep 17 00:00:00 2001 From: James Nylen Date: Thu, 12 Oct 2017 18:43:37 +0800 Subject: [PATCH 1/3] Add error logging for serial commands --- lib/Controller.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/Controller.js b/lib/Controller.js index 80d8620..23f67d6 100644 --- a/lib/Controller.js +++ b/lib/Controller.js @@ -191,6 +191,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); } From 960b379076acd11b286650bb13d66b3e4aa66fae Mon Sep 17 00:00:00 2001 From: James Nylen Date: Thu, 12 Oct 2017 18:52:40 +0800 Subject: [PATCH 2/3] Upgrade serialport library (and resolve deprecation warning) --- lib/Controller.js | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/Controller.js b/lib/Controller.js index 23f67d6..8e145a7 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,9 +28,9 @@ 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)); 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" } } From 0bfa54fb1e5c1a969f0059e56b6bb9e363b79e9f Mon Sep 17 00:00:00 2001 From: James Nylen Date: Thu, 12 Oct 2017 18:52:52 +0800 Subject: [PATCH 3/3] Add better error handling (clear message) when opening port fails --- lib/Controller.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/Controller.js b/lib/Controller.js index 8e145a7..3193901 100644 --- a/lib/Controller.js +++ b/lib/Controller.js @@ -33,8 +33,9 @@ function Controller(settings) { 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; @@ -216,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;