2014-02-13 11 views
0

나는 모드 버스 통신을 사용하는 보드가 있고 안드로이드 스마트 폰과 연결을 만들고 싶습니다. jamod 라이브러리에서는 표준 TCP 소켓을 사용하여 연결을 생성하지 않습니다. 이렇게하면 연결을 만들 수 있고 보드에 바이트 배열을 보낼 수 있습니다. 게시판의 답글을 읽고 싶을 때 문제가 발생합니다.안드로이드 - 읽기 TCP 소켓 배열 바이트

byte[] asdo = {(byte)0x01, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0xff, (byte)0xff}; 

DataOutputStream scrittura = new DataOutputStream(socket.getOutputStream()); 

scrittura.flush(); 

scrittura.write(asdo); 

scrittura.flush(); 

이 코드는 내가 주에 호출 스레드에 있습니다 :

는 코드입니다. 보드의 답장은 6 자리의 16 진수 바이트를 가진 'asdo'와 같은 바이트 배열입니다.

회신을 읽고이를 읽을 수 있도록 문자열로 변환하는 방법은 무엇입니까?

감사합니다.

답변

2

데이터 (배열)가 byte[]이므로 byte[]으로 데이터를 읽는 간단한 방법이 있습니다.

InputStream stream = socket.getInputStream(); 
byte[] data = new byte[30]; 
int count = stream.read(data); 

한 번이를 읽고 발행 수의 수를 읽어 반환합니다.

+0

이 방법의 문제점은 터미널에서 볼 수있는 예상치 못한 응답을 수신한다는 것입니다. – Kerberos

+0

이러한 데이터가 실제로 전송되고 있는지 확인 했습니까 * 올바르게 *? – nKn

+0

예, 올바른 배열을 읽는 PC에 로거가 있습니다. – Kerberos

2

미리 예상되는 응답의 크기를 알고있는 경우 DataInputStream.readFully();을 사용해야하며 그렇지 않은 경우 DataInputStream.read(byte[]),을 사용하면 실제로 읽은 바이트 수를 반환합니다.