2017-11-30 7 views
0

Arduinoプログラムからシリアル接続からデータを読み込もうとしたこのコードは、実行しようとすると数秒後にoutpoutとそれを指すポインタを出力した後にNullPointerExceptionが返されましたmyVal = float(val);シリアル接続の処理NullPointerException

が、これは処理コードです:

import processing.serial.*; 

Serial myPort; // Create object from Serial class 
String val;  // Data received from the serial port 
float myVal = 0; 

void setup() 
{ 
    String portName = Serial.list()[6]; 
    myPort = new Serial(this,portName,9600); 
} 


void draw() 
{ 
while (myPort.available() > 0) 
{ 
    val = myPort.readStringUntil('\n'); 
    if (myPort != null) 
    { 
     myVal = float(val); 
     println(myVal); 
    } 
    } 
} 
+0

をどのようにそれが最後に行きましたか?答えは蛇を助けましたか? –

答えて

0

それはvalは、ポートnullでないことかもしれません。

トピックから少し離れて、draw()のループ中にブロックを使用しないことをお勧めします。

serialEvent()try...catch

例のコードチェックアウト:

import processing.serial.*; 

Serial myPort; // Create object from Serial class 
String val;  // Data received from the serial port 
float myVal = 0; 

void setup() 
{ 
    try{ 
    String portName = Serial.list()[6]; 
    myPort = new Serial(this,portName,9600); 
    myPort.bufferUntil('\n'); 
    }catch(Exception e){ 
    println("error opening serial port "); 
    e.printStackTrace(); 
    } 
} 


void draw() 
{ 
background(0); 
text("myVal = " + myVal,5,15); 
} 

void serialEvent(Serial p) { 
    val = myPort.readString(); 
    try{ 
    //get read of newline chars (\n\r), if any 
    val.trim(); 

    myVal = float(val); 

    }catch(Exception e){ 
    println("error parsing serial string"); 
    e.printStackTrace(); 
    } 

} 
関連する問題