2014-07-07 186 views
1

我在尝试Arduino和Nodejs之间的通信。但问题是当我沟通时,我得到了正确的阅读以及正确阅读之间的一些垃圾阅读。仍然不知道如何解决这个问题?Nodejs和Arduino之间的串口通信

这里是一个用于从COM端口读取数据的NodeJS部分

 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);    
     } 

回答

2

限制传送的数据的大小,还为串行传输定义解析器。

看看到串口文档https://github.com/voodootikigod/node-serialport#parsers

你有两个选择“原始”和“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方面,使用Serial函数println();

Serial.println("your message to the node server"); 

我希望这会有所帮助。

+0

谢谢你的答案。我已经做到了这一点:) – GPrathap