【发布时间】:2014-10-01 02:05:08
【问题描述】:
当前在应用中遇到问题。
我的应用程序旨在打开 Raspberry PI 上的 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 中是否存在某种缓冲区,用于存储尚未传输的数据缓冲区?
我知道.drain (callback),但我怎样才能以正确的方式实现它?
【问题讨论】:
标签: javascript node.js raspberry-pi rfid