【问题标题】:Sending strings from processing to arduino将字符串从处理发送到 arduino
【发布时间】:2019-02-21 18:20:09
【问题描述】:

我正在尝试在我的 PC 和我的 Arduino 与处理环境之间建立通信,但 Arduino 似乎没有收到我发送的任何消息。我仔细检查了一下,我知道我可以收到来自 Arduino 的消息,但我不能发回任何东西。有谁知道如何解决这一问题?

这是我的处理测试代码:

import processing.serial.*;
Serial myPort;

void setup(){
  myPort = new Serial(this, Serial.list()[0], 9600);
}

void draw(){
  myPort.write("test");
  while (myPort.available() > 0) {
    String inByte = myPort.readString();
    println(inByte);
  }
}

这是我的 Arduino 测试代码:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

String data;
void loop() {
  // put your main code here, to run repeatedly:
  //Serial.println("is running");
  if (Serial.available() > 0) {
    // read the incoming byte:
    data = Serial.readString();

    // say what you got:
    Serial.print("I received: ");
    Serial.println(data);
  }
}

如果能得到任何帮助,我将不胜感激!谢谢!

【问题讨论】:

  • 虽然如此,但 draw() 函数会反复循环直到程序停止,因此即使错过了第一条串行消息,它也会得到下一条。
  • 啊,你是对的。

标签: arduino serial-port processing


【解决方案1】:

好的,在查看了 Arduino 论坛上的几个不同帖子后,我发现了问题所在。用于通过串行发送数据的函数处理不会自动在字符串末尾包含返回字符。这很重要,因为 Arduino 在看到返回字符之前不会从串行缓冲区中读取数据。我所要做的就是在我通过串行发送的每个字符串的末尾添加“\r\n”,这就解决了问题!

【讨论】:

  • Serial.readString() 不等待换行符。它只是等到它没有得到任何东西 1 秒。如果这对您有用,那么您在 Arduino 上的代码与您的问题不同。你在用readStringUntil吗?
  • 不,我只是在 Arduino 上使用 readString。在我将返回字符添加到末尾之前,我没有得到任何沟通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多