У меня Arduino отправляет очень простые сообщения:
Serial.print('R');
Serial.println(1);
или
Serial.print('R');
Serial.println(2);
Я пытаюсь прочитать каждую строку, используя node.js и модуль SerialPort, но получаю противоречивые результаты:
Data: <Buffer 52 31 0d 0a> R1
Data: <Buffer 52 32 0d 0a> R2
Data: <Buffer 52 31 0d 0a> R1
Data: <Buffer 52 32 0d 0a> R2
Data: <Buffer 52 31 0d 0a> R1
Data: <Buffer 52 32 0d 0a> R2
Data: <Buffer 52 31 0d 0a> R1
Data: <Buffer 52 32 0d 0a> R2
Data: <Buffer 52> R
Data: <Buffer 31 0d 0a> 1
Data: <Buffer 52 32 0d 0a> R2
А вот как я пытался разобрать:
this.port = new SerialPort(portName, {
baudRate: baudRate,
autoOpen:false,
flowControl: false,
parser: new Readline("\r\n")
});
this.port.open(function (err) {
if (err) {
return console.log('Error opening port: ', err.message);
}
console.log("port open!");
});
this.port.on('error', function(err) {
console.log('Error: ', err.message);
})
this.port.on('open', function() {
console.log("open event called");
});
this.port.on('data', function (data) {
console.log('Data:', data,data.toString('utf8'));
});
Короче говоря: я ожидаю, что сообщения R1
, R2
поступают последовательно, а не разбиваются так:
Data: <Buffer 52> R
Data: <Buffer 31 0d 0a> 1
Я передаю ("\r\n"
/ 0x0d 0x0a
) на Readline
. Что мне не хватает?
Как получить последовательный разбор новой строки, используя SerialPort в узле?