Javascript 正在刷新Node.JS中的缓冲区数据

Javascript 正在刷新Node.JS中的缓冲区数据,javascript,node.js,raspberry-pi,rfid,Javascript,Node.js,Raspberry Pi,Rfid,当前应用程序中存在问题 我的应用程序设计用于在树莓圆周率上打开RFID阅读器。它继续读取传入的RFID标签 守则如下: // Socket.io server details var io = require('socket.io').listen(3000); // Serialport plugin declared and made a serialport variable var serialport = require("serialport"); var SerialPort =

当前应用程序中存在问题

我的应用程序设计用于在树莓圆周率上打开RFID阅读器。它继续读取传入的RFID标签

守则如下:

// Socket.io server details
var io = require('socket.io').listen(3000);
// Serialport plugin declared and made a serialport variable
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]

io.sockets.on('connection', function (socket) {

        console.log('user connected');

        socket.on('ping', function (data) {

                serialPort.open(function () {

                        // Open notification
                        console.log('opening RFID scanner');

                        //Start listening
                       serialPort.on('data', function(data) {



                                     if (data.trim() !== '') {

                                        io.sockets.emit('pong', data);

                                        socket.disconnect();
                                    }
                       }); 
                });
        });
});
我打开应用程序,它工作正常。它可以不断地读取卡片的标签。然而;当我使用不同的卡时,Node.JS似乎使用了某种缓冲区

一个例子

我扫描卡A,返回标签AAA。 我扫描卡A,返回标签AAA。 我扫描卡B,返回标签AAA。 我扫描卡B,返回标签AAA。 我扫描卡片B,返回标签BBB(应该返回的那个)

这似乎总是发生在更改标记时

Node.JS中是否存在某种缓冲区,用于存储尚未传输的数据缓冲区


我知道,但如何以正确的方式实现这一点?

我不完全了解节点serialport库,但在接收数据时确实遇到了类似的问题

每次我的数据值更改时,我总是在收到下一个“数据”块上的正确值之前收到上一个值一次

我通过使用节点SerialPortAPI中的“flush”方法解决了这个问题

一个粗略的做法是:

sp.flush(function(err,results){});
在断开套接字连接之前,请尝试进行测试

 if (data.trim() !== '') {
      io.sockets.emit('pong', data);
      sp.flush(function(err,results){});
      socket.disconnect();
 }

你能解释一下sp是什么类型的对象吗?提前感谢
sp
SerialPort
的一个实例,该类由表示串行连接的
SerialPort
模块提供。