안드로이드에서 라이브러리를 사용하여 터미널 에뮬레이터에 연결하려고합니다.이 장치는 직렬 장치에 연결되어 전송/수신 데이터를 표시해야합니다. 터미널 세션에 연결하려면 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);
}
어떻게 올바르게 이러한 초기화 할 스트림을 설정하는 시리얼을 통해 데이터를 전송하는 방법을 재정의
는, 내가 입력 누를 때마다 실행 ? 데이터를 보내고받을 때마다 스트림을 실제로 설정해야합니까? 또는 수표를 발행해야합니까?
그리고 당신의 질문은 무엇을 사용하기 전에를 넣을 수 있습니다 사용하기 전에
bis
및bos
를 초기화해야? – AlexR죄송합니다, 어떻게 올바르게 초기화합니까? 데이터를 보내고받을 때마다 스트림을 실제로 설정해야합니까? 또는 수표를 발행해야합니까? – Paul