【问题标题】:Serial port communication between Nodejs and ArduinoNodejs和Arduino之间的串口通信
【发布时间】:2014-07-07 21:18:39
【问题描述】:

我正在尝试在 Arduino 和 Nodejs 之间进行通信。但是问题是,当我在正确阅读之间进行交流时,以及在正确阅读之间进行一些垃圾阅读时。仍然无法理解如何解决这个问题?

这里是用来从 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);               
      }

【问题讨论】:

    标签: node.js serial-port arduino


    【解决方案1】:

    限制传输数据的大小,同时定义一个解析器用于串行传输。

    查看串口文档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");
    

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多