Как я могу прочитать эти конкретные данные буфера, которые я получаю от arduino при использовании nodejs?

В настоящее время я использую датчик пульса на Arduino и пытаюсь получить данные от датчика и пытаюсь отобразить их в браузере. Вот как выглядит мой код nodejs.

var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("/dev/cu.usbserial-DA011OXR", {
  baudrate: 57600
});

serialPort.on('open', showPortOpen);
serialPort.on('data', saveLatestData);
serialPort.on('close', showPortClose);
serialPort.on('error', showError);

function showPortOpen() {
   console.log('port open. Data rate: ' + serialPort.options.baudRate);
}
 
function showPortClose() {
   console.log('port closed.');
}
 
function showError(error) {
   console.log('Serial port error: ' + error);
}

function saveLatestData(data) {
   console.log(data);
   latestData = data;
}

И вот такие данные я получаю на терминале.

<Buffer 53 35 31 34 0d 0a>
<Buffer 53 35 31 33 0d 0a>
<Buffer 53 35 31 31 0d 0a>
<Buffer 53 35 31 30 0d 0a>
<Buffer 53 35 31 31 0d 0a>
<Buffer 53 35 31 31 0d 0a>
<Buffer 53 35 31 31 0d 0a>
<Buffer 53 35 31 32 0d 0a>
<Buffer 53 35 31 32 0d 0a>
<Buffer 53 35 31 33 0d 0a>
<Buffer 53 35 31 34 0d 0a>
<Buffer 53 35 31 34 0d 0a>
<Buffer 53 35 31 34 0d 0a>
<Buffer 53 35 31 34 0d 0a>
<Buffer 53 35 31 34 0d 0a>
<Buffer 53 35 31 33 0d 0a>
<Buffer 53 35 31 32 0d 0a>
<Buffer 53 35 31 31 0d 0a>

Я пытался посмотреть в Интернете, как я должен интерпретировать или анализировать эти данные, но я совершенно невежественен. Любая помощь будет здорово!


person fancy_avocado    schedule 06.04.2015    source источник
comment
Поскольку data является объектом Buffer, просто вызовите для него toString(), например console.log(data.toString()).   -  person Rodrigo Medeiros    schedule 06.04.2015
comment
Вероятно, вам следует взглянуть на документы arduino и посмотреть, что вы получаете, то есть формат выходных данных. По умолчанию Buffer.toString() обрабатывает буфер как текст в кодировке utf-8, что вполне может быть неверным; возможно (например) вы получаете 6-байтовый сигнал, и вам нужно превратить его в число.   -  person Plato    schedule 06.04.2015


Ответы (1)


Установите правильную скорость передачи данных. в моем случае это было 9600.
Если вы сделаете что-то вроде Serial.println(dataFromPin), вы можете data.toString('ascii')

Как вы могли угадать кодировку: data[0].toString() и сравнить со значениями из arduino IDE Serial Monitor.

person ada    schedule 25.11.2017