Node.js 节点serialport未在raspberryPI中显示serialport数据

Node.js 节点serialport未在raspberryPI中显示serialport数据,node.js,arduino,raspberry-pi,node-serialport,Node.js,Arduino,Raspberry Pi,Node Serialport,我试图读取从Arduino到Raspberry PI的serialport数据,但它没有显示任何内容。我已验证数据是否已到达串行端口。同样的脚本在Windows7中运行良好。我还尝试了两种不同的方法读取串行数据,但都不起作用。 我使用的node.js版本是v0.9.9 任何帮助都将不胜感激 var sys = require('sys'); var portName = '/dev/ttyACM0' ; /////////////////////////////////////////////

我试图读取从Arduino到Raspberry PI的serialport数据,但它没有显示任何内容。我已验证数据是否已到达串行端口。同样的脚本在Windows7中运行良好。我还尝试了两种不同的方法读取串行数据,但都不起作用。 我使用的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);
});

您可以看到这是否是linux权限的问题

你在你的linux机器上安装了它吗

nmp install serialport
你能回答我一个问题吗。为什么要使用javascript从串行端口读取数据


您使用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.
});

希望有帮助

嗨,约翰,谢谢你的回复。这不可能是linux权限问题,因为我有一个python脚本,可以毫无问题地读取串行端口。我使用了相同的命令来安装serialport-nmp install serialport。我之所以使用javascript,是因为我创建了一个使用node.js开发的网站,它非常适合serialport。早些时候,我使用serialport2做同样的事情,它曾经工作得很好。但是serialport2与serialport合并了,我无法让它工作。“npm安装serialport”是一个很好的先决条件。永远不要忘记它。我做到了:(