문제

현재 앱에 문제가 있습니다.

내 앱은 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는 몇 가지 버퍼를 사용하는 것 같습니다.

예제;

I 스캔 카드 A, Return Tag AAA. 카드 A를 검사하고 AAA를 반환합니다. 카드 B를 검사하고, TAG AAA를 반환합니다. 카드 B를 검사하고, TAG AAA를 반환합니다. 카드 B를 스캔하고, 태그 BBB (반환 해야하는 것)를 반환합니다.

태그를 변경할 때 항상 발생하는 것 같습니다.

는 Node.js에 몇 가지 종류의 버퍼가 있으며, 아직 전송 된 데이터 버퍼를 저장합니까?

"nofollow"> drain (콜백) 그러나 이것을 어떻게 구현할 수 있습니까?적절한 방법으로?

도움이 되었습니까?

해결책

Node-serialport 라이브러리를 완전히 이해하지 못하지만 데이터를 수신 할 때 비슷한 문제가 발생했습니다.

내 데이터 값이 변경 될 때마다 이전 값을 항상받은 다음 다음 '데이터'청크에서 올바른 값을 수신했습니다.

노드 -SerialPort API에서 "플러시"방법을 사용하여 해결했습니다.

원유를하는 방법은 다음과 같습니다 :

sp.flush(function(err,results){});
.

소켓 연결을 분리하기 전에이 오른쪽으로 테스트 해보십시오.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top