如何从Polar心率监测仪获得适当的值

时间:2012-04-12 18:30:40

标签: java android

我的Android应用程序通过蓝牙连接从Polar Heart Rate Monitor获取数据。 我的问题是我得到这样一个字符串:

获取数据的代码:

 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");

我该如何解决这个问题?

请帮助!!!

2 个答案:

答案 0 :(得分:4)

传感器不会为您提供可打印的字符串(例如NMEA),而是您需要解析的二进制数据。您可以查看MyTracks Polar Sensor data parser的灵感。

您使用availableread的方式不正确(但您使用的方式大部分时间都可以运气)。

答案 1 :(得分:0)

测量单位(基于JavaOne的Raspberry Pi挑战赛)"Heart of Glass"项目显示,如何将其解析为类型安全心跳单元,以便显示或传输到其他系统。< / p>