我正在使用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发送的确切方式。
我该怎么做?
答案 0 :(得分:1)
我认为您正在阅读Processing的输入缓冲区,而不是从Arduino
发送完整的字符串。
处理读取缓冲区因为它有信息(myPort.available() > 0
)但是arduino正在发送信息。当缓冲区为空时,Processing知道它是字符串的结尾,因此它会停止读取并打印它。在loop()
的下一次迭代中,Arduino发送了信息并处理重复,直到Arduino结束。
尝试读取字符串char-by-char并将其连接成一个字符串,直到您阅读\0