2012-04-12 19 views
6

私のAndroidアプリケーションは、Bluetooth接続を介してPolar Heart Rate Monitorからデータを取得しています。 私の問題は、私はそのような文字列を取得していることです: Polar心拍数モニタから適切な値を得るには

データを取得するための私のコード:

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

私のトラックPolar Sensorのデータパーサを調べてくれてありがとうございました。私は自分のコードで何が問題になっているのか理解できません。あなたがそれを私に説明するか、私がそこで何を変えるべきかを教えてもらえればいいです。 Thx – erni

+0

'read'は読み込まれたバイト数を返します。あなたは戻り値を無視しています。読み込み可能なバイト数ではなく、使用可能なバイト数だけを読み込みます。 –

+0

@hisこの極センサーデータ以外のバッファーを読み取る標準的な方法はありますか?私は心拍モニター上のポーラメッセージパーサーを試していますが、動作していません。 – Hunt

0

(のJavaOneでラズベリーパイチャレンジに基づいて)測定単位プロジェクトを示し、これは、ディスプレイまたは他のシステムに転送するため型保証ハートビートユニットに解析することができる方法。

関連する問題