使用Processing进行串口读取,找不到字符串

时间:2015-07-23 17:34:34

标签: arduino serial-port processing

我正在尝试从Processing读取串口。为此,我正在尝试基本的hello world示例。我写Hello世界!来自Arduino并尝试用Processing捕获它。以下是代码:

以下是Arduino Uno的代码:

void setup() 
{
  //initialize serial communications at a 9600 baud rate
  Serial.begin(9600);
}

void loop()
{
  //send 'Hello, world!' over the serial port
  Serial.println("Hello, world!");
  //wait 100 milliseconds so we don't drive ourselves crazy
  delay(100);
}

以下是处理代码:

import processing.serial.*;

Serial myPort;  // Create object from Serial class

String val;     // Data received from the serial port
String check     = "Hello, world!";
String portName  = Serial.list()[1]; //COM4



void setup() {
  myPort = new Serial(this, portName, 9600);
  println("Starting Serial Read Operation");
}

void draw()
{

  if ( myPort.available() > 0) {  // If data is available,


    val = myPort.readStringUntil('\n');


    println(val);
    if (val != null && val.equals("Hello, world!") == true) {

      println("Found the starting Point");
    }
  }
}

我无法捕捉到检查字符串。

处理的输出:

null
Hello, world!

null
Hello, world!

null
Hello, world!

Hello, world!

根据输出,我可以成功读取串口。 (但是有很多空值,我不知道为什么。)但是我无法捕获指定的字符串。

你知道问题是什么吗?

此致

1 个答案:

答案 0 :(得分:1)

使用println时,Arduino会发送\r\n

比较时,在将"Hello, world!\r""Hello, world!"进行比较时失败。

您可以使用Serial.print()并在字符串中手动添加\n或在文本后发送Serial.write('\n');来解决此问题(可以使用辅助函数替换重复)。