【问题标题】:Arduino NodeJs Serial Communication issueArduino NodeJs 串行通信问题
【发布时间】:2016-10-03 14:03:54
【问题描述】:

我无法从 NodeJs 向 Arduino 发送数据.. Serial.available() 一直是错误的.. 我不知道我的失败是什么.. 任何人都可以帮助我吗?

这是我的 JavaScript/NodeJS 代码

var serialport = require("serialport");
var SerialPort = serialport.SerialPort;

var serialPort = new SerialPort("COM3", {
  baudrate: 9600,
         dataBits: 8, 
         parity: 'none', 
         stopBits: 1, 
         flowControl: false
});

serialPort.on("open", function () {
  console.log('open');
serialPort.on('data', function(data) {
    console.log(data);
  });
data="omg";
   for(var i=0; i<data.length; i++){
        serialPort.write(new Buffer(data[i], 'ascii'), function(err, results) {
           if(err!=null)
           {
             console.log('Error: ' + err);
           }
           else
           console.log('Results ' + results);
        });
    }
});

这是我的 Arduino 代码

void setup() {
  Serial.begin(9600);
}
String inData = "";

void loop(){

    while (Serial.available() > 0) {
        char received = Serial.read();
        inData.concat(received);
        Serial.println(received);
        // Process message when new line character is received
        if (received == '\n') {
            // Message is ready in inDate
        }
    }
}

NodeJs 的输出是

node server.js 弃用:请改用require('serialport') require('serialport').SerialPort

打开

结果:未定义

结果:未定义

结果:未定义

【问题讨论】:

    标签: javascript node.js arduino serial-port serial-communication


    【解决方案1】:

    尝试听nodeJS ^^。

    替换:

    var serialport = require("serialport"); var SerialPort = serialport.SerialPort;

    通过

    var SerialPort = require("serialport");

    编辑:

    您的data 未在您的范围内初始化。 试试这个:

    var SerialPort = require("serialport");
    
    var serialPort = new SerialPort("COM3", {
      baudrate: 9600,
         dataBits: 8, 
         parity: 'none', 
         stopBits: 1, 
         flowControl: false
    });
    
    var _data = '';
    
    serialPort.on("open", function () {
      console.log('open');
      serialPort.on('data', function(data) {
        console.log(data);
        _data += data;
      });
       for(var i=0; i<_data.length; i++){
        serialPort.write(new Buffer(_data[i], 'ascii'), function(err, results) {
           if(err!=null)
           {
             console.log('Error: ' + err);
           }
           else
           console.log('Results ' + results);
        });
    }
    });
    
    serialPort.on('error', function(err) { console.log(err); });
    

    【讨论】:

    • 我要试试兄弟:)
    • 现在说什么节点?
    • 你确定你的 COM3 端口吗?
    • 我可以这样读取 arduino 数据 int i=0;无效循环(){延迟(100);序列号.println(i++);我可以像 1-2-3-4-5-6-7 一样阅读这个结果
    • 试试我的编辑,如果有错误你会发现的!
    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多