0

我正在尝试读取从 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);
});
4

2 回答 2

1

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

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

nmp install serialport

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

串口不工作?

无法在 linux 上安装 node-serialport

于 2013-05-31T12:28:03.630 回答
0

你用你的 Arduino 发送什么样的数据?最好的方法是将所有数据 jsonize 并在 node.js 中解析一次。

这是我正在使用的 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.
});

希望能帮助到你!

于 2013-08-21T15:10:06.353 回答