【问题标题】:node serialport not displaying serialport data in raspberryPI节点串行端口未在 raspberryPI 中显示串行端口数据
【发布时间】:2013-05-26 18:02:30
【问题描述】:

我正在尝试读取从 Arduino 到 Raspberry PI 的串行端口数据,但它没有显示任何内容。我已验证数据已到达串行端口。相同的脚本在 Windows 7 中运行良好。我也尝试了两种不同的读取串行数据的方法,但它们都不起作用。 我使用的node.js版本是v0.9.9。

任何帮助将不胜感激。

var sys = require('sys');
var portName = '/dev/ttyACM0' ;

/////////////////////////////////////////////////
//Approach 1
/////////////////////////////////////////////////
var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort(portName, {
     baudrate: 9600
   });

serialPort.on("open", function () {
console.log('open');
serialPort.on('data', function(data) {
//console.log('data received: ' + data);
sys.puts("here: "+data);
});

serialPort.on('error', function(message) {
console.log('error: ' + message);
});
});

/////////////////////////////////////////////////
//Approach 2 
/////////////////////////////////////////////////
var serialport = require("serialport");
var SerialPort = serialport.SerialPort; // localize object constructor

var sp = new SerialPort(portName, { 
     parser: serialport.parsers.raw
     });

sp.on("data", function (data) {
sys.puts("here: "+data);
});

【问题讨论】:

    标签: node.js arduino raspberry-pi node-serialport


    【解决方案1】:

    您使用 Arduino 发送什么样的数据? 最好的方法是将所有数据 jsonize 并在节点中解析一次。

    这是我正在使用的 Arduino 示例,您可以根据需要对其进行修改:

    void sendJson(){
        String json;
    
        json = "{\"accel\":{\"x\":";
        json = json + getXYZ(0);
        json = json + ",\"y\":";
        json = json + getXYZ(1);
        json = json + ",\"z\":";
        json = json + getXYZ(2);
        json = json + "},\"gyro\":{\"yaw\":";
        json = json + getYPR(0);
        json = json + ",\"pitch\":";
        json = json + getYPR(1);
        json = json + ",\"roll\":";
        json = json + getYPR(2);
        json = json + "}}";
    
        Serial.println(json);
    }
    

    那么在node中,就很简单了:

    serialPort.on("data", function (data) {
        json = JSON.parse(data.replace(/ /g,""));
        AccelX = json.accel.x;
        // and so on.
    });
    

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      你可以看看它是否是一个 linux 权限的东西。

      你的linux机器上安装了吗?

      nmp install serialport
      

      你能帮我回答一个问题吗?你为什么使用javascript从串口读取?

      Serial port not working?

      Can't install node-serialport on linux

      【讨论】:

      • 您好约翰,感谢您的回复。这不可能是 linux 权限问题,因为我有一个可以毫无问题地读取串口的 python 脚本。我使用了相同的命令来安装 serialport -nmp install serialport。我使用 javascript 的原因是我创建了一个使用 node.js 开发的网站,它非常适合串行端口。早些时候我使用 serialport2 做同样的事情,它曾经完美地工作。但是 serialport2 与 serialport 合并,我无法让它工作。
      • "npm install serialport" 是一个很好的先决条件。永远不要忘记。我做到了:(
      猜你喜欢
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多