public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[1024];
int bytes;
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
while (bytes < 28) {
bytes = bytes + mmInStream.read(buffer);
}
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
// Start the service over to restart listening mode
BluetoothChatService.this.start();
break;
}
}
}
블루투스 모듈에서 29바이트의 데이터를 받아 출력을 해야합니다.
T 28 P 002 S 00000 C 00000 같이 나와야합니다.
그런데 값이 손실되어 이상하게 나왔습니다.
인터넷에 찾아보니 블루투스가 데이터를 쪼개서 전송해서 그렇다는 말이 있어 데이터를 모아서 보내는 방법으로
했습니다. 소스의 중간에 while (bytes < 28) 부분이 제가 수정해본 것인데.. 제가 프로그래밍을
거의 모르는 전자과 학생이라 제대로
한건지 모르겠습니다. 다시 출력을 보니 S 00000 C 00000 이렇게 조금 길어졌을 뿐 여전히 잘 안나왔습니다.
찾아보니 스타트비트와 앤드비트를 이용하는 것도 있던데
어떻게 하는건지 좀 가르쳐주길 부탁드립니다.... 만약 T를 시작, C를 끝으로 한다면 코드를 어떻게 짜야할까요?