我有一个在 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 开始,所以我的猜测是,在它发出消息的时间之间……那一刻的内容已经消失了,也许我错了。
最佳答案
看看你的代码,可能有几件事。
- 您可能会在监听器准备好之前发送数据,下面的库已解决该问题。
- 下面这行让我担心
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/