Skip to content

Commit

Permalink
Upgrade Uart
Browse files Browse the repository at this point in the history
  • Loading branch information
AwenChen committed May 12, 2017
1 parent bbdf137 commit c4b0029
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 17 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "pmsx003",
"version": "0.1.2",
"version": "0.1.3",
"description": "Plantower's PM2.5 sensor driver",
"author": "Nanchao Inc.",
"license": "MIT",
Expand Down
22 changes: 7 additions & 15 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,24 @@

var driver = require('ruff-driver');
var Parser = require('./parser.js');
var INTERVAL = 10; // 10ms << 2s

module.exports = driver({
attach: function (inputs) {
var self = this;
var uart = inputs['uart'];
var parser = new Parser(self.emit.bind(self));
var isProcessing = false;

setInterval(function () {
if (!isProcessing) {
isProcessing = true;
uart.read(function (err, data) {
parser.feed(data);
isProcessing = false;
});
}
}, INTERVAL);
uart.on('data', function (data) {
parser.feed(data);
});

uart.on('error', function (error) {
parser.readError(error);
});

},

detach: function () {
if (this._intervalHandle) {
clearInterval(this._intervalHandle);
this._intervalHandle = null;
}
},

events: {
Expand Down
6 changes: 5 additions & 1 deletion src/parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,15 @@ Parser.prototype.readLength = function () {
}
}

Parser.prototype.readError = function (error) {
this._emit('error', error);
};

Parser.prototype.readData = function () {
if (this._buf.length >= this._nByte) {
var lst = parseBuffer(this._buf);
if (!lst) {
this._emit('error');
this.readError(new Error('parse buffer failed'));
return;
}
var json = parseData(lst);
Expand Down

0 comments on commit c4b0029

Please sign in to comment.