2013-04-24 2 views
1

У меня есть этот простой код, который я бегу в ArduinoЧтение данных из Arduino с nodejs и socketio

char inp; 
void setup(){ 
    Serial.begin(9600); 
} 

void loop(){ 
    while(Serial.available()>0){ 
    inp = Serial.read(); 
    Serial.print(inp); 
    } 
    Serial.print("--"); 
    delay(200); 
} 

Так продолжительную пишет «-» и если я что-то послать к Arduino он отвечает, что

Тогда я в JS файл

var strinInfo = ""; 
tempSerial.on("data", function(data) { 
    console.log("data -> " + data); 
    if (stringInfo.length < 37){ 
    stringInfo += data; 
    }else{ 
    io.sockets.emit("message", stringInfo); 
    stringInfo = "" 
    } 
}); 

Это посылает через сокеты, что я получил от Arduino. Моя проблема заключается в том, что, например, если я посылаю

"thisisanunusuallongandterriblestringofsymbolsblablablablablablabla" 

Там недостающие символы:

---------thisisanunusuallongandterribles, 
gofsymbolsblablablablabla--blabla ----, 
-------------------------------------, 

в этом примере я пропускаю "TRIN". Есть ли способ не потерять этих персонажей?

Я начинаю с узла, поэтому я предполагаю, что между тем, как он излучает сообщение ... содержимое с этого момента ушло, может быть, я ошибаюсь.

ответ

0

Глядя на ваш код, это может быть несколько вещей.

  1. Возможно, вы отправляете данные до того, как слушатель готов, приведенные выше библиотеки ниже разрешены.
  2. Следующая линия беспокоит меня if (stringInfo.length < 37){. Если вы получите последовательные небольшие пакеты данных, пакет, который помещает вас выше 37, будет печатать только stringInfo, но не будет печатать часть data.

Libs, которые подключаются к Arduino:

  • [Johnny Five][1]
  • [Firmata][2]

Обе программы взаимодействуют с Arduinos. Firmata - это низкий уровень, когда Джонни-5 работает сверху.

+0

Благодарим за отзыв. Собственно от arduino я всегда буду «-», но я группирую их в строки из 37 символов (не конкретные, может быть, я просто хочу их сгруппировать). – JavierQQ23

0

Я считаю, что это может быть вопрос baud-rate.

Если вы используете модуль serialport для последовательной связи с Arduino, вам необходимо установить serialport baud-rate на номер 9600 (то же, что и на приемной стороне, то есть на Arduino).

По умолчанию скорость последовательного порта равна 115200.