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

블루투스 데이터 수신 질문이요

0 추천
채팅 소스인데요 
이것을 avr에 연결하여 수신하면
12345678 이런식으로 와야되는데
2345
6781
이런식으로 잘려서 오는데 어떻게 해야되나요?
 @Override
    public void run() {
                Log.i(TAG, "BEGIN mConnectedThread");
              //  byte[] buffer0 = new byte[0];
                byte[] buffer = new byte[1024];
                int bytes;
                // Keep listening to the InputStream while connected
                while (true) {
                    try {
                        // Read from the InputStream
                    // TODO: add dogkick!!
                       // bytes0 = mmInStream.read(buffer0);
                    bytes = mmInStream.read(buffer);              
                    
                        
                       
                             
                        //end the obtained bytes to the UI Activity
                        mHandler.obtainMessage(MainController.MESSAGE_READ, bytes, -1, buffer)
                        .sendToTarget();
                    } catch (IOException e) {
                        Log.e(TAG, "disconnected", e);
                        connectionLost();
                        break;
                    }
                }
           
            }
        
익명사용자 님이 2014년 10월 2일 질문

1개의 답변

0 추천

전송하는측에서

sendwrite 가아닌 sendwriteline 개념으로보내시면 받는쪽에서 cr(캐리지리턴)까지 받을수 있어요

12345678 asc(13) <-- 엔터값이져

 

보통 수신측은 데이터가 어떻게 들어 올지 모르기 때문에 순환큐로 만듭니다

그런후 일정시간에 가서 받은 데이터가  12345678cr12345 여기까지 왔다면

12345678cr까지만 가져가서 처리하고 나머지 12345는 남겨두면 또 뒤 이어서 678cr이 올테니

그때 처리 하면 되요

 

무조건 1개주면 1개받아야 한다고 프로그래밍하면 프로그램은 쉽게 짤수 있으나 문제가 생길때에

조치가 어렵고 10개 주면 10개 받아야 한다면 123 주다가 멈추면 받는쪽은 나머지 7개가 부족하여

무한적 대기를 해야하는 일도 생기죠

 

rs232 시리얼 통신의 순환큐 방식으로 하시면 좋구요

어렵다면 cr을 뒤에 붙혀서 보내시고 cr로 split 를 하시던가 하세요

잘안되시면 그부분만 의뢰 개발 가능합니다

 

doridori2013@nate.com

익명사용자 님이 2014년 10월 2일 답변
...