последовательный порт узла не отображает данные последовательного порта в raspberryPI

Я пытаюсь прочитать данные последовательного порта, поступающие с 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);
});

person Android Beginner    schedule 31.05.2013    source источник


Ответы (2)


Вы могли бы видеть, если это разрешение Linux.

Вы установили его на свой Linux-компьютер?

nmp install serialport

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

Последовательный порт не работает?

Не удается установить node-serialport в Linux

person John b    schedule 31.05.2013
comment
Привет, Джон. Спасибо за ответ. Это не может быть проблемой разрешения Linux, потому что у меня есть скрипт Python, который может без проблем читать последовательный порт. Я использовал ту же команду для установки serialport -nmp install serialport. Причина, по которой я использую javascript, заключается в том, что я создал веб-сайт, разработанный с использованием node.js, и он хорошо подходит для последовательного порта. Раньше я использовал serialport2, чтобы делать то же самое, и он работал отлично. Но serialport2 объединен с serialport, и я не могу заставить его работать. - person Android Beginner; 01.06.2013
comment
npm install serialport является хорошим предварительным условием. Никогда не забывай этого. Я сделал :( - person Pierre-Gilles Levallois; 29.06.2018

Какие данные вы отправляете с помощью Arduino? Лучшим подходом было бы jsonize все ваши данные и проанализировать их один раз в node.

Вот пример для 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.
});

Надеюсь, поможет!

person ladislas    schedule 21.08.2013