Nodejs和Arduino之间的串口通信

时间:2014-07-07 21:18:40

标签: node.js serial-port arduino

我正在努力在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);               
      }

1 个答案:

答案 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");

我希望这会有所帮助。