2017-01-28 21 views
0

Arduino IDEとProcessing IDEを使用してハンズフリーマウスを作成しようとしています。コードをシリアル化して文字列に変換することに問題はありませんが、シリアル文字列をintに変換しようとすると、intに0が入ります。それをトリミングして使用しようとしましたが、それでもinteger.parseIntを使用しますが、処理中に文字列をintに変換する方法

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); 
    } 
} 

誰が助けることができるなら、答えてください:

NumberFormatException : For input String:"". 

は、ここに私のコードです。

答えて

1

処理には、Integer.parseInt()の代わりに使用できるint()関数があります。その背後ではint()関数がInteger.parseInt()関数を呼び出していますが、それはより短いです。あなた次第。

エラーが表示されます:Stringの値が""の場合は、parseInt()関数に空白が渡されています。空のStringの値を数値にすることはできませんので、例外が発生します。

なぜあなたのString値が空であるのかを追跡する必要がありますが、これが原因でこの特定のエラーが発生します。私は、draw()関数が毎秒60回呼び出され、毎回あなたのポートから読み込もうとしていることを指摘します。

関連する問題