我正在尝试从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!
根据输出,我可以成功读取串口。 (但是有很多空值,我不知道为什么。)但是我无法捕获指定的字符串。
你知道问题是什么吗?
此致
答案 0 :(得分:1)
使用println时,Arduino会发送\r\n
。
比较时,在将"Hello, world!\r"
与"Hello, world!"
进行比较时失败。
您可以使用Serial.print()
并在字符串中手动添加\n
或在文本后发送Serial.write('\n');
来解决此问题(可以使用辅助函数替换重复)。