2013-08-24 4 views
0

블루투스 장치에서 데이터를 수신 할 소켓을 설정했습니다. 수신 버퍼는 스레드를 나가기 전에 8 바이트의 데이터를 수집하도록 설정되었지만 버퍼는 데이터의 다음 바이트를 저장하기 위해 전진하지 않습니다. 버퍼를 8로 설정하고 버퍼가 가득 찰 때까지 반복합니다.블루투스 데이터 수신

 private class ConnectedThread extends Thread { 

    private final InputStream mmInStream; 
    private final OutputStream mmOutStream; 

    public ConnectedThread(BluetoothSocket socket) { 
     InputStream tmpIn = null; 
     OutputStream tmpOut = null; 

     // Get the input and output streams, using temp objects because 
     // member streams are final 
     try { 
      tmpIn = btSocket.getInputStream(); 
      tmpOut = btSocket.getOutputStream(); 
     } catch (IOException e) { } 

     mmInStream = tmpIn; 
     mmOutStream = tmpOut; 
     } 

    public void run() { 

     // Keep listening to the InputStream until an exception occurs 
     while (true) { 
      try { 

       InputStream mmInStream = btSocket.getInputStream(); 

       byte[] readBuffer = new byte[8]; 
       int read = mmInStream.read(readBuffer); 
       while(read != -1){ 

        Log.d(TAG, " SizeRR " + read); 
        read = mmInStream.read(readBuffer); 
       } 


      } catch (IOException e) { 
       break; 
      } 
     } 
    } 

는 Log.d (SizeRR 1) 추상 INT를 반환하도록 설계되었습니다() 8 회

+0

는 기대 어떤 출력? – frogmanx

+0

readBuffer [7]을 통해 배열 readBuffer [0]에 데이터를 가져 오려고했습니다. –

답변

0

InputStream.read를 읽고, 그래서 항상 0 ~ 255 사이의 숫자를 인쇄합니다.

대신 읽기 (바이트 [완충액) 방법을 시도, 그것은 직선 배열로 스트림 데이터를 복사에서 데이터 buffer.length 량을 쓴다

public void run() { 

    // Keep listening to the InputStream until an exception occurs 
    while (true) { 
     try { 

      InputStream mmInStream = btSocket.getInputStream(); 
      byte[] readBuffer = new byte[8]; 
      mmInStream.read(readBuffer); 

     } catch (IOException e) { 
      break; 
     } 
    } 
} 
+0

수신 기능은 좋지만 1 바이트 만 반환합니다. 수신 버퍼는 8 바이트를 사용할 수 있어야합니다. –

+0

그러나 원래 함수에서 8 바이트를 얻고 있습니다. Log.d (SizeRR 1)가 8 회 리턴하면 8 바이트의 8 정수가됩니다. – frogmanx

+0

당신은 8 바이트를 얻고 있습니다. 나는 mmInStream.read (readBuffer)가 readbuffer에 한 번에 8을 모두 읽은 다음 종료한다고 생각했습니다. 나는 각각 8 바이트를 seperatly 읽기 위해 루프를 시도 할 것이라고 생각한다. –

관련 문제