从Arduino到处理的完整串行字符串

Complete Serial String from Arduino to Processing

本文关键字:字符串 Arduino 处理      更新时间:2023-10-16

我正在使用Arduino和Processing。我正试图从Arduino发送一个字符串到处理

void serialDataOutput() {
 dataString = "";
 for (int i = 2; i <= 13; i++) {
if (digitalRead(i) == HIGH) {
  dataString.concat(i);
  dataString.concat(",1/");
} else {
  dataString.concat(i);
  dataString.concat(",0/");
}
}
  //output "2,0/3,0/4,0/5,0/6,0/7,0/8,1/9,1/10,1/11,1/12,1/13,0";
  Serial.write(dataString);

这是我用于生成字符串的代码,以及串行终端中的示例输出。

然而,在处理中,我试图像这样得到这个字符串:

while (myPort.available() > 0) {
  rawInput = myPort.readString();
  println(rawInput);
  myPort.clear();
}

输出如下:

2,0/3,0
/4,0/5,0/6,0/7,0
/8,1/9,1/10,1/11
,1/12,1/13,1

它被分成多行。我需要输入处理它是如何从Arduino发送的。

我该怎么做?

我认为你正在读取处理的输入缓冲区,比你从Arduino发送完整的字符串要快。处理读取缓冲区,因为它有信息(myPort.available() > 0),但arduino正在发送信息。当缓冲区为空时,Processing理解它是字符串的结束,因此它停止读取并打印它。在loop()的下一次迭代中,Arduino一直发送信息和Processing repeat,直到Arduino结束。尝试逐字符读取字符串并将其连接到字符串,直到读取