逐行读取node-serialport流

时间:2017-03-11 03:21:48

标签: javascript node.js stream node-serialport

设置

关于如何逐行阅读official documentation has a part流的node-serialport

我尝试了示例代码:

var SerialPort = require('serialport');
var Readline = SerialPort.parsers.Readline;
var port = new SerialPort('/dev/tty-usbserial1');
var parser = new Readline();
port.pipe(parser);
parser.on('data', console.log);
port.write('ROBOT PLEASE RESPOND\n');

我很快意识到SerialPort.parsers.Readline应该是SerialPort.parsers.readline,但即便如此,我仍然会收到错误:

  

未捕获的TypeError:dest.on不是函数

问题

后来我意识到这个功能仅在5.0.0以后才开始提供测试版(截至2017年初)。我有4.0.7。那么如何在版本5下面逐行读取流?

1 个答案:

答案 0 :(得分:2)

TL;博士

只需read it like a regular stream

var SerialPort = require('serialport');
var createInterface = require('readline').createInterface;

var port = new SerialPort('/dev/tty-usbserial1');

var lineReader = createInterface({
  input: port
});

lineReader.on('line', function (line) {
  console.log(line);
});

port.write('ROBOT PLEASE RESPOND\n');

说明

由于node-serialport的原型是Stream,令人惊讶的是你可以像常规Stream一样阅读它,并且这个解决方案的长度与文档中给出的长度大致相同。