2012-04-12 3 views
6

내 안드로이드 응용 프로그램이 블루투스 연결을 통해 폴라 심장 박동 모니터에서 데이터를 가져 오는 중입니다. 내 문제는 내가 그런 문자열을 얻고 있다는 것입니다 : 폴라 심박수 모니터에서 적절한 값을 얻는 방법

데이터를 얻기위한 나의 코드 :

을 : 나는 몇 가지 방법이 줄을 변경하려하지만 난 여전히 잘못된 데이터를 얻고
final Handler handler = new Handler(); 
    final byte delimiter = 10; //This is the ASCII code for a newline character 

    stopWorker = false; 
    readBufferPosition = 0; 
    readBuffer = new byte[1024]; 
    workerThread = new Thread(new Runnable() 
    { 
     public void run() 
     { 
      while(!Thread.currentThread().isInterrupted() && !stopWorker) 
      { 
       try 
       { 
        int bytesAvailable = mmInputStream.available(); 
        if(bytesAvailable > 0) 
        { 
         byte[] packetBytes = new byte[bytesAvailable]; 
         mmInputStream.read(packetBytes); 
         for(int i=0;i<bytesAvailable;i++) 
         { 
          byte b = packetBytes[i]; 
          if(b == delimiter) 
          { 
           byte[] encodedBytes = new byte[readBufferPosition]; 
           // System.arraycopy(readBuffer, 0, encodedBytes, 0, encodedBytes.length); 
           final String data = new String(encodedBytes, "ASCII"); 

           readBufferPosition = 0; 

           handler.post(new Runnable() 
           { 
            public void run() 
            { 
             pulsText.setText(data); 
            } 
           }); 
          } 
          else 
          { 
           readBuffer[readBufferPosition++] = b; 
          } 
         } 
        } 
       } 
       catch (IOException ex) 
       { 
        stopWorker = true; 
       } 
      } 
     } 
    }); 

    workerThread.start(); 

final String data = new String(encodedBytes, "ASCII"); 

이 문제를 어떻게 해결할 수 있습니까?

도와주세요!

+1

렌더링 된 문자열이 아닌 원시 바이트 값을 보았습니까? –

+1

문자가 인쇄 가능 범위 위에있는 것처럼 보입니다. 문자가 아닌 정수로보아야하며 더 이상 이해가되는지 확인해야합니다. – twain249

+0

@erni 어떻게 문제를 해결 했습니까? – Hunt

답변

4

센서는 인쇄 가능한 문자열 (예 : NMEA)은 아니지만 구문 분석에 필요한 이진 데이터를 제공합니다. 영감을 얻으려면 MyTracks Polar Sensor data parser을 들여다 볼 수 있습니다.

당신은 availableread을 잘못 사용하고 있습니다. 그러나 당신이 사용하는 방식으로 대부분의 시간을 보낼 수 있습니다.

+0

도움을 주셔서 감사합니다. My Track Polar Sensor 데이터 파서를 살펴 보았습니다. 덕분에 많은 도움이되었습니다. 내 코드에서 무엇이 잘못 되었는가를 이해하지 못합니까? 당신이 내게 설명해 주거나 내가 무엇을 바꿔야 하는지를 말해 준다면 좋을 것입니다. Thx – erni

+0

'read'는 읽은 바이트 수를 반환합니다. 반환 값을 무시합니다. 읽을 수있는 바이트 수가 아니라 반환 된 사용 가능한 바이트 수를 읽는 중입니다. –

+0

@his는이 극지방 센서 데이터 이외의 다른 버퍼를 읽는 표준 방법이 있습니까? 나는 심장 박동 모니터에서 폴라 메시지 파서를 시도하고 있지만 작동하지 않는다. – Hunt

0

(자바 원에서 라즈베리 파이 챌린지 기준) 측정의 단위 프로젝트 쇼, 이것은 디스플레이 또는 다른 시스템에 전송을위한 형태 보증 된 하트 비트 단위로 구문 분석 할 수있는 방법.