2012-12-13 4 views
0

안드로이드에서 라이브러리를 사용하여 터미널 에뮬레이터에 연결하려고합니다.이 장치는 직렬 장치에 연결되어 전송/수신 데이터를 표시해야합니다. 터미널 세션에 연결하려면 setTermIn (InputStream)에 대한 입력 스트림과 setTermOut (OutputStream)에 대한 출력 스트림을 제공해야합니다.Java : inputstream/outputstream의 기본값은 무엇입니까?

그러나 스트림을 다음과 같이 선언하면 null이 기본값이됩니다.

라이브러리에이 코드를 가리키는
FATAL EXCEPTION: TermSession input reader 
java.lang.NullPointerException at jackpal.androidterm.emulatorview.TermSession$2.run(TermSession.java:137) 

: 내가 세션에 내 스트림을 연결하려고 할 때

private OutputStream bos; 
private InputStream bis; 

... 

//inside onCreate() method 
session.setTermIn(bis); 
session.setTermOut(bos); 
/* Attach the TermSession to the EmulatorView. */ 
mEmulatorView.attachSession(session) 

그래서 나는 오류 얻을

public void run() 
{ 
    try 
    { 
     while (true) 
     { 
      int read = mTermIn.read(mBuffer); 
      if (read == -1) 
      { 
       // EOF -- process exited 
       return; 
      } 
      mByteQueue.write(mBuffer, 0, read); 
      mMsgHandler.sendMessage(mMsgHandler.obtainMessage(NEW_INPUT)); 
     } 
    } 
    catch (IOException e) 
    { 
    } 
    catch (InterruptedException e) 
    { 
    } 
} 

이 있기 때문입니다 I 아직 데이터 송수신을 시작하지 않았으므로 데이터를 스트림에 할당하지 않았습니다. 스트림에 할당 할 가짜 데이터를 설정하려면 어떻게해야합니까? 나는 그것을 시도하고 그것은 여전히 ​​불평. 아마도 나는 그것을 잘못하고있다.

데이터를 보내고 받으려면 다음과 같은 방법이 있습니다. 상상할 때마다 스트림을 설정하면 안됩니다. 데이터가 수신 될 때마다

public void sendData(byte[] data) 
{ 
    bos = new ByteArrayOutputStream(data.length); 
} 

실행됩니다 :

public void onDataReceived(int id, byte[] data) 
{ 
    bis = new ByteArrayInputStream(data); 
} 

어떻게 올바르게 이러한 초기화 할 스트림을 설정하는 시리얼을 통해 데이터를 전송하는 방법을 재정의

, 내가 입력 누를 때마다 실행 ? 데이터를 보내고받을 때마다 스트림을 실제로 설정해야합니까? 또는 수표를 발행해야합니까?

+0

그리고 당신의 질문은 무엇을 사용하기 전에를 넣을 수 있습니다 사용하기 전에 bisbos를 초기화해야? – AlexR

+0

죄송합니다, 어떻게 올바르게 초기화합니까? 데이터를 보내고받을 때마다 스트림을 실제로 설정해야합니까? 또는 수표를 발행해야합니까? – Paul

답변

1

당신은 그들을

당신은 단지이 두 라인

session.setTermIn(bis); 
session.setTermOut(bos); 
+0

나는 그들의 정의에서 그들을 초기화하려고 노력했다, 나는 그 감사를 시도 할 것이다. 내가 올바르게 초기화했는지 확신 할 수 없다. – Paul

+0

같은 방식으로 다시 초기화하려고했지만 작동하지 않습니다. byte [] a = new byte [0]; bis = new ByteArrayInputStream (a); bos = new ByteArrayOutputStream(); – Paul

관련 문제