【问题标题】:Reading data from arduino with nodejs and socketio使用 nodejs 和 socketio 从 arduino 读取数据
【发布时间】:2013-04-24 17:09:20
【问题描述】:

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

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

【问题讨论】:

    标签: javascript node.js socket.io arduino


    【解决方案1】:

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

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

    连接到 Arduino 的库:

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

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

    【讨论】:

    • 感谢您的回复。实际上,从 arduino 中,我总是会得到“--”,但我将它们分组为 37 个字符的字符串(不具体,可能是 10 个,我只想对它们进行分组)。
    【解决方案2】:

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

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

    默认串口波特率为115200。

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 2019-04-14
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多