首页 文章

从Arduino到Processing的完整串行字符串

提问于
浏览
3

我正在使用Arduino和Processing . 我正在尝试从Arduino发送一个字符串到Processing

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);

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

但是,在Processing中,我试图得到这样的字符串:

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发送的确切方式 .

我该怎么做呢?

1 回答

  • 1

    我认为你正在读取Processing的输入缓冲区比从 Arduino 发送完整字符串更快 . 处理读取缓冲区,因为它有信息( myPort.available() > 0 ),但arduino正在发送信息 . 当缓冲区为空时,Processing知道它是字符串的结尾,因此它会停止读取并打印它 . 在 loop() 的下一次迭代中,Arduino发送了信息并处理重复,直到Arduino结束 . 尝试读取字符串char-by-char并将其连接到字符串,直到您阅读 \0

相关问题