NODE.js和Javascript; 从serialPort获得一个单一的行然后closures

我正在尝试在Raspberry PI上执行以下操作

我将Parallax RFID阅读器连接到Raspberry PI的USB插槽。 我可以连接到阅读器,并阅读经过的标签。

我使用下面的代码来读取RFID标签。

var serialport = require("serialport"); var SerialPort = serialport.SerialPort; var serialPort = new SerialPort("/dev/ttyUSB0", { baudrate: 2400, parser: serialport.parsers.readline("\n") }, false); // this is the openImmediately flag [default is true] serialPort.open(function () { console.log('open'); serialPort.on('data', function(data) { console.log('data received: ' + data); }); }); 

该代码的结果是一个实时显示RFID标签内容的控制台。

但是,我希望读者只读取他得到的第一个标签,然后closures连接。

我怎样才能做到这一点? 串行端口现在保持打开状态,并不断向控制台写入数据。

—-编辑——

使用下面的代码,我的连接在一次读取后closures。 但是,数据console.log显示一个空variables。 我想我需要跳过第一个条目….

 // Variables for connecting var serialport = require("serialport"); var SerialPort = serialport.SerialPort; // Variable containing technical USB port details var serialPort = new SerialPort("/dev/ttyUSB0", { baudrate: 2400, parser: serialport.parsers.readline("\n") }, false); // this is the openImmediately flag [default is true] serialPort.open(function () { console.log('open'); serialPort.on('data', function(data) { console.log('data received: ' + data); }); serialPort.close(function () { console.log('closing'); }); }); 

如果你真的只想阅读一行 (比如发表评论),可以试着修改你的代码:

 // make connection using readline as provided in your example var line = null; serialPort.open(function () { console.log('open'); serialPort.on('data', function(data) { console.log('data received: ' + data); if (data.trim() !== '') { line = data; serialPort.close(function () { console.log('closing'); }); } }); }); // now you may work with your "one" line: console.log('line strored: ' + line); 

这只会获取当然收到的第一个非空行。