Processing 在处理过程中,使用串行端口,为什么.equals不返回true?

Processing 在处理过程中,使用串行端口,为什么.equals不返回true?,processing,arduino-uno,Processing,Arduino Uno,我正在使用处理来显示进入串行端口的数据。 我有简单的字符串值进入串行端口 我已经把我所有的代码都缩减到了这个失败的基本点,我无法理解它为什么会失败if语句的计算结果永远不会为true。(我没有尝试将字符串与=或==进行比较) 如果你知道为什么会这样,请帮忙:)我非常感谢你的回答 呃,好吧,既然我没有10的名声,我就不发布有用的截图了。 以下是失败的代码: enter code here import processing.serial.*; Serial myPort; String

我正在使用处理来显示进入串行端口的数据。 我有简单的字符串值进入串行端口

我已经把我所有的代码都缩减到了这个失败的基本点,我无法理解它为什么会失败if语句的计算结果永远不会为true。(我没有尝试将字符串与=或==进行比较)

如果你知道为什么会这样,请帮忙:)我非常感谢你的回答

呃,好吧,既然我没有10的名声,我就不发布有用的截图了。 以下是失败的代码:

    enter code here
import processing.serial.*;
Serial myPort;

String val;  //Data recieved from the serial port

void setup() {
  size(400,300);

  String portName = Serial.list()[2]; //change the 0 to a 1 or 2 etc. to match your port //1 or 2  for USB on the Mac
  myPort = new Serial(this, portName, 9600); 
  myPort.bufferUntil('\n');
}



void serialEvent (Serial myPort){
 val = myPort.readStringUntil('\n');
 print(val);
  if(val != null){   
    if(val.equals("New sample set")){
      print("yes\n");
    } else {
      print("not equal\n");
    }

  }
}


void draw() {
  //The serialEvent controls the display
}  

我试着去掉空格,只留下一个字母,但这没有帮助。我尝试过使用if(val.equals(“新样本集”)==true),但也没有用。

好的,只花了几个小时,但我已经回答了自己的问题:)

是,必须使用.equals()比较字符串。是,必须对其进行修剪,以便消除所有换行字符。

我不正确地使用了trim。 简单地说myString.trim();不行。 这将返回一个字符串,因此需要将其放置在某个位置;以下是方法: myString=myString.trim()

我知道,对有经验的程序员来说有点明显,但我就是看不到。我认为bufferUntil('\n')只会在。。。我想不是。 希望我在这个愚蠢的小“傻瓜”里度过的时光能帮助别人! :) 快乐编码

成功处理代码如下:

import processing.serial.*;
串行端口;
字符串val//从串行端口接收的数据
无效设置(){
尺寸(400300);
String portName=Serial.list()[2];//将0更改为1或2等,以匹配Mac上USB的端口//1或2
myPort=新序列号(此端口名为9600);
myPort.bufferUntil('\n');
}
void serialEvent(串行端口){
val=myPort.readStringUntil('\n');
打印(“读取序列后,val为“+val+”\n”);
val=val.trim();
打印(“修剪后,val为“+val+”\n”);
如果(val!=null){
打印(“与null比较后,val为“+val+”\n”);
如果(“N”。等于(val)){
打印(“是”\n);
}否则{
打印(val+”不等于\“N\”\N);
}
}
}
作废提款(){
//serialEvent控制显示

}
在我没有权限添加的屏幕截图中,您可以看到一条线索:当我在控制台中打印val时,它会打印一个新行,所以我猜问题是因为val实际上包含一个新行字符。我已尝试添加\n,但仍然没有成功。我也尝试过使用trim()删除任何不需要的字符,但这也不起作用。如果我没有弄错的话,我不相信
trim()
实际上会从字符串中删除
\n
字符。