2

设置

官方文档有一部分关于如何逐行读取节点串行端口流。

我尝试了示例代码:

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但即使这样我仍然得到一个错误:

未捕获的类型错误:dest.on 不是函数

问题

后来我意识到这个功能只在 5.0.0 之后才可用,它是 beta 版(截至 2017 年初)。我有 4.0.7。那么如何在版本 5 以下逐行阅读流水线呢?

4

1 回答 1

2

tl;博士

像普通流一样阅读它:

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并且该解决方案的长度与文档中给出的长度大致相同。

于 2017-03-11T03:21:48.147 回答