我希望这很简单:
Arduino将传感器读数作为DEC字符串发送。该代码正常工作......它发送距离传感器读数字符串。 "数字"字符串标识传感器,然后告诉距离。 20,217,3100,410
这是它从Arduino发送的方式:
void printDistance(int id, int dist) {
Serial.print(id);//id's the sensor
if (dist >=150 || dist <= 0 ) {
int zero = 0;
Serial.print(zero, DEC);
} else {
Serial.print(dist, DEC);
}
Serial.println("");//line break
}//end print distance
处理中
void draw() {
if (myPort.available() > 0) {
myString = myPort.readStringUntil(lf);
int val = Integer.parseInt(myString);
//int val = Integer.valueOf(myString);
if (val >= 0) {
//center sensor
if ((val >= 30 && val <= 39) || (val >= 310 && val <= 399) || (val >= 3100 && val <= 3150)) {
//playBear();
println(val);
fill(13, 96, 115); //blue
rect(150, 150, 100, 100);
}
//right sensor
else if (((val >= 20) && (val <=29)) || ((val >= 210) && (val <= 299)) || ((val >= 2100) && (val <= 2150))) {
//playLaugh();
println(val);
fill(204, 102, 0); //orange
rect(50, 50, 100, 100);
}
...more else if's
Processing为输入字符串&#34; 30&#34;
抛出&#34; NumberFormatException问题是:如何从Arduino Serial中获取字符串实际转换为整数,以便我可以将它用于那些写得不好的条件语句?
答案 0 :(得分:0)
这些行中的任何一行都应该起作用:
int val = Integer.parseInt(myString);
int val = Integer.valueOf(myString);
如果他们不是,那么myString
出了问题。通常,错误是由包含非数字字符的String
变量引起的,例如"ABC"
或"XYZ"
。
但是,看起来该值是数字,因为它打印出"30"
。所以其他事情正在发生。
我想知道是否在myString
变量中添加了一个额外的隐形字符。尝试做这样的事情:
println(myString);
println(myString.length());
您还可以查看Character
课程中的有用功能,然后检查myString
中的每个字符,以确保它符合您的预期。
答案 1 :(得分:-1)
尝试使用myString.toInt(myString必须是String对象而不是char数组)