node serialport不在raspberryPI中显示serialport数据

时间:2013-05-31 01:24:00

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

我正在尝试将来自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);
});

2 个答案:

答案 0 :(得分:1)

您可以看到它是否是Linux权限。

你有没有在你的linux机器上安装它?

nmp install serialport

你能回答我的问题。为什么使用javascript从串口读取?

Serial port not working?

Can't install node-serialport on linux

答案 1 :(得分:0)

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

然后在节点中,这很容易:

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

希望它有所帮助!