首页 文章

Arduino Serial to Processing - 无法将字符串转换为int

提问于
浏览
0

我希望这很简单:

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 回答

  • -1

    这些行中的任何一行都应该起作用:

    int val = Integer.parseInt(myString);
    int val = Integer.valueOf(myString);
    

    如果不是,那么 myString 就出了问题 . 通常,错误是由 String 变量引起的,该变量包含非数字字符,如 "ABC""XYZ" .

    但是,看起来该值是数字,因为它打印出 "30" . 所以其他事情正在发生 .

    我想知道是否在 myString 变量中添加了一个额外的隐形字符 . 尝试做这样的事情:

    println(myString);
    println(myString.length());
    

    您还可以查看 Character 类以获取有用的函数,然后检查 myString 中的每个字符以确保它符合您的预期 .

  • 0

    尝试使用myString.toInt(myString必须是String对象而不是char数组)

相关问题