Как выполнить потоковую передачу неполных данных CSV-данных с устройства Serial, используя NodeJS? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть простой эскиз Arduino, который выглядит следующим образом (пока не обращайте внимания на задержку блокировки) ...

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
    Serial.println("Hello world from Ardunio!\n");
    delay(5000);
}

Это прекрасно работает, поэтому я создал библиотеку узлов для связи с последовательным портом. ..

import SerialPort from 'serialport';
import parse from 'csv-parse';

const output=[];
const parser = parse({
  to_line: 10
});

const port = new SerialPort('/dev/ttyACM0', {
  baudRate: 115200
});

port.on('readable', function () {
  let record
  while (record = port.read()) {
    output.push(record.toString());
    console.log(`The collection is \n ${JSON.stringify(output)}`);
  }
})
port.on('error', function(err) {
  console.log('Error: ', err.message);
});
port.on('close', function(){
  console.log('The port is closed');
});
port.on('open', err =>{
  console.log("The port is opened");
});

Я ожидаю, что это прочитает 10 строк и остановится. Однако, когда он запускается, я вижу такие записи ...

The collection is 
 ["d from Ardunio!\n\r\n"]
The collection is 
 ["d from Ardunio!\n\r\n","Hello world from Ardu"]
The collection is 
 ["d from Ardunio!\n\r\n","Hello world from Ardu","nio!\n\r\n"]

Это, конечно, неправильно, потому что буфер только читает части каждой записи за раз. Каков наилучший способ (библиотека или мой собственный метод) для обработки этих записей и объединения строк до новой строки (или запятой, если несколько столбцов)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...