2013-05-31 6 views
0

Я пытаюсь прочитать данные serialport, поступающие от Arduino до Peppleberry, но ничего не отображает. Я подтвердил, что данные поступают в последовательный порт. Тот же скрипт отлично работает в Windows 7. Также я пробовал два разных подхода к чтению последовательных данных, но ни один из них не работает. Версия node.js, используемая мной, - v0.9.9.node serialport не отображает данные последовательного порта в raspberryPI

Любая помощь будет принята с благодарностью.

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

Вы могли видеть, является ли это правами на доступ к Linux.

Установили ли вы его на машине linux?

nmp install serialport 

Не могли бы вы ответить на вопрос для меня. Почему вы используете javascript для чтения из последовательного порта?

Serial port not working?

Can't install node-serialport on linux

+0

Привет, Джон, спасибо за ответ. Это не может быть проблемой разрешения Linux, потому что у меня есть скрипт python, который может без проблем прочитать последовательный порт. Я использовал ту же команду для установки serialport -nmp install serialport. Причина, по которой я использую javascript, я создал веб-сайт, который разработан с использованием node.js, и он хорошо вписывается в serialport. Раньше я использовал serialport2, чтобы делать то же самое, и он работал отлично. Но serialport2 объединяется с serialport, и я не могу заставить его работать. –

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

Надеется, что это помогает!