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

标签 java c++ arduino processing

我正在使用 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 发送的。

我该怎么做?

最佳答案

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

关于java - 从 Arduino 到处理的完整串行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091935/

相关文章:

java - 扩大和装箱 Java 原语

java - 有没有办法将 Stream 的结果转换为 Array 并迭代 Array 元素?

c++ - 没有正确使用运算符 '?'?

c++ - 在为 Android 开发时如何在 Eclipse 中获得 C++ 的智能感知?

arduino - ESP8266 - 实时更新服务器,无需刷新?

java - 示例应用程序 "Articles"无法在带有 Tomcat 的 Oracle WebCenter Sites Jump Start Kit 上启动

java - 当构建文件位置更改时如何在 ANT 中设置 lib 路径

c++ - 在 constexpr 函数中放置 new 和 delete

Arduino Sketch 上传问题 - avrdude : stk500_recv(): programmer is not responding

c++ - C/C++ 内存问题?