我希望这很简单:
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
处理抛出“输入字符串的NumberFormatException”30“
问题是:如何从Arduino Serial中获取字符串实际转换为整数,以便我可以将它用于那些编写错误的条件语句?
2 回答
这些行中的任何一行都应该起作用:
如果不是,那么
myString
就出了问题 . 通常,错误是由String
变量引起的,该变量包含非数字字符,如"ABC"
或"XYZ"
.但是,看起来该值是数字,因为它打印出
"30"
. 所以其他事情正在发生 .我想知道是否在
myString
变量中添加了一个额外的隐形字符 . 尝试做这样的事情:您还可以查看
Character
类以获取有用的函数,然后检查myString
中的每个字符以确保它符合您的预期 .尝试使用myString.toInt(myString必须是String对象而不是char数组)