我尝试在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标签内容。
但是,我希望读者只读取他得到的第一个标签,然后关闭连接。
我该怎么做?串口现在保持打开状态,并不断将数据写入控制台。
----编辑------
使用以下代码,我的连接在单次读取后关闭。但是,data console.log显示一个空变量。我想我需要跳过第一个条目......
// 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');
});
});
答案 0 :(得分:4)
如果您真的只想阅读一行(如评论中所述),请尝试修改您的代码:
// 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);
这只取得当然收到的第一个非空行。