Node.js 节点serialport未在raspberryPI中显示serialport数据
我试图读取从Arduino到Raspberry PI的serialport数据,但它没有显示任何内容。我已验证数据是否已到达串行端口。同样的脚本在Windows7中运行良好。我还尝试了两种不同的方法读取串行数据,但都不起作用。 我使用的node.js版本是v0.9.9 任何帮助都将不胜感激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' ; /////////////////////////////////////////////
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”是一个很好的先决条件。永远不要忘记它。我做到了:(