我正在尝试使用 android 中的库连接到终端仿真器,这将连接到串行设备并应该向我显示发送/接收的数据。要附加到终端会话,我需要提供inputStream
tosetTermIn(InputStream)
和outputStream
to setTermOut(OutputStream)
。
我像这样初始化并附加了一些流onCreate()
,这些只是初始流,并没有附加到我想要发送/接收的数据上。
private OutputStream bos;
private InputStream bis;
...
byte[] a = new byte[4096];
bis = new ByteArrayInputStream(a);
bos = new ByteArrayOutputStream();
session.setTermIn(bis);
session.setTermOut(bos);
/* Attach the TermSession to the EmulatorView. */
mEmulatorView.attachSession(session);
我现在想在发送和接收数据时将流分配给数据。在每次按 Enter 时调用的 sendData() 方法中,我有:
public void sendData(byte[] data)
{
bos = new ByteArrayOutputStream(data.length);
}
在 onReceiveData() 方法中,每次通过串行接收数据时调用:
public void onDataReceived(int id, byte[] data)
{
bis = new ByteArrayInputStream(data);
}
但是,aByteArrayInputStream
只能拥有给它的数据,因此在发送和接收数据时需要不断地创建它。现在的问题是,我希望这些数据出现在终端上,但是当我将 bis 分配给数据时,它不再像我打电话时那样附加mEmulatorView.attachSession(session);
有没有办法在不破坏 bis 对终端的绑定的情况下更新 bis 指向的内容?
编辑:另外,如果我尝试再次调用附加,我会收到错误,尽管理想情况下我不想再次调用它等等。
SerialTerminalActivity.this.runOnUiThread(new Runnable() {
public void run() {
mSession.setTermIn(bis);
mSession.setTermOut(bos);
mEmulatorView.attachSession(mSession);
}
});
虽然那可能是我在那里的编码。 http://i.imgur.com/de8D5.png