2017-11-30 8 views
0

내가 Arduino 프로그램에서 직렬 연결에서 데이터를 읽으려고하면이 코드를 실행하려고하면 outpout을 인쇄 한 후 몇 초 후에 NullPointerException이 발생합니다. 그것은 발가 아닌 포트 널 (null)입니다 수 있습니다처리 직렬 연결 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

:

myVal = float(val);은 처리 코드입니다.

주제를 조금 벗어나면 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(); 
    } 

}