6

私のAndroidアプリケーションは、Bluetooth接続を介して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");

この問題を解決するにはどうすればよいですか?

助けてください !!!

4

2 に答える 2

4

センサーは、印刷可能な文字列(NMEAなど)を提供しませんが、解析する必要のあるバイナリデータを提供します。MyTracksPolarSensorデータパーサーを調べてインスピレーションを得ることができます。

あなたは間違って使用availablereadています(しかし、あなたが使用する方法はほとんどの場合運があります)。

于 2012-04-12T18:55:45.833 に答える
0

測定単位(JavaOneのRaspberry Piチャレンジに基づく)「Heartof Glass」プロジェクトは、これをタイプセーフなハートビート単位に解析して表示したり、他のシステムに転送したりする方法を示しています。

于 2014-05-14T15:42:01.950 に答える