我正在尝试将来自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);
});
答案 0 :(得分:1)
您可以看到它是否是Linux权限。
你有没有在你的linux机器上安装它?
nmp install serialport
你能回答我的问题。为什么使用javascript从串口读取?
答案 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.
});
希望它有所帮助!