javascript - 使用nodejs和socketio从arduino读取数据

标签 javascript node.js socket.io arduino

我有一个在 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 开始,所以我的猜测是,在它发出消息的时间之间……那一刻的内容已经消失了,也许我错了。

最佳答案

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

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

连接到 Arduino 的库:

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

这两个程序都与 Arduino 交互。 Firmata 是低级别级别,Johnny-Five 位于顶部。

关于javascript - 使用nodejs和socketio从arduino读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16198115/

相关文章:

javascript - 为什么我无法使用 PhantomJS 2.1.1 呈现我的 ReactJS 应用程序?

javascript - 错误 : Missing where attribute in the options parameter passed to findOrCreate.

Javascript - 将时间转换为整数并将整数转换为时间

javascript - 如何将此回调参数转换为 promise ?

javascript - 如何避免网页上的第一个函数调用花费这么长时间?

javascript - 如何获取带有对象的深度嵌套数组中的最后一个子元素

javascript - jquery的缩放问题

node.js - Nodejs 使用 require() 函数在所有路由文件中包含所需的包

node.js - 处理浏览器重新加载 socket.io

javascript - 检索 io.socket 中的所有套接字对象