我正在努力在Arduino和Nodejs之间进行通信。但问题是当我在正确阅读之间进行通信时,以及在正确阅读之间进行一些垃圾阅读。仍然无法理解如何解决这个问题?
这是Nodejs部分,用于从COM端口读取数据
var SerialPort = require("serialport").SerialPort;
var serialport = new SerialPort("COM23",{baudrate:9600});
serialport.on('open', function(){
serialport.on('data', function(data){
console.log(data[0]);
});
});
这是我简单的Arduino代码
int led = 13;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
Serial.write(1);
delay(1000);
digitalWrite(led, LOW);
Serial.write(0);
delay(1000);
}
答案 0 :(得分:2)
限制传输数据的大小,还为串行传输定义解析器。
查看串口文档https://github.com/voodootikigod/node-serialport#parsers
你有两个选择" raw"和" readline"。
开箱即用,node-serialport提供了两个解析器,一个简单地将原始缓冲区作为数据事件发出,另一个解析器提供熟悉的" readline"风格解析。要使用readline解析器,您必须提供这样的分隔符' \ n'
这是node.js的一个例子。
var sp = new SerialPort('/dev/tty.usbmodem14111', {
//sp.parsers.readline('\r')
//serialport.parsers.raw
baudrate: 9600,
parser: serialport.parsers.readline('\n')
});
在Arduino方面,使用串行函数println();
Serial.println("your message to the node server");
我希望这会有所帮助。