2012-12-10 3 views
0

나는 만들려고하는 안드로이드 앱에서 두 개의 라이브러리를 사용하고 있습니다. 안드로이드 입문. 이 응용 프로그램은 직렬 장치에 연결하고 터미널을 통해 콘솔을 제어하기위한 것입니다.byte를 입력 스트림으로 변경 하시겠습니까?

하나의 라이브러리는 직렬 연결 설정, 전송 속도 설정 및 직렬/직렬 데이터 쓰기가 가능합니다. 다른 하나는 터미널 세션을 만들기위한 것입니다. 내 문제는 직렬 장치에 연결된 터미널을 둘 다 함께 통합하는 데 있습니다.

터미널 라이브러리에서 나는 터미널에 입력과 출력을 제공하기 위해 InputStreamOutputStream을 제공해야합니다. 따라서 setTermIn(java.io.InputStream)setTermOut(java.io.OutputStream)을 호출하여 입력 및 출력 스트림을 에뮬레이터에 연결해야합니다.

그러나 직렬 라이브러리에는 송수신하는 두 가지 방법이 있으며 바이트 배열을 처리합니다. sendData(byte[] data) 및 데이터 수신을위한 dataListener. 이 구현하고 코드 ID를 장치의 이름을 onDataReceived(int id, byte[] data) 코드해야합니다.

직렬 배열을 통해 바이트 배열을 보내는 소스 코드가 없으므로 터미널에 보낼 바이트 배열을 스트림으로 만들려면 어떻게해야합니까?

편집 :

내가이 그것을 무시한다고 생각하고 내가 원하는 무엇인가? 이 그것을해야

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); 
} 
+0

'내가 코멘트에서 코드를 포맷하는 방법을 알아낼 수 없습니다 @Blacklight java.io.ByteArrayOutputStream' – SJuan76

답변

4

이 두 조각은 문제에 대한 해결책을 찾을 수있는 충분한 정보를 제공해야합니다.

읽기 :

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

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

그래서 난 편집 작성 원래의 질문. 고마워. – Paul

관련 문제