2013-04-24 49 views
1

我有我在Arduino的读取数据和socketio

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

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

所以continiously写入运行这个简单的代码“ - ”如果我送东西的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 = "" 
    } 
}); 

这通过套接字我从阿尔杜伊诺了发送。 我的问题是,例如,如果我送

"thisisanunusuallongandterriblestringofsymbolsblablablablablablabla" 

有缺字:

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

在这个例子中,我失踪 “TRIN”。有没有一种方法不会丢失角色?

我从节点开始,所以我的猜测是它发出消息的时间...从那一刻起内容消失了,也许我错了。

回答

0

看着你的代码,它可能是一些事情。

  1. 您可能在侦听器准备好之前发送数据,上面的libs已经解决了。
  2. 以下行使我担心if (stringInfo.length < 37){。如果您获得连续的小数据包,则超过37的数据包将只打印stringInfo,但不会打印data部分。

利布斯连接到Arduino的:

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

两个程序与Arduinos互动。 Firmata是Johnny-Five运行在最前面的低级别。

+0

感谢您的回复。 其实从arduino我会得到总是“ - ”但我将它们分成37个字符串(不具体,可能是10我只是想分组他们)。 – JavierQQ23 2013-04-24 17:25:58

0

我认为这可能是baud-rate的问题。

如果您正在使用serialport模块与Arduino进行串行通信,那么您必须将serialport baud-rate设置为9600(与接收端相同,即Arduino)。

默认串口波特率为115200.