我试着在树莓皮上做以下的事情
我把视差rfid阅读器连接到树莓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');
});
});
最佳答案
如果您真的只想阅读一行(如在评论中发布的内容),请尝试按如下方式修改代码:
// 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);
当然,这只获取接收到的第一个非空行。
关于javascript - NODE.js和Javascript;从serialPort获得单行然后关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23628395/