1
누군가 나를 도울 수 있습니까?Null 포인터 예외 처리시
1;2;3/4;5;6/7;8;9 //new line
코드는 3 개 위치 각각 플로트 3 개 어레이에 직렬이 데이터 분할을 취할 supossed 하였다 (: I는 자이로 전송 아두 이노 접속 이와 같이 시리얼 throught를 값을 가질 X, Y 및 Z라고 함)이 값에 따라 3 축을 그립니다.
이 내 실제 코드 :
int radius = 100;
import processing.serial.*;
int lf = 10; //Linefeed (new line) on ASCII
String myString = null;
Serial myPort; // Serial port for communication
String[] dataLine;
float[] X;
float[] Y;
float[] Z;
float time, lastTime;
void setup()
{
size(500, 500, P3D);
println (Serial.list()); //List avaible serial ports
myPort = new Serial (this, Serial.list()[0], 9600); //Assign the first available to the program
myPort.clear();
myString = myPort.readStringUntil(lf); //Read what is on the serial until a new line
myString = null; //Throw away what was on the serial
}
void draw()
{
background(255);
pushMatrix();
translate(radius,radius,radius);
stroke(255,0,0);
line(0, 0, 0, X[0], X[1], X[2]);
stroke(0,255,0);
line(0, 0, 0, Y[0], Y[1], Y[2]);
stroke(0,0,255);
line(0, 0, 0, Z[0], Z[1], Z[2]);
popMatrix();
noLoop();
}
void serialEvent (Serial myPort)
{
if (myPort.available() > 0)
{
String myString = myPort.readStringUntil(lf);
if (myString.length() == 17)
{
dataLine = split(myString, '/');
X = float(split(dataLine[0], ';'));
print(X[0] + ";" + X[1] + ";" + X[2]);
println();
Y = float(split(dataLine[1], ';'));
print(Y[0] + ";" + Y[1] + ";" + Y[2]);
println();
Z = float(split(dataLine[2], ';'));
print(Z[0] + ";" + Z[1] + ";" + Z[2]);
println();
}
}
redraw();
}
`
문제는 내가이 오류를 수신하는 대신 코드를 실행하고 있다는 것입니다 :
는COM3
java.lang.RuntimeException: java.lang.NullPointerException
at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
at javax.media.opengl.Threading.invoke(Threading.java:191)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
at processing.opengl.PJOGL.requestDraw(PJOGL.java:688)
at processing.opengl.PGraphicsOpenGL.requestDraw(PGraphicsOpenGL.java:1651)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at sketch_DCM_print.draw(sketch_DCM_print.java:53)
at processing.core.PApplet.handleDraw(PApplet.java:2386)
at processing.opengl.PJOGL$PGLListener.display(PJOGL.java:862)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1289)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
at javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1300)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
그게 문제였습니다! 고맙습니다! 그러나 지금은 또 다른 문제가 있습니다 'COM3 오류, COM3 null' – Rafael
@Rafael에 대한 serialEvent()를 사용하지 : 다른 스레드를 열어야을 –