1

我有这个在 arduino 中运行的简单代码

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”。有没有办法不丢失那些字符?

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

4

2 回答 2

0

查看您的代码,可能有几件事。

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

连接到 Arduino 的库:

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

这两个程序都与 Arduinos 交互。Firmata 是低级别的,Johnny-5 运​​行在顶部。

于 2013-04-24T17:20:46.200 回答
0

我相信这可能是baud-rate.

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

默认串口波特率为 115200。

于 2016-04-10T10:17:53.003 回答