2017-01-28 2 views
0

Я пытаюсь сделать hands-free мышь, используя Arduino IDE и Processing IDE. У меня нет проблем с сериализацией кода и преобразованием в строку, но когда я пытаюсь преобразовать последовательную строку в int, значение int переходит в 0. Я попытался обрезать его и использовал integer.parseInt, но он все равно дает мне ошибку:Как преобразовать строку в int в обработке

NumberFormatException : For input String:"". 

Вот мой код:

import processing.serial.*; 
import java.awt.event.KeyListener; 
import java.awt.Robot; 

Serial myPort; // Create object from Serial class 
Robot robot; 
String val;  // Data received from the serial port 
boolean valtrue; 
int xy = 0; 
int x=0; 

void setup() 
{ 
    String portName = Serial.list()[3]; 
    myPort = new Serial(this, portName, 9600); 
    myPort.bufferUntil('.'); 
    try { 
     robot = new Robot(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
void draw() { 
    //reading serial port until \n 
    String sensorValue = myPort.readStringUntil('\n'); 
    if (sensorValue != null) { 
     int value = Integer.parseInt(sensorValue.trim()); 
     println(value); 
    } 
} 

Если кто-то может помочь, пожалуйста, ответьте.

ответ

1

Тип обработки: int() Функция, которую вы можете использовать вместо Integer.parseInt(). За кулисами функция int() вызывает функцию Integer.parseInt(), но она короче. Вам решать.

Но ваша ошибка говорит все: вы передаете пустое значение String"" в функцию parseInt(). Пустое значение String не может быть преобразовано в число, поэтому вы получите исключение.

Вам нужно будет отследить, почему ваше значение String пусто, но именно это вызывает эту ошибку. Я укажу, что функция draw() называется 60 раз в секунду, и вы пытаетесь читать из своего порта каждый раз, так что, может быть, вы читаете быстрее, чем пишете?

Смежные вопросы