我试着在树莓皮上做以下的事情
我把视差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/

10-09 21:08