将byte []更改为inputstream?

时间:2012-12-10 11:04:45

标签: java android bytearray inputstream libraries

我在Android应用中使用了两个库,我试图制作它。新的android。该应用程序用于连接到串行设备并通过终端控制其控制台。

一个库用于建立串行连接,设置波特率等,还可以通过串行写入读/数据。另一个用于创建终端会话。我的问题在于将这两者结合在一起,以便有一个连接到串行设备的终端。

在终端库中,我需要提供InputStreamOutputStream来为终端提供输入和输出。所以我必须调用setTermIn(java.io.InputStream)setTermOut(java.io.OutputStream)将输入和输出流连接到模拟器。

在串行库中,有两种发送和接收方法,它们处理字节数组。 用于发送数据的sendData(byte[] data)和用于接收数据的dataListener。我必须实现这个并编写方法onDataReceived(int id, byte[] data),其中id是设备的名称。

我没有通过串口发送字节数组的函数的源代码,那么如何将字节数组转换为流发送到终端?

修改

我认为这应该覆盖它,这就是我想要的?

Private USB2SerialAdapter mSelectedAdapter;

...

public void sendData(byte[] data)
{
//this should echo what I send to the terminal in the correct format
ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);     

bos.write(data, 0, data.length);

setTermOut(bos);

//send data over serial using original sendData() method
mSelectedAdapter.sendData(data);
}

2 个答案:

答案 0 :(得分:4)

这两个片段应该为您提供足够的信息来找到问题的解决方案。

<强>读数:

byte[] source = ...;
ByteArrayInputStream bis = new ByteArrayInputStream(source);
// read bytes from bis ...

<强>写

ByteArrayOutputStream bos = new ByteArrayOutputStream();
// write bytes to bos ...
byte[] sink = bos.toByteArray();

答案 1 :(得分:2)

应该这样做:ByteArrayInputStreamByteArrayOutputStream

请查看这些案例中的文档。