我正在尝试使用SerialPort从Arduino向NodeJS发送消息。这是我的NodeJS代码:

var SerialPort = require('serialport');
var port = new SerialPort('/dev/tty.usbmodem1421',{
  baudRate: 9600
});

port.on('data',(data) => {
  console.log(data);
});


这是我的Arduino代码:

void setup() {
    Serial.begin(9600);
}

void loop() {
    Serial.println("Message");
    delay( 1000 );
}


工作正常但是,我收到的消息如下所示:

<Buffer 4d 65 73>
<Buffer 73 61 67 65>
<Buffer 0d 0a>


我尝试了很多不同的方法来尝试正确阅读消息。如果能有所作为,我最终希望我的消息是JSON。这是我尝试过的一些方法:

我添加了这个:

parser: SerialPort.parsers.readline('\r\n')


我认为这可能已过时,因为我得到的readline不是函数错误消息。

我尝试使用Readline对象:

var parser = new Readline();
parser.on('data', function(data){console.log( data );});


任何帮助将不胜感激!

最佳答案

最终我看错了文档。我使用的SerialPort版本是6.x,那里的大多数帮助都针对较旧的版本。该解决方案是GitHub最新的示例:

const SerialPort = require('serialport');
const parsers = SerialPort.parsers;

const parser = new parsers.Readline({
  delimiter: '\r\n'
});

const port = new SerialPort('/dev/tty-usbserial1', {
  baudRate: 9600
});

port.pipe(parser);

parser.on('data', console.log);


解析过程发生了巨大变化。

https://github.com/node-serialport/node-serialport/blob/master/examples/readline.js

关于node.js - 通过SerialPort在NodeJS和Arduino之间进行通信,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48819191/

10-13 22:42