마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

블루투스로 패킷주고 받을때

0 추천

안녕하세요 안드로이드펍 가족님들.

 

현재 블루투스로 아스키코드값을 받아서 처리하는부분을 하늗네요.

하이퍼터미널에서 한 20바이트정도 쳤는데

이게 한번에 오는것이 아니라 반정도오고 다시 반이오고이런시긍로 되어있습니다.

저는 이걸 한꺼번에 모아서 처리할수없나요?

바이트안에 특정 코드를 번째를 검색해서 처리를해야하는데 

방법이 없는건가요.

 

public void run() {

Log.e(TAG, "BEGIN mConnectedThread");

byte[] buffer = new byte[1024];

int bytes;

 

// Keep listening to the InputStream while connected

while (true) {

try {

// InputStream으로부터 값을 받는 읽는 부분(값을 받는다)

bytes = mmInStream.read(buffer);

 

String readMessage = new String(buffer, 0, bytes);

 

if(buffer[18]==0x0d && buffer[19]==0x0a){

if(Const.g_handler!=null){

Const.g_handler.obtainMessage(Const.MESSAGE_INIT, bytes, -1, buffer).sendToTarget(); 

}

}

 

if(Const.g_handler!=null){

// Const.g_handler.obtainMessage(Const.MESSAGE_INIT, bytes, -1, buffer).sendToTarget();

Const.g_handler.obtainMessage(Const.MESSAGE_READ, bytes, -1, buffer).sendToTarget();

}

 

} catch (IOException e) {

Log.e(TAG, "disconnected", e);

if(Const.g_handler!=null){

Const.g_handler.obtainMessage(Const.MESSAGE_DISCONNECT).sendToTarget();

// Const.g_handler.sendMessage(message);

}

 

connectionLost();

break;

}

}

}

흠바바 1 (4,000 포인트) 님이 2014년 12월 17일 질문

1개의 답변

0 추천
보통 통신을 처리할 때, 전체 프레임이 필요한 부분은 프레임안에 프레임 길이를 넣던지 아니면 끝 부분에 CR, LF 같은 특수 문자를 넣어서 구분을 합니다. 프로토콜 변경없이는 불가능해 보이네요.
안_드루이드 (14,510 포인트) 님이 2014년 12월 17일 답변
...